@takeshape/schema 8.49.0 → 8.51.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 (66) hide show
  1. package/es/migration/index.js +6 -1
  2. package/es/migration/to/v3.10.0.js +54 -15
  3. package/es/migration/to/v3.12.1.js +10 -0
  4. package/es/project-schema/index.js +1 -0
  5. package/es/project-schema/v3.12.1.js +1 -0
  6. package/es/schemas/index.js +4 -3
  7. package/es/schemas/index.ts +4 -2
  8. package/es/schemas/project-schema/v3.12.1.json +2281 -0
  9. package/es/schemas/project-schema.json +2 -1
  10. package/es/types/utils.js +2 -1
  11. package/es/validate.js +69 -4
  12. package/examples/latest/betzino.json +2 -2
  13. package/examples/latest/blog-schema.json +1 -1
  14. package/examples/latest/brewery-schema.json +1 -1
  15. package/examples/latest/complex-project-schema.json +1 -1
  16. package/examples/latest/fabric-ecommerce.json +1 -1
  17. package/examples/latest/frank-and-fred-schema.json +1 -1
  18. package/examples/latest/massive-schema.json +1 -1
  19. package/examples/latest/mill-components-schema.json +1 -1
  20. package/examples/latest/pet-oneof-array.json +1 -1
  21. package/examples/latest/post-schema.json +1 -1
  22. package/examples/latest/pruned-shopify-product-schema.json +1 -1
  23. package/examples/latest/real-world-schema.json +1 -1
  24. package/examples/latest/recursive-repeater-schema.json +1 -1
  25. package/examples/latest/recursive-schema.json +1 -1
  26. package/examples/latest/rick-and-morty-ast.json +1 -1
  27. package/examples/latest/rick-and-morty-graphql.json +1 -1
  28. package/examples/latest/rick-and-morty-rest.json +1 -1
  29. package/examples/latest/schema-with-repeater-draftjs.json +1 -1
  30. package/examples/latest/shape-books-v3_2_0.json +1 -1
  31. package/examples/latest/shape-books.json +1 -1
  32. package/examples/latest/shopify-lookbook.json +1 -1
  33. package/examples/latest/shopify-store-with-widget.json +1 -1
  34. package/examples/latest/stripe-starter-resolved.json +1 -1
  35. package/examples/latest/user-schema-no-required.json +1 -1
  36. package/examples/latest/user-schema-with-defaults.json +1 -1
  37. package/examples/source/betzino.json +1 -1
  38. package/lib/migration/index.d.ts.map +1 -1
  39. package/lib/migration/index.js +6 -0
  40. package/lib/migration/to/v3.10.0.d.ts.map +1 -1
  41. package/lib/migration/to/v3.10.0.js +55 -15
  42. package/lib/migration/to/v3.12.1.d.ts +4 -0
  43. package/lib/migration/to/v3.12.1.d.ts.map +1 -0
  44. package/lib/migration/to/v3.12.1.js +18 -0
  45. package/lib/project-schema/index.d.ts +3 -1
  46. package/lib/project-schema/index.d.ts.map +1 -1
  47. package/lib/project-schema/index.js +28 -15
  48. package/lib/project-schema/latest.d.ts +61 -2
  49. package/lib/project-schema/latest.d.ts.map +1 -1
  50. package/lib/project-schema/v3.12.1.d.ts +1274 -0
  51. package/lib/project-schema/v3.12.1.d.ts.map +1 -0
  52. package/lib/project-schema/v3.12.1.js +5 -0
  53. package/lib/schemas/index.d.ts +2 -2
  54. package/lib/schemas/index.d.ts.map +1 -1
  55. package/lib/schemas/index.js +19 -17
  56. package/lib/schemas/index.ts +4 -2
  57. package/lib/schemas/project-schema/v3.12.1.json +2281 -0
  58. package/lib/schemas/project-schema.json +2 -1
  59. package/lib/types/types.d.ts +2 -2
  60. package/lib/types/types.d.ts.map +1 -1
  61. package/lib/types/utils.d.ts +3 -2
  62. package/lib/types/utils.d.ts.map +1 -1
  63. package/lib/types/utils.js +4 -2
  64. package/lib/validate.d.ts.map +1 -1
  65. package/lib/validate.js +70 -4
  66. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- import { isLatestProjectSchema, isProjectSchemaV1, isProjectSchemaV3, isProjectSchemaV3_1, isProjectSchemaV3_2, isProjectSchemaV3_3, isProjectSchemaV3_4, isProjectSchemaV3_5, isProjectSchemaV3_5_1, isProjectSchemaV3_6, isProjectSchemaV3_7, isProjectSchemaV3_8, isProjectSchemaV3_9, isProjectSchemaV3_10, isProjectSchemaV3_11 } from '../types/utils';
1
+ import { isLatestProjectSchema, isProjectSchemaV1, isProjectSchemaV3, isProjectSchemaV3_1, isProjectSchemaV3_2, isProjectSchemaV3_3, isProjectSchemaV3_4, isProjectSchemaV3_5, isProjectSchemaV3_5_1, isProjectSchemaV3_6, isProjectSchemaV3_7, isProjectSchemaV3_8, isProjectSchemaV3_9, isProjectSchemaV3_10, isProjectSchemaV3_11, isProjectSchemaV3_12 } from '../types/utils';
2
2
  import migrateToV3 from './to/v3.0.0';
3
3
  import migrateToV3_1 from './to/v3.1.0';
4
4
  import migrateToV3_2 from './to/v3.2.0';
@@ -13,6 +13,7 @@ import migrateToV3_9_0 from './to/v3.9.0';
13
13
  import migrateToV3_10 from './to/v3.10.0';
14
14
  import migrateToV3_11_0 from './to/v3.11.0';
15
15
  import migrateToV3_12_0 from './to/v3.12.0';
16
+ import migrateToV3_12_1 from './to/v3.12.1';
16
17
  export * from './utils';
17
18
  export const listTypePrefix = 'PaginatedList';
18
19
  export async function migrateToLatestProjectSchema(context, projectSchema) {
@@ -76,6 +77,10 @@ export async function migrateToLatestProjectSchema(context, projectSchema) {
76
77
  projectSchema = migrateToV3_12_0(projectSchema);
77
78
  }
78
79
 
80
+ if (isProjectSchemaV3_12(projectSchema)) {
81
+ projectSchema = migrateToV3_12_1(projectSchema);
82
+ }
83
+
79
84
  return projectSchema;
80
85
  }
81
86
  export async function ensureLatest(context, schema) {
@@ -1,22 +1,60 @@
1
1
  import mapValues from 'lodash/mapValues';
2
+ import set from 'lodash/fp/set';
2
3
 
3
- function migrateQueryToV3_10(query, queryName) {
4
- const {
5
- args,
6
- shape
7
- } = query;
4
+ function $refToPath(ref) {
5
+ return ref.substr(2).split('/');
6
+ }
8
7
 
9
- if (typeof args === 'object' && ('oneOf' in args || 'allOf' in args || '$ref' in args || '@ref' in args)) {
10
- // As of 11/15/2021 no production schemas contained queries with these args
11
- throw new Error(`Query "${queryName}" contains an unsupported arg schema ${JSON.stringify(args)}. Please contact support`);
12
- }
8
+ function $refToShapeName(ref) {
9
+ return $refToPath(ref)[1];
10
+ }
13
11
 
14
- if (typeof shape === 'object' && !shape.items['@ref']) {
15
- // As of 11/15/2021 no production schemas contained queries with array return shapes that are not @refs
16
- throw new Error(`Query "${queryName}" contains an unsupported shape schema ${JSON.stringify(shape)}. Please contact support`);
12
+ function findServiceIdForNamespace(projectSchema, namespace) {
13
+ if (projectSchema.services) {
14
+ for (const [serviceId, service] of Object.entries(projectSchema.services)) {
15
+ if (service.namespace === namespace) {
16
+ return serviceId;
17
+ }
18
+ }
17
19
  }
18
20
 
19
- return query;
21
+ return 'local';
22
+ }
23
+
24
+ function updateRefSyntax(projectSchema, $ref) {
25
+ const shapeName = $refToShapeName($ref);
26
+ const parts = shapeName.split('_');
27
+ const serviceId = parts.length === 1 ? 'local' : findServiceIdForNamespace(projectSchema, parts[0]);
28
+ return `${serviceId}:${parts[parts.length - 1]}`;
29
+ }
30
+
31
+ function migrateQueryToV3_10(projectSchema) {
32
+ return (query, queryName) => {
33
+ const {
34
+ args,
35
+ shape
36
+ } = query;
37
+
38
+ if (typeof args === 'object' && ('oneOf' in args || 'allOf' in args || '$ref' in args || '@ref' in args)) {
39
+ // As of 11/15/2021 no production schemas contained queries with these args
40
+ throw new Error(`Query "${queryName}" contains an unsupported arg schema ${JSON.stringify(args)}. Please contact support`);
41
+ }
42
+
43
+ if (typeof shape === 'object') {
44
+ if (shape.items.$ref) {
45
+ return set('shape.items', {
46
+ '@ref': updateRefSyntax(projectSchema, shape.items.$ref)
47
+ }, query);
48
+ }
49
+
50
+ if (!shape.items['@ref']) {
51
+ // As of 11/15/2021 no production schemas contained queries with array return shapes that are not @refs
52
+ throw new Error(`Query "${queryName}" contains an unsupported shape schema ${JSON.stringify(shape)}. Please contact support`);
53
+ }
54
+ }
55
+
56
+ return query;
57
+ };
20
58
  }
21
59
 
22
60
  function migrateShapeToV3_10(shape) {
@@ -45,9 +83,10 @@ function migrateToV3_10(projectSchema) {
45
83
  schemaVersion,
46
84
  ...rest
47
85
  } = projectSchema;
86
+ const migrate = migrateQueryToV3_10(projectSchema);
48
87
  return { ...rest,
49
- queries: mapValues(queries, migrateQueryToV3_10),
50
- mutations: mapValues(mutations, migrateQueryToV3_10),
88
+ queries: mapValues(queries, migrate),
89
+ mutations: mapValues(mutations, migrate),
51
90
  shapes: mapValues(shapes, migrateShapeToV3_10),
52
91
  schemaVersion: '3.10.0'
53
92
  };
@@ -0,0 +1,10 @@
1
+ function migrateToV3_12_1(projectSchema) {
2
+ /**
3
+ * No migration needed all changes are backwards compatible.
4
+ */
5
+ return { ...projectSchema,
6
+ schemaVersion: '3.12.1'
7
+ };
8
+ }
9
+
10
+ export default migrateToV3_12_1;
@@ -1,6 +1,7 @@
1
1
  // This file is generated by "pnpm json2ts"
2
2
  export * from './latest';
3
3
  export * from './v4.0.0';
4
+ export * from './v3.12.1';
4
5
  export * from './v3.12.0';
5
6
  export * from './v3.11.0';
6
7
  export * from './v3.10.0';
@@ -0,0 +1 @@
1
+ export {};
@@ -1,8 +1,9 @@
1
1
  // This file is generated by "pnpm json2ts"
2
- export const CURRENT_SCHEMA_VERSION = '3.12.0';
2
+ export const CURRENT_SCHEMA_VERSION = '3.12.1';
3
3
  export { default as anyProjectSchema } from './project-schema.json';
4
- export { default as latestSchemaJson } from './project-schema/v3.12.0.json';
4
+ export { default as latestSchemaJson } from './project-schema/v3.12.1.json';
5
5
  import projectSchemaV4_0_0 from './project-schema/v4.0.0.json';
6
+ import projectSchemaV3_12_1 from './project-schema/v3.12.1.json';
6
7
  import projectSchemaV3_12_0 from './project-schema/v3.12.0.json';
7
8
  import projectSchemaV3_11_0 from './project-schema/v3.11.0.json';
8
9
  import projectSchemaV3_10_0 from './project-schema/v3.10.0.json';
@@ -30,4 +31,4 @@ import projectSchemaV3_0_0 from './project-schema/v3.0.0.json';
30
31
  import metaSchemaV3_0_0 from './project-schema/meta-schema-v3.0.0.json';
31
32
  import projectSchemaV1_0_0 from './project-schema/v1.0.0.json';
32
33
  import metaSchemaV1_0_0 from './project-schema/meta-schema-v1.0.0.json';
33
- export const allProjectSchemas = [projectSchemaV4_0_0, projectSchemaV3_12_0, projectSchemaV3_11_0, projectSchemaV3_10_0, projectSchemaV3_9_0, metaSchemaV3_9_0, projectSchemaV3_8_0, metaSchemaV3_8_0, projectSchemaV3_7_0, metaSchemaV3_7_0, projectSchemaV3_6_0, metaSchemaV3_6_0, projectSchemaV3_5_1, metaSchemaV3_5_1, projectSchemaV3_5_0, metaSchemaV3_5_0, projectSchemaV3_4_0, metaSchemaV3_4_0, projectSchemaV3_3_0, metaSchemaV3_3_0, projectSchemaV3_2_0, metaSchemaV3_2_0, projectSchemaV3_1_0, metaSchemaV3_1_0, projectSchemaV3_0_0, metaSchemaV3_0_0, projectSchemaV1_0_0, metaSchemaV1_0_0];
34
+ export const allProjectSchemas = [projectSchemaV4_0_0, projectSchemaV3_12_1, projectSchemaV3_12_0, projectSchemaV3_11_0, projectSchemaV3_10_0, projectSchemaV3_9_0, metaSchemaV3_9_0, projectSchemaV3_8_0, metaSchemaV3_8_0, projectSchemaV3_7_0, metaSchemaV3_7_0, projectSchemaV3_6_0, metaSchemaV3_6_0, projectSchemaV3_5_1, metaSchemaV3_5_1, projectSchemaV3_5_0, metaSchemaV3_5_0, projectSchemaV3_4_0, metaSchemaV3_4_0, projectSchemaV3_3_0, metaSchemaV3_3_0, projectSchemaV3_2_0, metaSchemaV3_2_0, projectSchemaV3_1_0, metaSchemaV3_1_0, projectSchemaV3_0_0, metaSchemaV3_0_0, projectSchemaV1_0_0, metaSchemaV1_0_0];
@@ -1,8 +1,9 @@
1
1
  // This file is generated by "pnpm json2ts"
2
- export const CURRENT_SCHEMA_VERSION = '3.12.0';
2
+ export const CURRENT_SCHEMA_VERSION = '3.12.1';
3
3
  export {default as anyProjectSchema} from './project-schema.json';
4
- export {default as latestSchemaJson} from './project-schema/v3.12.0.json';
4
+ export {default as latestSchemaJson} from './project-schema/v3.12.1.json';
5
5
  import projectSchemaV4_0_0 from './project-schema/v4.0.0.json';
6
+ import projectSchemaV3_12_1 from './project-schema/v3.12.1.json';
6
7
  import projectSchemaV3_12_0 from './project-schema/v3.12.0.json';
7
8
  import projectSchemaV3_11_0 from './project-schema/v3.11.0.json';
8
9
  import projectSchemaV3_10_0 from './project-schema/v3.10.0.json';
@@ -32,6 +33,7 @@ import projectSchemaV1_0_0 from './project-schema/v1.0.0.json';
32
33
  import metaSchemaV1_0_0 from './project-schema/meta-schema-v1.0.0.json';
33
34
  export const allProjectSchemas = [
34
35
  projectSchemaV4_0_0,
36
+ projectSchemaV3_12_1,
35
37
  projectSchemaV3_12_0,
36
38
  projectSchemaV3_11_0,
37
39
  projectSchemaV3_10_0,