@sanity/validation 3.0.0-dev-preview.20 → 3.0.0-dev-preview.21

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 (142) hide show
  1. package/lib/dts/src/index.d.ts +36 -13
  2. package/lib/index.js +1525 -1291
  3. package/lib/index.js.map +1 -1
  4. package/lib/index.mjs +1542 -0
  5. package/lib/index.mjs.map +1 -0
  6. package/package.json +24 -18
  7. package/src/index.ts +3 -1
  8. package/src/util/requestIdleCallback.ts +31 -0
  9. package/src/validateDocument.test.ts +0 -80
  10. package/src/validateDocument.ts +82 -43
  11. package/src/validators/slugValidator.ts +16 -2
  12. package/lib/dts/src/Rule.d.ts +0 -4
  13. package/lib/dts/src/Rule.d.ts.map +0 -1
  14. package/lib/dts/src/Rule.js +0 -336
  15. package/lib/dts/src/Rule.js.map +0 -1
  16. package/lib/dts/src/ValidationError.d.ts +0 -4
  17. package/lib/dts/src/ValidationError.d.ts.map +0 -1
  18. package/lib/dts/src/ValidationError.js +0 -18
  19. package/lib/dts/src/ValidationError.js.map +0 -1
  20. package/lib/dts/src/index.d.ts.map +0 -1
  21. package/lib/dts/src/index.js +0 -7
  22. package/lib/dts/src/index.js.map +0 -1
  23. package/lib/dts/src/inferFromSchema.d.ts +0 -4
  24. package/lib/dts/src/inferFromSchema.d.ts.map +0 -1
  25. package/lib/dts/src/inferFromSchema.js +0 -14
  26. package/lib/dts/src/inferFromSchema.js.map +0 -1
  27. package/lib/dts/src/inferFromSchemaType.d.ts +0 -5
  28. package/lib/dts/src/inferFromSchemaType.d.ts.map +0 -1
  29. package/lib/dts/src/inferFromSchemaType.js +0 -33
  30. package/lib/dts/src/inferFromSchemaType.js.map +0 -1
  31. package/lib/dts/src/util/convertToValidationMarker.d.ts +0 -6
  32. package/lib/dts/src/util/convertToValidationMarker.d.ts.map +0 -1
  33. package/lib/dts/src/util/convertToValidationMarker.js +0 -51
  34. package/lib/dts/src/util/convertToValidationMarker.js.map +0 -1
  35. package/lib/dts/src/util/deepEquals.d.ts +0 -6
  36. package/lib/dts/src/util/deepEquals.d.ts.map +0 -1
  37. package/lib/dts/src/util/deepEquals.js +0 -65
  38. package/lib/dts/src/util/deepEquals.js.map +0 -1
  39. package/lib/dts/src/util/escapeRegex.d.ts +0 -3
  40. package/lib/dts/src/util/escapeRegex.d.ts.map +0 -1
  41. package/lib/dts/src/util/escapeRegex.js +0 -6
  42. package/lib/dts/src/util/escapeRegex.js.map +0 -1
  43. package/lib/dts/src/util/normalizeValidationRules.d.ts +0 -6
  44. package/lib/dts/src/util/normalizeValidationRules.d.ts.map +0 -1
  45. package/lib/dts/src/util/normalizeValidationRules.js +0 -104
  46. package/lib/dts/src/util/normalizeValidationRules.js.map +0 -1
  47. package/lib/dts/src/util/normalizeValidationRules.test.d.ts +0 -2
  48. package/lib/dts/src/util/normalizeValidationRules.test.d.ts.map +0 -1
  49. package/lib/dts/src/util/normalizeValidationRules.test.js +0 -150
  50. package/lib/dts/src/util/normalizeValidationRules.test.js.map +0 -1
  51. package/lib/dts/src/util/pathToString.d.ts +0 -3
  52. package/lib/dts/src/util/pathToString.d.ts.map +0 -1
  53. package/lib/dts/src/util/pathToString.js +0 -18
  54. package/lib/dts/src/util/pathToString.js.map +0 -1
  55. package/lib/dts/src/util/typeString.d.ts +0 -2
  56. package/lib/dts/src/util/typeString.d.ts.map +0 -1
  57. package/lib/dts/src/util/typeString.js +0 -23
  58. package/lib/dts/src/util/typeString.js.map +0 -1
  59. package/lib/dts/src/util/typeString.test.d.ts +0 -2
  60. package/lib/dts/src/util/typeString.test.d.ts.map +0 -1
  61. package/lib/dts/src/util/typeString.test.js +0 -24
  62. package/lib/dts/src/util/typeString.test.js.map +0 -1
  63. package/lib/dts/src/validateDocument.d.ts +0 -25
  64. package/lib/dts/src/validateDocument.d.ts.map +0 -1
  65. package/lib/dts/src/validateDocument.js +0 -165
  66. package/lib/dts/src/validateDocument.js.map +0 -1
  67. package/lib/dts/src/validateDocument.test.d.ts +0 -2
  68. package/lib/dts/src/validateDocument.test.d.ts.map +0 -1
  69. package/lib/dts/src/validateDocument.test.js +0 -717
  70. package/lib/dts/src/validateDocument.test.js.map +0 -1
  71. package/lib/dts/src/validators/arrayValidator.d.ts +0 -4
  72. package/lib/dts/src/validators/arrayValidator.d.ts.map +0 -1
  73. package/lib/dts/src/validators/arrayValidator.js +0 -79
  74. package/lib/dts/src/validators/arrayValidator.js.map +0 -1
  75. package/lib/dts/src/validators/booleanValidator.d.ts +0 -4
  76. package/lib/dts/src/validators/booleanValidator.d.ts.map +0 -1
  77. package/lib/dts/src/validators/booleanValidator.js +0 -12
  78. package/lib/dts/src/validators/booleanValidator.js.map +0 -1
  79. package/lib/dts/src/validators/dateValidator.d.ts +0 -5
  80. package/lib/dts/src/validators/dateValidator.d.ts.map +0 -1
  81. package/lib/dts/src/validators/dateValidator.js +0 -83
  82. package/lib/dts/src/validators/dateValidator.js.map +0 -1
  83. package/lib/dts/src/validators/genericValidator.d.ts +0 -4
  84. package/lib/dts/src/validators/genericValidator.d.ts.map +0 -1
  85. package/lib/dts/src/validators/genericValidator.js +0 -93
  86. package/lib/dts/src/validators/genericValidator.js.map +0 -1
  87. package/lib/dts/src/validators/numberValidator.d.ts +0 -4
  88. package/lib/dts/src/validators/numberValidator.d.ts.map +0 -1
  89. package/lib/dts/src/validators/numberValidator.js +0 -47
  90. package/lib/dts/src/validators/numberValidator.js.map +0 -1
  91. package/lib/dts/src/validators/objectValidator.d.ts +0 -4
  92. package/lib/dts/src/validators/objectValidator.d.ts.map +0 -1
  93. package/lib/dts/src/validators/objectValidator.js +0 -48
  94. package/lib/dts/src/validators/objectValidator.js.map +0 -1
  95. package/lib/dts/src/validators/slugValidator.d.ts +0 -9
  96. package/lib/dts/src/validators/slugValidator.d.ts.map +0 -1
  97. package/lib/dts/src/validators/slugValidator.js +0 -83
  98. package/lib/dts/src/validators/slugValidator.js.map +0 -1
  99. package/lib/dts/src/validators/stringValidator.d.ts +0 -4
  100. package/lib/dts/src/validators/stringValidator.d.ts.map +0 -1
  101. package/lib/dts/src/validators/stringValidator.js +0 -94
  102. package/lib/dts/src/validators/stringValidator.js.map +0 -1
  103. package/lib/dts/test/array.test.d.ts +0 -2
  104. package/lib/dts/test/array.test.d.ts.map +0 -1
  105. package/lib/dts/test/array.test.js +0 -55
  106. package/lib/dts/test/array.test.js.map +0 -1
  107. package/lib/dts/test/children.test.d.ts +0 -2
  108. package/lib/dts/test/children.test.d.ts.map +0 -1
  109. package/lib/dts/test/children.test.js +0 -70
  110. package/lib/dts/test/children.test.js.map +0 -1
  111. package/lib/dts/test/createSchema.d.ts +0 -6
  112. package/lib/dts/test/createSchema.d.ts.map +0 -1
  113. package/lib/dts/test/createSchema.js +0 -19
  114. package/lib/dts/test/createSchema.js.map +0 -1
  115. package/lib/dts/test/generics.test.d.ts +0 -2
  116. package/lib/dts/test/generics.test.d.ts.map +0 -1
  117. package/lib/dts/test/generics.test.js +0 -60
  118. package/lib/dts/test/generics.test.js.map +0 -1
  119. package/lib/dts/test/infer.test.d.ts +0 -2
  120. package/lib/dts/test/infer.test.d.ts.map +0 -1
  121. package/lib/dts/test/infer.test.js +0 -244
  122. package/lib/dts/test/infer.test.js.map +0 -1
  123. package/lib/dts/test/mocks/mockSanityClient.d.ts +0 -6
  124. package/lib/dts/test/mocks/mockSanityClient.d.ts.map +0 -1
  125. package/lib/dts/test/mocks/mockSanityClient.js +0 -8
  126. package/lib/dts/test/mocks/mockSanityClient.js.map +0 -1
  127. package/lib/dts/test/nullExport.d.ts +0 -3
  128. package/lib/dts/test/nullExport.d.ts.map +0 -1
  129. package/lib/dts/test/nullExport.js +0 -4
  130. package/lib/dts/test/nullExport.js.map +0 -1
  131. package/lib/dts/test/numbers.test.d.ts +0 -2
  132. package/lib/dts/test/numbers.test.d.ts.map +0 -1
  133. package/lib/dts/test/numbers.test.js +0 -57
  134. package/lib/dts/test/numbers.test.js.map +0 -1
  135. package/lib/dts/test/strings.test.d.ts +0 -2
  136. package/lib/dts/test/strings.test.d.ts.map +0 -1
  137. package/lib/dts/test/strings.test.js +0 -100
  138. package/lib/dts/test/strings.test.js.map +0 -1
  139. package/lib/dts/tsconfig.lib.tsbuildinfo +0 -1
  140. package/lib/dts/tsconfig.tsbuildinfo +0 -1
  141. package/lib/index.cjs +0 -1341
  142. package/lib/index.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"inferFromSchema.d.ts","sourceRoot":"","sources":["../../../src/inferFromSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAA;AAIpC,iBAAS,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY/C;AAED,eAAe,eAAe,CAAA"}
@@ -1,14 +0,0 @@
1
- import inferFromSchemaType from './inferFromSchemaType';
2
- // Note: Mutates schema. Refactor when @sanity/schema supports middlewares
3
- function inferFromSchema(schema) {
4
- const typeNames = schema.getTypeNames();
5
- typeNames.forEach((typeName) => {
6
- const schemaType = schema.get(typeName);
7
- if (schemaType) {
8
- inferFromSchemaType(schemaType);
9
- }
10
- });
11
- return schema;
12
- }
13
- export default inferFromSchema;
14
- //# sourceMappingURL=inferFromSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inferFromSchema.js","sourceRoot":"","sources":["../../../src/inferFromSchema.ts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAEvD,0EAA0E;AAC1E,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAA;IAEvC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEvC,IAAI,UAAU,EAAE;YACd,mBAAmB,CAAC,UAAU,CAAC,CAAA;SAChC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,eAAe,eAAe,CAAA"}
@@ -1,5 +0,0 @@
1
- import { Schema, SchemaType } from '@sanity/types';
2
- declare function inferFromSchemaType(typeDef: SchemaType, _schema: Schema, _visited?: Set<SchemaType>): SchemaType;
3
- declare function inferFromSchemaType(typeDef: SchemaType): SchemaType;
4
- export default inferFromSchemaType;
5
- //# sourceMappingURL=inferFromSchemaType.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inferFromSchemaType.d.ts","sourceRoot":"","sources":["../../../src/inferFromSchemaType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,eAAe,CAAA;AAoChD,iBAAS,mBAAmB,CAC1B,OAAO,EAAE,UAAU,EAEnB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,GACzB,UAAU,CAAA;AAEb,iBAAS,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAAA;AAM7D,eAAe,mBAAmB,CAAA"}
@@ -1,33 +0,0 @@
1
- import normalizeValidationRules from './util/normalizeValidationRules';
2
- function traverse(typeDef, visited) {
3
- if (visited.has(typeDef)) {
4
- return;
5
- }
6
- visited.add(typeDef);
7
- typeDef.validation = normalizeValidationRules(typeDef);
8
- if ('fields' in typeDef) {
9
- for (const field of typeDef.fields) {
10
- traverse(field.type, visited);
11
- }
12
- }
13
- if ('of' in typeDef) {
14
- for (const candidate of typeDef.of) {
15
- traverse(candidate, visited);
16
- }
17
- }
18
- // eslint-disable-next-line no-warning-comments
19
- // @ts-expect-error TODO (eventually): `annotations` does not exist on the SchemaType yet
20
- if (typeDef.annotations) {
21
- // eslint-disable-next-line no-warning-comments
22
- // @ts-expect-error TODO (eventually): `annotations` does not exist on the SchemaType yet
23
- for (const annotation of typeDef.annotations) {
24
- traverse(annotation, visited);
25
- }
26
- }
27
- }
28
- function inferFromSchemaType(typeDef) {
29
- traverse(typeDef, new Set());
30
- return typeDef;
31
- }
32
- export default inferFromSchemaType;
33
- //# sourceMappingURL=inferFromSchemaType.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inferFromSchemaType.js","sourceRoot":"","sources":["../../../src/inferFromSchemaType.ts"],"names":[],"mappings":"AACA,OAAO,wBAAwB,MAAM,iCAAiC,CAAA;AAEtE,SAAS,QAAQ,CAAC,OAAmB,EAAE,OAAwB;IAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QACxB,OAAM;KACP;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAEpB,OAAO,CAAC,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IAEtD,IAAI,QAAQ,IAAI,OAAO,EAAE;QACvB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;YAClC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;SAC9B;KACF;IAED,IAAI,IAAI,IAAI,OAAO,EAAE;QACnB,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE;YAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;SAC7B;KACF;IAED,+CAA+C;IAC/C,yFAAyF;IACzF,IAAI,OAAO,CAAC,WAAW,EAAE;QACvB,+CAA+C;QAC/C,yFAAyF;QACzF,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE;YAC5C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;SAC9B;KACF;AACH,CAAC;AAWD,SAAS,mBAAmB,CAAC,OAAmB;IAC9C,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IAC5B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,eAAe,mBAAmB,CAAA"}
@@ -1,6 +0,0 @@
1
- import { ValidationMarker, ValidationError, ValidationContext } from '@sanity/types';
2
- declare type ValidationErrorLike = Pick<ValidationError, 'message'> & Partial<ValidationError>;
3
- export declare function isNonNullable<T>(t: T): t is NonNullable<T>;
4
- export declare function convertToValidationMarker(validatorResult: true | true[] | string | string[] | ValidationError | ValidationError[] | ValidationErrorLike | ValidationErrorLike[], level: 'error' | 'warning' | 'info' | undefined, context: ValidationContext): ValidationMarker[];
5
- export {};
6
- //# sourceMappingURL=convertToValidationMarker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertToValidationMarker.d.ts","sourceRoot":"","sources":["../../../../src/util/convertToValidationMarker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAA;AAIlF,aAAK,mBAAmB,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAEtF,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAE1D;AAED,wBAAgB,yBAAyB,CACvC,eAAe,EACX,IAAI,GACJ,IAAI,EAAE,GACN,MAAM,GACN,MAAM,EAAE,GACR,eAAe,GACf,eAAe,EAAE,GACjB,mBAAmB,GACnB,mBAAmB,EAAE,EACzB,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EAC/C,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,EAAE,CA6DpB"}
@@ -1,51 +0,0 @@
1
- import ValidationErrorClass from '../ValidationError';
2
- import pathToString from '../util/pathToString';
3
- export function isNonNullable(t) {
4
- return t !== null || t !== undefined;
5
- }
6
- export function convertToValidationMarker(validatorResult, level, context) {
7
- if (!context) {
8
- throw new Error('missing context');
9
- }
10
- if (validatorResult === true)
11
- return [];
12
- if (Array.isArray(validatorResult)) {
13
- return validatorResult
14
- .flatMap((child) => convertToValidationMarker(child, level, context))
15
- .filter(isNonNullable);
16
- }
17
- if (typeof validatorResult === 'string') {
18
- return convertToValidationMarker(new ValidationErrorClass(validatorResult), level, context);
19
- }
20
- if (!(validatorResult instanceof ValidationErrorClass)) {
21
- // in order to accept the `ValidationErrorLike`, it at least needs to have
22
- // a `message` in the object
23
- if (typeof validatorResult?.message !== 'string') {
24
- throw new Error(`${pathToString(context.path)}: Validator must return 'true' if valid or an error message as a string on errors`);
25
- }
26
- // this is the occurs when an object is returned that wasn't created with the
27
- // `ValidationErrorClass`. in this case, we want to convert it to a class
28
- return convertToValidationMarker(new ValidationErrorClass(validatorResult.message, validatorResult), level, context);
29
- }
30
- const results = [];
31
- // the validator result does not include any item-level relative paths,
32
- // then just return the top-level path with the validation result
33
- if (!validatorResult.paths?.length) {
34
- return [
35
- {
36
- level: level || 'error',
37
- item: validatorResult,
38
- path: context.path || [],
39
- },
40
- ];
41
- }
42
- // if the validator result did include item-level relative paths, then for
43
- // each item-level relative path, create a validation marker that concatenates
44
- // the relative path with the path from the validation context
45
- return results.concat(validatorResult.paths.map((path) => ({
46
- path: (context.path || []).concat(path),
47
- level: level || 'error',
48
- item: validatorResult,
49
- })));
50
- }
51
- //# sourceMappingURL=convertToValidationMarker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertToValidationMarker.js","sourceRoot":"","sources":["../../../../src/util/convertToValidationMarker.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,MAAM,oBAAoB,CAAA;AACrD,OAAO,YAAY,MAAM,sBAAsB,CAAA;AAI/C,MAAM,UAAU,aAAa,CAAI,CAAI;IACnC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,eAQyB,EACzB,KAA+C,EAC/C,OAA0B;IAE1B,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;KACnC;IAED,IAAI,eAAe,KAAK,IAAI;QAAE,OAAO,EAAE,CAAA;IAEvC,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;QAClC,OAAO,eAAe;aACnB,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;aACpE,MAAM,CAAC,aAAa,CAAC,CAAA;KACzB;IAED,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;QACvC,OAAO,yBAAyB,CAAC,IAAI,oBAAoB,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;KAC5F;IAED,IAAI,CAAC,CAAC,eAAe,YAAY,oBAAoB,CAAC,EAAE;QACtD,0EAA0E;QAC1E,4BAA4B;QAC5B,IAAI,OAAO,eAAe,EAAE,OAAO,KAAK,QAAQ,EAAE;YAChD,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,CACb,OAAO,CAAC,IAAI,CACb,mFAAmF,CACrF,CAAA;SACF;QAED,6EAA6E;QAC7E,yEAAyE;QACzE,OAAO,yBAAyB,CAC9B,IAAI,oBAAoB,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,EAClE,KAAK,EACL,OAAO,CACR,CAAA;KACF;IAED,MAAM,OAAO,GAAuB,EAAE,CAAA;IAEtC,uEAAuE;IACvE,iEAAiE;IACjE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE;QAClC,OAAO;YACL;gBACE,KAAK,EAAE,KAAK,IAAI,OAAO;gBACvB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;aACzB;SACF,CAAA;KACF;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,8DAA8D;IAC9D,OAAO,OAAO,CAAC,MAAM,CACnB,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACvC,KAAK,EAAE,KAAK,IAAI,OAAO;QACvB,IAAI,EAAE,eAAe;KACtB,CAAC,CAAC,CACJ,CAAA;AACH,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Modified version of fast-deep-equal (https://github.com/epoberezkin/fast-deep-equal)
3
- * MIT-licensed, copyright (c) 2017 Evgeny Poberezkin
4
- **/
5
- export default function deepEquals(a: unknown, b: unknown): boolean;
6
- //# sourceMappingURL=deepEquals.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deepEquals.d.ts","sourceRoot":"","sources":["../../../../src/util/deepEquals.ts"],"names":[],"mappings":"AAAA;;;IAGI;AAOJ,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAkElE"}
@@ -1,65 +0,0 @@
1
- /**
2
- * Modified version of fast-deep-equal (https://github.com/epoberezkin/fast-deep-equal)
3
- * MIT-licensed, copyright (c) 2017 Evgeny Poberezkin
4
- **/
5
- // NOTE: when converting to typescript, some of the checks were inlined (vs
6
- // having them in a variable) because the type predicate type narrowing only
7
- // works when type predicate is called inline in the condition that starts the
8
- // control flow branch.
9
- // see here: https://www.typescriptlang.org/docs/handbook/2/narrowing.html
10
- export default function deepEquals(a, b) {
11
- if (a === b) {
12
- return true;
13
- }
14
- if (Array.isArray(a) && Array.isArray(b)) {
15
- if (a.length != b.length)
16
- return false;
17
- for (let i = 0; i < a.length; i++) {
18
- if (!deepEquals(a[i], b[i])) {
19
- return false;
20
- }
21
- }
22
- return true;
23
- }
24
- if (Array.isArray(a) != Array.isArray(b)) {
25
- return false;
26
- }
27
- if (a && b && typeof a === 'object' && typeof b === 'object') {
28
- const keys = Object.keys(a);
29
- if (keys.length !== Object.keys(b).length) {
30
- return false;
31
- }
32
- if (a instanceof Date && b instanceof Date) {
33
- return a.getTime() === b.getTime();
34
- }
35
- if (a instanceof Date != b instanceof Date) {
36
- return false;
37
- }
38
- if (a instanceof RegExp && b instanceof RegExp) {
39
- return a.toString() == b.toString();
40
- }
41
- if (a instanceof RegExp != b instanceof RegExp) {
42
- return false;
43
- }
44
- for (let i = 0; i < keys.length; i++) {
45
- if (keys[i] === '_key') {
46
- continue;
47
- }
48
- if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {
49
- return false;
50
- }
51
- }
52
- for (let i = 0; i < keys.length; i++) {
53
- const key = keys[i];
54
- if (key === '_key') {
55
- continue;
56
- }
57
- if (!deepEquals(a[key], b[key])) {
58
- return false;
59
- }
60
- }
61
- return true;
62
- }
63
- return false;
64
- }
65
- //# sourceMappingURL=deepEquals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deepEquals.js","sourceRoot":"","sources":["../../../../src/util/deepEquals.ts"],"names":[],"mappings":"AAAA;;;IAGI;AAEJ,2EAA2E;AAC3E,4EAA4E;AAC5E,8EAA8E;AAC9E,uBAAuB;AACvB,0EAA0E;AAC1E,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAU,EAAE,CAAU;IACvD,IAAI,CAAC,KAAK,CAAC,EAAE;QACX,OAAO,IAAI,CAAA;KACZ;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACxC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC3B,OAAO,KAAK,CAAA;aACb;SACF;QACD,OAAO,IAAI,CAAA;KACZ;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACxC,OAAO,KAAK,CAAA;KACb;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;YACzC,OAAO,KAAK,CAAA;SACb;QAED,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;YAC1C,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAA;SACnC;QAED,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;YAC1C,OAAO,KAAK,CAAA;SACb;QAED,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,YAAY,MAAM,EAAE;YAC9C,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;SACpC;QAED,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,YAAY,MAAM,EAAE;YAC9C,OAAO,KAAK,CAAA;SACb;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;gBACtB,SAAQ;aACT;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBACrD,OAAO,KAAK,CAAA;aACb;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAmB,CAAA;YACrC,IAAI,GAAG,KAAK,MAAM,EAAE;gBAClB,SAAQ;aACT;YAED,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC/B,OAAO,KAAK,CAAA;aACb;SACF;QAED,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: (string: string) => string;
2
- export default _default;
3
- //# sourceMappingURL=escapeRegex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"escapeRegex.d.ts","sourceRoot":"","sources":["../../../../src/util/escapeRegex.ts"],"names":[],"mappings":"iCACwB,MAAM,KAAG,MAAM;AAAvC,wBAGC"}
@@ -1,6 +0,0 @@
1
- /* eslint-disable no-useless-escape */
2
- export default (string) => {
3
- // Escape ^$.*+-?=!:|\/()[]{},
4
- return string.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g, '\\$&');
5
- };
6
- //# sourceMappingURL=escapeRegex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"escapeRegex.js","sourceRoot":"","sources":["../../../../src/util/escapeRegex.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,eAAe,CAAC,MAAc,EAAU,EAAE;IACxC,8BAA8B;IAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,6CAA6C,EAAE,MAAM,CAAC,CAAA;AAC9E,CAAC,CAAA"}
@@ -1,6 +0,0 @@
1
- import { SchemaType, Rule } from '@sanity/types';
2
- /**
3
- * Takes in `SchemaValidationValue` and returns an array of `Rule` instances.
4
- */
5
- export default function normalizeValidationRules(typeDef: SchemaType | undefined): Rule[];
6
- //# sourceMappingURL=normalizeValidationRules.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeValidationRules.d.ts","sourceRoot":"","sources":["../../../../src/util/normalizeValidationRules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,IAAI,EAAqB,MAAM,eAAe,CAAA;AA6ElE;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,EAAE,CAqCxF"}
@@ -1,104 +0,0 @@
1
- import RuleClass from '../Rule';
2
- import { slugValidator } from '../validators/slugValidator';
3
- const ruleConstraintTypes = {
4
- array: true,
5
- boolean: true,
6
- date: true,
7
- number: true,
8
- object: true,
9
- string: true,
10
- };
11
- const isRuleConstraint = (typeString) => typeString in ruleConstraintTypes;
12
- function getTypeChain(type, visited) {
13
- if (!type)
14
- return [];
15
- if (visited.has(type))
16
- return [];
17
- visited.add(type);
18
- const next = type.type ? getTypeChain(type.type, visited) : [];
19
- return [...next, type];
20
- }
21
- function baseRuleReducer(inputRule, type) {
22
- let baseRule = inputRule;
23
- if (isRuleConstraint(type.jsonType)) {
24
- baseRule = baseRule.type(type.jsonType);
25
- }
26
- const typeOptionsList =
27
- // if type.options is truthy
28
- type?.options &&
29
- // and type.options is an object (non-null from the previous)
30
- typeof type.options === 'object' &&
31
- // and if `list` is in options
32
- 'list' in type.options &&
33
- // then finally access the list
34
- type.options.list;
35
- if (Array.isArray(typeOptionsList)) {
36
- baseRule = baseRule.valid(typeOptionsList.map((option) => extractValueFromListOption(option, type)));
37
- }
38
- if (type.name === 'datetime')
39
- return baseRule.type('Date');
40
- if (type.name === 'date')
41
- return baseRule.type('Date');
42
- if (type.name === 'url')
43
- return baseRule.uri();
44
- if (type.name === 'slug')
45
- return baseRule.custom(slugValidator);
46
- if (type.name === 'reference')
47
- return baseRule.reference();
48
- if (type.name === 'email')
49
- return baseRule.email();
50
- return baseRule;
51
- }
52
- function hasValueField(typeDef) {
53
- if (!typeDef)
54
- return false;
55
- if (!('fields' in typeDef) && typeDef.type)
56
- return hasValueField(typeDef.type);
57
- if (!('fields' in typeDef))
58
- return false;
59
- if (!Array.isArray(typeDef.fields))
60
- return false;
61
- return typeDef.fields.some((field) => field.name === 'value');
62
- }
63
- function extractValueFromListOption(option, typeDef) {
64
- // If you define a `list` option with object items, where the item has a `value` field,
65
- // we don't want to treat that as the value but rather the surrounding object
66
- // This differs from the case where you have a title/value pair setup for a string/number, for instance
67
- if (typeDef.jsonType === 'object' && hasValueField(typeDef))
68
- return option;
69
- return option.value === undefined
70
- ? option
71
- : option.value;
72
- }
73
- /**
74
- * Takes in `SchemaValidationValue` and returns an array of `Rule` instances.
75
- */
76
- export default function normalizeValidationRules(typeDef) {
77
- if (!typeDef) {
78
- return [];
79
- }
80
- const validation = typeDef.validation;
81
- if (Array.isArray(validation)) {
82
- return validation.flatMap((i) => normalizeValidationRules({
83
- ...typeDef,
84
- validation: i,
85
- }));
86
- }
87
- if (validation instanceof RuleClass) {
88
- return [validation];
89
- }
90
- const baseRule =
91
- // using an object + Object.values to de-dupe the type chain by type name
92
- Object.values(getTypeChain(typeDef, new Set()).reduce((acc, type) => {
93
- acc[type.name] = type;
94
- return acc;
95
- }, {})).reduce(baseRuleReducer, new RuleClass(typeDef));
96
- if (!validation) {
97
- return [baseRule];
98
- }
99
- return normalizeValidationRules({
100
- ...typeDef,
101
- validation: validation(baseRule),
102
- });
103
- }
104
- //# sourceMappingURL=normalizeValidationRules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeValidationRules.js","sourceRoot":"","sources":["../../../../src/util/normalizeValidationRules.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=normalizeValidationRules.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeValidationRules.test.d.ts","sourceRoot":"","sources":["../../../../src/util/normalizeValidationRules.test.ts"],"names":[],"mappings":""}
@@ -1,150 +0,0 @@
1
- import RuleClass from '../Rule';
2
- import normalizeValidationRules from './normalizeValidationRules';
3
- describe('normalizeValidationRules', () => {
4
- // see `infer.test.ts` for more related tests.
5
- // note the Schema.compile runs this function indirectly via `inferFromSchema`
6
- it('utilizes schema types to infer base rules', () => {
7
- const coolNumberType = {
8
- jsonType: 'number',
9
- name: 'coolNumber',
10
- };
11
- const rules = normalizeValidationRules(coolNumberType);
12
- expect(rules).toHaveLength(1);
13
- const [rule] = rules;
14
- expect(rule).toBeInstanceOf(RuleClass);
15
- expect(rule._rules).toMatchObject([
16
- {
17
- constraint: 'Number',
18
- flag: 'type',
19
- },
20
- ]);
21
- });
22
- it('follows the type chain to determine the base rule', () => {
23
- const sickDatetime = {
24
- type: {
25
- type: {
26
- jsonType: 'string',
27
- },
28
- name: 'datetime',
29
- },
30
- name: 'sickDatetime',
31
- };
32
- const rules = normalizeValidationRules(sickDatetime);
33
- expect(rules).toHaveLength(1);
34
- const [rule] = rules;
35
- // type chain is applied from inner to outer so the resulting type should be
36
- // date instead of string
37
- expect(rule._rules).toMatchObject([
38
- {
39
- constraint: 'Date',
40
- flag: 'type',
41
- },
42
- ]);
43
- });
44
- it('converts a validation function to a rule instance', () => {
45
- const coolStringType = {
46
- jsonType: 'string',
47
- name: 'coolString',
48
- validation: (rule) => rule.uppercase(),
49
- };
50
- const rules = normalizeValidationRules(coolStringType);
51
- expect(rules).toHaveLength(1);
52
- const [rule] = rules;
53
- expect(rule).toBeInstanceOf(RuleClass);
54
- expect(rule._rules).toMatchObject([
55
- {
56
- constraint: 'String',
57
- flag: 'type',
58
- },
59
- {
60
- constraint: 'uppercase',
61
- flag: 'stringCasing',
62
- },
63
- ]);
64
- });
65
- it('converts falsy values to an empty array', () => {
66
- expect(normalizeValidationRules(undefined)).toEqual([]);
67
- });
68
- it('converts schema list options with titles to `rule.valid` constraints', () => {
69
- const stringTypeWithOptions = {
70
- jsonType: 'string',
71
- name: 'stringTypeWithOptions',
72
- options: {
73
- list: [
74
- { title: 'Blue', value: 'blue' },
75
- { title: 'Red', value: 'red' },
76
- ],
77
- },
78
- };
79
- const rules = normalizeValidationRules(stringTypeWithOptions);
80
- expect(rules).toHaveLength(1);
81
- const [rule] = rules;
82
- expect(rule).toBeInstanceOf(RuleClass);
83
- expect(rule._rules).toMatchObject([
84
- {
85
- constraint: 'String',
86
- flag: 'type',
87
- },
88
- {
89
- constraint: ['blue', 'red'],
90
- flag: 'valid',
91
- },
92
- ]);
93
- });
94
- it('converts schema list options with strings only to `rule.valid` constraints', () => {
95
- const stringTypeWithOptions = {
96
- jsonType: 'string',
97
- name: 'stringTypeWithOptions',
98
- options: {
99
- list: ['blue', 'red'],
100
- },
101
- };
102
- const rules = normalizeValidationRules(stringTypeWithOptions);
103
- expect(rules).toHaveLength(1);
104
- const [rule] = rules;
105
- expect(rule).toBeInstanceOf(RuleClass);
106
- expect(rule._rules).toMatchObject([
107
- {
108
- constraint: 'String',
109
- flag: 'type',
110
- },
111
- {
112
- constraint: ['blue', 'red'],
113
- flag: 'valid',
114
- },
115
- ]);
116
- });
117
- it('converts arrays of validation', () => {
118
- const coolNumberType = {
119
- jsonType: 'number',
120
- name: 'coolNumber',
121
- validation: [(rule) => rule.greaterThan(3), RuleClass.number().lessThan(5)],
122
- };
123
- const rules = normalizeValidationRules(coolNumberType);
124
- expect(rules).toHaveLength(2);
125
- const [first, second] = rules;
126
- expect(first).toBeInstanceOf(RuleClass);
127
- expect(first._rules).toMatchObject([
128
- {
129
- constraint: 'Number',
130
- flag: 'type',
131
- },
132
- {
133
- constraint: 3,
134
- flag: 'greaterThan',
135
- },
136
- ]);
137
- expect(second).toBeInstanceOf(RuleClass);
138
- expect(second._rules).toMatchObject([
139
- {
140
- constraint: 'Number',
141
- flag: 'type',
142
- },
143
- {
144
- constraint: 5,
145
- flag: 'lessThan',
146
- },
147
- ]);
148
- });
149
- });
150
- //# sourceMappingURL=normalizeValidationRules.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeValidationRules.test.js","sourceRoot":"","sources":["../../../../src/util/normalizeValidationRules.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Path } from '@sanity/types';
2
- export default function pathToString(path?: Path | undefined): string;
3
- //# sourceMappingURL=pathToString.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pathToString.d.ts","sourceRoot":"","sources":["../../../../src/util/pathToString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAgB,MAAM,eAAe,CAAA;AAEjD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,IAAI,GAAE,IAAI,GAAG,SAAc,GAAG,MAAM,CAkBxE"}
@@ -1,18 +0,0 @@
1
- import { isKeyedObject } from '@sanity/types';
2
- export default function pathToString(path = []) {
3
- return path.reduce((target, segment, i) => {
4
- const segmentType = typeof segment;
5
- if (segmentType === 'number') {
6
- return `${target}[${segment}]`;
7
- }
8
- if (segmentType === 'string') {
9
- const separator = i === 0 ? '' : '.';
10
- return `${target}${separator}${segment}`;
11
- }
12
- if (isKeyedObject(segment)) {
13
- return `${target}[_key=="${segment._key}"]`;
14
- }
15
- throw new Error(`Unsupported path segment "${segment}"`);
16
- }, '');
17
- }
18
- //# sourceMappingURL=pathToString.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pathToString.js","sourceRoot":"","sources":["../../../../src/util/pathToString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,aAAa,EAAC,MAAM,eAAe,CAAA;AAEjD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,OAAyB,EAAE;IAC9D,OAAO,IAAI,CAAC,MAAM,CAAS,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QAChD,MAAM,WAAW,GAAG,OAAO,OAAO,CAAA;QAClC,IAAI,WAAW,KAAK,QAAQ,EAAE;YAC5B,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,CAAA;SAC/B;QAED,IAAI,WAAW,KAAK,QAAQ,EAAE;YAC5B,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;YACpC,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,EAAE,CAAA;SACzC;QAED,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;YAC1B,OAAO,GAAG,MAAM,WAAW,OAAO,CAAC,IAAI,IAAI,CAAA;SAC5C;QAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,GAAG,CAAC,CAAA;IAC1D,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC"}
@@ -1,2 +0,0 @@
1
- export default function typeString(obj: unknown): string;
2
- //# sourceMappingURL=typeString.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typeString.d.ts","sourceRoot":"","sources":["../../../../src/util/typeString.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CASvD"}
@@ -1,23 +0,0 @@
1
- // this file was adapted from a previous dependency `type-of-is`
2
- // https://github.com/stephenhandley/type-of-is/blob/7138a7e79f5af7c286bf8123f60843a91aaebf38/index.js
3
- const _toString = {}.toString;
4
- const builtIns = [Object, Function, Array, String, Boolean, Number, Date, RegExp, Error];
5
- function isBuiltIn(_constructor) {
6
- for (let i = 0; i < builtIns.length; i++) {
7
- if (builtIns[i] === _constructor)
8
- return true;
9
- }
10
- return false;
11
- }
12
- export default function typeString(obj) {
13
- // [object Blah] -> Blah
14
- const stringType = _toString.call(obj).slice(8, -1);
15
- if (obj === null || obj === undefined)
16
- return stringType.toLowerCase();
17
- // eslint-disable-next-line @typescript-eslint/ban-types
18
- const constructorType = obj.constructor;
19
- if (constructorType && !isBuiltIn(constructorType))
20
- return constructorType.name;
21
- return stringType;
22
- }
23
- //# sourceMappingURL=typeString.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typeString.js","sourceRoot":"","sources":["../../../../src/util/typeString.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,sGAAsG;AACtG,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAA;AAE7B,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;AAExF,SAAS,SAAS,CAAC,YAAqB;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,YAAY;YAAE,OAAO,IAAI,CAAA;KAC9C;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,GAAY;IAC7C,wBAAwB;IACxB,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACnD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC,WAAW,EAAE,CAAA;IAEtE,wDAAwD;IACxD,MAAM,eAAe,GAAI,GAAc,CAAC,WAAW,CAAA;IACnD,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;QAAE,OAAO,eAAe,CAAC,IAAI,CAAA;IAC/E,OAAO,UAAU,CAAA;AACnB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=typeString.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typeString.test.d.ts","sourceRoot":"","sources":["../../../../src/util/typeString.test.ts"],"names":[],"mappings":""}