@takeshape/schema 11.144.1 → 11.154.1
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/examples/latest/all-fields-shapes-inline.json +1 -1
- package/examples/latest/all-fields-shapes.json +1 -1
- package/examples/latest/betzino.json +1 -1
- package/examples/latest/blog-schema.json +1 -1
- package/examples/latest/brewery-schema.json +1 -1
- package/examples/latest/chat-agent-schema.json +1 -1
- package/examples/latest/clear-cache-schema.json +1 -1
- package/examples/latest/complex-project-schema.json +1 -1
- package/examples/latest/complex-schema.json +1 -1
- package/examples/latest/edit-schema.json +1 -1
- package/examples/latest/frank-and-fred-schema.json +1 -1
- package/examples/latest/generate-agent-schema.json +1 -1
- package/examples/latest/klirr-schema.json +1 -1
- package/examples/latest/layers/rick-and-morty-layer.json +1 -1
- package/examples/latest/layers/shopify-layer-2023-01.json +1 -1
- package/examples/latest/layers/shopify-storefront-2023-04.json +1 -1
- package/examples/latest/layers/wordpress-2024-01.json +1 -1
- package/examples/latest/massive-schema.json +1 -1
- package/examples/latest/mill-components-schema.json +1 -1
- package/examples/latest/nested-shape-arrays.json +1 -1
- package/examples/latest/one-earth.json +1 -1
- package/examples/latest/pet-oneof-array.json +1 -1
- package/examples/latest/post-schema.json +1 -1
- package/examples/latest/pruned-shopify-product-schema.json +1 -1
- package/examples/latest/rag-example.json +1 -1
- package/examples/latest/real-world-schema.json +1 -1
- package/examples/latest/recursive-repeater-schema.json +1 -1
- package/examples/latest/recursive-schema.json +1 -1
- package/examples/latest/rick-and-morty-ast.json +1 -1
- package/examples/latest/rick-and-morty-graphql.json +1 -1
- package/examples/latest/rick-and-morty-rest.json +1 -1
- package/examples/latest/rick-and-morty-user-schema.json +1 -1
- package/examples/latest/rick-and-morty-with-indexing.json +1 -1
- package/examples/latest/schema-where-filter.json +1 -1
- package/examples/latest/schema-with-repeater-draftjs.json +1 -1
- package/examples/latest/schema-with-rick-and-morty.json +1 -1
- package/examples/latest/shape-books-v3_2_0.json +1 -1
- package/examples/latest/shape-books.json +1 -1
- package/examples/latest/shape-editor-schema-edited.json +1 -1
- package/examples/latest/shape-editor-schema-initial.json +1 -1
- package/examples/latest/shapedb-crud-every-prop-type.json +1 -1
- package/examples/latest/shopify-lookbook.json +1 -1
- package/examples/latest/shopify-product-2022-07.json +1 -1
- package/examples/latest/shopify-product-2023-04.json +1 -1
- package/examples/latest/shopify-store-with-widget.json +1 -1
- package/examples/latest/stripe-product-runtime-schema.json +1 -1
- package/examples/latest/stripe-starter-resolved.json +1 -1
- package/examples/latest/user-schema-no-required.json +1 -1
- package/examples/latest/user-schema-with-defaults.json +1 -1
- package/examples/latest/valvoline-ai-demo.json +1461 -1421
- package/examples/latest/vector-search-schema.json +1 -1
- package/package.json +10 -9
- package/dist/agents.d.ts +0 -62
- package/dist/agents.js +0 -338
- package/dist/api-version.d.ts +0 -5
- package/dist/api-version.js +0 -17
- package/dist/auth-schemas.d.ts +0 -128
- package/dist/auth-schemas.js +0 -7
- package/dist/auth-utils.d.ts +0 -5
- package/dist/auth-utils.js +0 -6
- package/dist/builtin-schema.d.ts +0 -18
- package/dist/builtin-schema.js +0 -683
- package/dist/constants.d.ts +0 -1
- package/dist/constants.js +0 -1
- package/dist/content-schema-transform.d.ts +0 -35
- package/dist/content-schema-transform.js +0 -162
- package/dist/create-input-schema.d.ts +0 -9
- package/dist/create-input-schema.js +0 -68
- package/dist/enum.d.ts +0 -2
- package/dist/enum.js +0 -9
- package/dist/flatten-templates.d.ts +0 -2
- package/dist/flatten-templates.js +0 -20
- package/dist/get-is-leaf.d.ts +0 -3
- package/dist/get-is-leaf.js +0 -56
- package/dist/index.d.ts +0 -62
- package/dist/index.js +0 -59
- package/dist/interfaces.d.ts +0 -14
- package/dist/interfaces.js +0 -86
- package/dist/layers/layers.d.ts +0 -26
- package/dist/layers/layers.js +0 -301
- package/dist/layers/refs.d.ts +0 -102
- package/dist/layers/refs.js +0 -220
- package/dist/layers/type-utils.d.ts +0 -59
- package/dist/layers/type-utils.js +0 -118
- package/dist/layers/visitor.d.ts +0 -5
- package/dist/layers/visitor.js +0 -38
- package/dist/migration/index.d.ts +0 -73
- package/dist/migration/index.js +0 -103
- package/dist/migration/to/v3.0.0.d.ts +0 -4
- package/dist/migration/to/v3.0.0.js +0 -212
- package/dist/migration/to/v3.1.0.d.ts +0 -4
- package/dist/migration/to/v3.1.0.js +0 -194
- package/dist/migration/to/v3.10.0.d.ts +0 -4
- package/dist/migration/to/v3.10.0.js +0 -67
- package/dist/migration/to/v3.11.0.d.ts +0 -4
- package/dist/migration/to/v3.11.0.js +0 -85
- package/dist/migration/to/v3.12.3.d.ts +0 -4
- package/dist/migration/to/v3.12.3.js +0 -87
- package/dist/migration/to/v3.13.0.d.ts +0 -4
- package/dist/migration/to/v3.13.0.js +0 -17
- package/dist/migration/to/v3.17.0.d.ts +0 -4
- package/dist/migration/to/v3.17.0.js +0 -22
- package/dist/migration/to/v3.18.0.d.ts +0 -4
- package/dist/migration/to/v3.18.0.js +0 -64
- package/dist/migration/to/v3.18.1.d.ts +0 -4
- package/dist/migration/to/v3.18.1.js +0 -12
- package/dist/migration/to/v3.18.2.d.ts +0 -4
- package/dist/migration/to/v3.18.2.js +0 -19
- package/dist/migration/to/v3.20.0.d.ts +0 -4
- package/dist/migration/to/v3.20.0.js +0 -24
- package/dist/migration/to/v3.22.0.d.ts +0 -4
- package/dist/migration/to/v3.22.0.js +0 -25
- package/dist/migration/to/v3.24.0.d.ts +0 -4
- package/dist/migration/to/v3.24.0.js +0 -11
- package/dist/migration/to/v3.25.0.d.ts +0 -4
- package/dist/migration/to/v3.25.0.js +0 -11
- package/dist/migration/to/v3.3.0.d.ts +0 -4
- package/dist/migration/to/v3.3.0.js +0 -13
- package/dist/migration/to/v3.31.0.d.ts +0 -4
- package/dist/migration/to/v3.31.0.js +0 -38
- package/dist/migration/to/v3.32.0.d.ts +0 -4
- package/dist/migration/to/v3.32.0.js +0 -59
- package/dist/migration/to/v3.34.0.d.ts +0 -6
- package/dist/migration/to/v3.34.0.js +0 -111
- package/dist/migration/to/v3.36.0.d.ts +0 -4
- package/dist/migration/to/v3.36.0.js +0 -22
- package/dist/migration/to/v3.39.0.d.ts +0 -4
- package/dist/migration/to/v3.39.0.js +0 -45
- package/dist/migration/to/v3.40.0.d.ts +0 -4
- package/dist/migration/to/v3.40.0.js +0 -26
- package/dist/migration/to/v3.46.0.d.ts +0 -4
- package/dist/migration/to/v3.46.0.js +0 -35
- package/dist/migration/to/v3.57.0.d.ts +0 -4
- package/dist/migration/to/v3.57.0.js +0 -18
- package/dist/migration/to/v3.9.0.d.ts +0 -4
- package/dist/migration/to/v3.9.0.js +0 -79
- package/dist/migration/types.d.ts +0 -26
- package/dist/migration/types.js +0 -3
- package/dist/migration/utils.d.ts +0 -2
- package/dist/migration/utils.js +0 -6
- package/dist/mocks.d.ts +0 -14
- package/dist/mocks.js +0 -58
- package/dist/models/agent.d.ts +0 -3
- package/dist/models/agent.js +0 -29
- package/dist/models/project-schema.d.ts +0 -18
- package/dist/models/project-schema.js +0 -119
- package/dist/models/query.d.ts +0 -3
- package/dist/models/query.js +0 -38
- package/dist/models/runtime-schema.d.ts +0 -9
- package/dist/models/runtime-schema.js +0 -20
- package/dist/models/shape.d.ts +0 -4
- package/dist/models/shape.js +0 -36
- package/dist/models/types.d.ts +0 -36
- package/dist/models/types.js +0 -1
- package/dist/models/user-schema.d.ts +0 -7
- package/dist/models/user-schema.js +0 -9
- package/dist/patterns.d.ts +0 -12
- package/dist/patterns.js +0 -1
- package/dist/project-schema/index.d.ts +0 -211
- package/dist/project-schema/index.js +0 -83
- package/dist/project-schema/latest.d.ts +0 -2619
- package/dist/project-schema/latest.js +0 -7
- package/dist/project-schema/migrate.d.ts +0 -4
- package/dist/project-schema/migrate.js +0 -218
- package/dist/project-schema/v1.0.0.d.ts +0 -299
- package/dist/project-schema/v1.0.0.js +0 -7
- package/dist/project-schema/v3.0.0.d.ts +0 -478
- package/dist/project-schema/v3.0.0.js +0 -7
- package/dist/project-schema/v3.1.0.d.ts +0 -621
- package/dist/project-schema/v3.1.0.js +0 -7
- package/dist/project-schema/v3.10.0.d.ts +0 -1201
- package/dist/project-schema/v3.10.0.js +0 -7
- package/dist/project-schema/v3.11.0.d.ts +0 -1210
- package/dist/project-schema/v3.11.0.js +0 -7
- package/dist/project-schema/v3.12.0.d.ts +0 -1214
- package/dist/project-schema/v3.12.0.js +0 -7
- package/dist/project-schema/v3.12.1.d.ts +0 -1273
- package/dist/project-schema/v3.12.1.js +0 -7
- package/dist/project-schema/v3.12.2.d.ts +0 -1283
- package/dist/project-schema/v3.12.2.js +0 -7
- package/dist/project-schema/v3.12.3.d.ts +0 -1306
- package/dist/project-schema/v3.12.3.js +0 -7
- package/dist/project-schema/v3.13.0.d.ts +0 -1317
- package/dist/project-schema/v3.13.0.js +0 -7
- package/dist/project-schema/v3.13.1.d.ts +0 -1412
- package/dist/project-schema/v3.13.1.js +0 -7
- package/dist/project-schema/v3.14.0.d.ts +0 -1436
- package/dist/project-schema/v3.14.0.js +0 -7
- package/dist/project-schema/v3.15.0.d.ts +0 -1458
- package/dist/project-schema/v3.15.0.js +0 -7
- package/dist/project-schema/v3.16.0.d.ts +0 -1470
- package/dist/project-schema/v3.16.0.js +0 -7
- package/dist/project-schema/v3.17.0.d.ts +0 -1467
- package/dist/project-schema/v3.17.0.js +0 -7
- package/dist/project-schema/v3.17.1.d.ts +0 -1468
- package/dist/project-schema/v3.17.1.js +0 -7
- package/dist/project-schema/v3.18.0.d.ts +0 -1333
- package/dist/project-schema/v3.18.0.js +0 -7
- package/dist/project-schema/v3.18.1.d.ts +0 -1332
- package/dist/project-schema/v3.18.1.js +0 -7
- package/dist/project-schema/v3.18.2.d.ts +0 -1332
- package/dist/project-schema/v3.18.2.js +0 -7
- package/dist/project-schema/v3.19.0.d.ts +0 -1336
- package/dist/project-schema/v3.19.0.js +0 -7
- package/dist/project-schema/v3.2.0.d.ts +0 -632
- package/dist/project-schema/v3.2.0.js +0 -7
- package/dist/project-schema/v3.20.0.d.ts +0 -1336
- package/dist/project-schema/v3.20.0.js +0 -7
- package/dist/project-schema/v3.21.0.d.ts +0 -1338
- package/dist/project-schema/v3.21.0.js +0 -7
- package/dist/project-schema/v3.22.0.d.ts +0 -1344
- package/dist/project-schema/v3.22.0.js +0 -7
- package/dist/project-schema/v3.23.0.d.ts +0 -1376
- package/dist/project-schema/v3.23.0.js +0 -7
- package/dist/project-schema/v3.24.0.d.ts +0 -1364
- package/dist/project-schema/v3.24.0.js +0 -7
- package/dist/project-schema/v3.25.0.d.ts +0 -1363
- package/dist/project-schema/v3.25.0.js +0 -7
- package/dist/project-schema/v3.26.0.d.ts +0 -1388
- package/dist/project-schema/v3.26.0.js +0 -7
- package/dist/project-schema/v3.27.0.d.ts +0 -1397
- package/dist/project-schema/v3.27.0.js +0 -7
- package/dist/project-schema/v3.28.0.d.ts +0 -1416
- package/dist/project-schema/v3.28.0.js +0 -7
- package/dist/project-schema/v3.29.0.d.ts +0 -1423
- package/dist/project-schema/v3.29.0.js +0 -7
- package/dist/project-schema/v3.3.0.d.ts +0 -632
- package/dist/project-schema/v3.3.0.js +0 -7
- package/dist/project-schema/v3.30.0.d.ts +0 -1416
- package/dist/project-schema/v3.30.0.js +0 -7
- package/dist/project-schema/v3.31.0.d.ts +0 -1448
- package/dist/project-schema/v3.31.0.js +0 -7
- package/dist/project-schema/v3.32.0.d.ts +0 -1439
- package/dist/project-schema/v3.32.0.js +0 -7
- package/dist/project-schema/v3.33.0.d.ts +0 -1445
- package/dist/project-schema/v3.33.0.js +0 -7
- package/dist/project-schema/v3.34.0.d.ts +0 -1445
- package/dist/project-schema/v3.34.0.js +0 -7
- package/dist/project-schema/v3.35.0.d.ts +0 -1464
- package/dist/project-schema/v3.35.0.js +0 -7
- package/dist/project-schema/v3.36.0.d.ts +0 -1470
- package/dist/project-schema/v3.36.0.js +0 -7
- package/dist/project-schema/v3.37.0.d.ts +0 -1522
- package/dist/project-schema/v3.37.0.js +0 -7
- package/dist/project-schema/v3.38.0.d.ts +0 -1522
- package/dist/project-schema/v3.38.0.js +0 -7
- package/dist/project-schema/v3.39.0.d.ts +0 -1529
- package/dist/project-schema/v3.39.0.js +0 -7
- package/dist/project-schema/v3.4.0.d.ts +0 -624
- package/dist/project-schema/v3.4.0.js +0 -7
- package/dist/project-schema/v3.40.0.d.ts +0 -1530
- package/dist/project-schema/v3.40.0.js +0 -7
- package/dist/project-schema/v3.41.0.d.ts +0 -1530
- package/dist/project-schema/v3.41.0.js +0 -7
- package/dist/project-schema/v3.42.0.d.ts +0 -1534
- package/dist/project-schema/v3.42.0.js +0 -7
- package/dist/project-schema/v3.43.0.d.ts +0 -1536
- package/dist/project-schema/v3.43.0.js +0 -7
- package/dist/project-schema/v3.44.0.d.ts +0 -1621
- package/dist/project-schema/v3.44.0.js +0 -7
- package/dist/project-schema/v3.45.0.d.ts +0 -1650
- package/dist/project-schema/v3.45.0.js +0 -7
- package/dist/project-schema/v3.46.0.d.ts +0 -1703
- package/dist/project-schema/v3.46.0.js +0 -7
- package/dist/project-schema/v3.47.0.d.ts +0 -1736
- package/dist/project-schema/v3.47.0.js +0 -7
- package/dist/project-schema/v3.48.0.d.ts +0 -2208
- package/dist/project-schema/v3.48.0.js +0 -7
- package/dist/project-schema/v3.49.0.d.ts +0 -2217
- package/dist/project-schema/v3.49.0.js +0 -7
- package/dist/project-schema/v3.5.0.d.ts +0 -649
- package/dist/project-schema/v3.5.0.js +0 -7
- package/dist/project-schema/v3.5.1.d.ts +0 -649
- package/dist/project-schema/v3.5.1.js +0 -7
- package/dist/project-schema/v3.50.0.d.ts +0 -2269
- package/dist/project-schema/v3.50.0.js +0 -7
- package/dist/project-schema/v3.51.0.d.ts +0 -2269
- package/dist/project-schema/v3.51.0.js +0 -7
- package/dist/project-schema/v3.52.0.d.ts +0 -2269
- package/dist/project-schema/v3.52.0.js +0 -7
- package/dist/project-schema/v3.53.0.d.ts +0 -2350
- package/dist/project-schema/v3.53.0.js +0 -7
- package/dist/project-schema/v3.54.0.d.ts +0 -2369
- package/dist/project-schema/v3.54.0.js +0 -7
- package/dist/project-schema/v3.55.0.d.ts +0 -2369
- package/dist/project-schema/v3.55.0.js +0 -7
- package/dist/project-schema/v3.56.0.d.ts +0 -2405
- package/dist/project-schema/v3.56.0.js +0 -7
- package/dist/project-schema/v3.57.0.d.ts +0 -2601
- package/dist/project-schema/v3.57.0.js +0 -7
- package/dist/project-schema/v3.58.0.d.ts +0 -2601
- package/dist/project-schema/v3.58.0.js +0 -7
- package/dist/project-schema/v3.59.0.d.ts +0 -2619
- package/dist/project-schema/v3.59.0.js +0 -7
- package/dist/project-schema/v3.6.0.d.ts +0 -658
- package/dist/project-schema/v3.6.0.js +0 -7
- package/dist/project-schema/v3.7.0.d.ts +0 -961
- package/dist/project-schema/v3.7.0.js +0 -7
- package/dist/project-schema/v3.8.0.d.ts +0 -979
- package/dist/project-schema/v3.8.0.js +0 -7
- package/dist/project-schema/v3.9.0.d.ts +0 -1178
- package/dist/project-schema/v3.9.0.js +0 -7
- package/dist/project-schema/v4.0.0.d.ts +0 -1328
- package/dist/project-schema/v4.0.0.js +0 -7
- package/dist/refs.d.ts +0 -218
- package/dist/refs.js +0 -616
- package/dist/relationships.d.ts +0 -40
- package/dist/relationships.js +0 -302
- package/dist/resolvers/ai/abort-agent-message-args.d.ts +0 -16
- package/dist/resolvers/ai/abort-agent-message-args.js +0 -13
- package/dist/resolvers/ai/abort-agent-message-response.d.ts +0 -39
- package/dist/resolvers/ai/abort-agent-message-response.js +0 -19
- package/dist/resolvers/ai/agent-chat-args.d.ts +0 -17
- package/dist/resolvers/ai/agent-chat-args.js +0 -14
- package/dist/resolvers/ai/agent-chat-payload.d.ts +0 -35
- package/dist/resolvers/ai/agent-chat-payload.js +0 -26
- package/dist/resolvers/ai/agent-chat-response.d.ts +0 -289
- package/dist/resolvers/ai/agent-chat-response.js +0 -21
- package/dist/resolvers/ai/agent-generate-args.d.ts +0 -17
- package/dist/resolvers/ai/agent-generate-args.js +0 -14
- package/dist/resolvers/ai/agent-message-input.d.ts +0 -73
- package/dist/resolvers/ai/agent-message-input.js +0 -39
- package/dist/resolvers/ai/agent-message-output.d.ts +0 -169
- package/dist/resolvers/ai/agent-message-output.js +0 -77
- package/dist/resolvers/ai/agent-message-payload.d.ts +0 -507
- package/dist/resolvers/ai/agent-message-payload.js +0 -156
- package/dist/resolvers/ai/agent-run-mode.d.ts +0 -7
- package/dist/resolvers/ai/agent-run-mode.js +0 -9
- package/dist/resolvers/ai/agent-session-payload.d.ts +0 -515
- package/dist/resolvers/ai/agent-session-payload.js +0 -175
- package/dist/resolvers/ai/create-agent-session-response.d.ts +0 -199
- package/dist/resolvers/ai/create-agent-session-response.js +0 -9
- package/dist/resolvers/ai/embedding-search.d.ts +0 -54
- package/dist/resolvers/ai/embedding-search.js +0 -46
- package/dist/resolvers/ai/get-agent-message-args.d.ts +0 -16
- package/dist/resolvers/ai/get-agent-message-args.js +0 -13
- package/dist/resolvers/ai/get-agent-message-response.d.ts +0 -805
- package/dist/resolvers/ai/get-agent-message-response.js +0 -63
- package/dist/resolvers/ai/inspect-agent-args.d.ts +0 -16
- package/dist/resolvers/ai/inspect-agent-args.js +0 -13
- package/dist/resolvers/ai/inspect-agent-response.d.ts +0 -504
- package/dist/resolvers/ai/inspect-agent-response.js +0 -48
- package/dist/resolvers/ai/send-agent-feedback-args.d.ts +0 -52
- package/dist/resolvers/ai/send-agent-feedback-args.js +0 -16
- package/dist/resolvers/ai/send-agent-message-args.d.ts +0 -48
- package/dist/resolvers/ai/send-agent-message-args.js +0 -36
- package/dist/resolvers/ai/send-agent-message-response.d.ts +0 -353
- package/dist/resolvers/ai/send-agent-message-response.js +0 -51
- package/dist/resolvers/ai/types.d.ts +0 -6
- package/dist/resolvers/ai/types.js +0 -1
- package/dist/resolvers/takeshape/assets/asset-image-meta.d.ts +0 -79
- package/dist/resolvers/takeshape/assets/asset-image-meta.js +0 -98
- package/dist/resolvers/takeshape/assets/asset-image-params.d.ts +0 -901
- package/dist/resolvers/takeshape/assets/asset-image-params.js +0 -726
- package/dist/resolvers/takeshape/assets/asset-image.d.ts +0 -17
- package/dist/resolvers/takeshape/assets/asset-image.js +0 -15
- package/dist/resolvers/takeshape/assets/asset.d.ts +0 -125
- package/dist/resolvers/takeshape/assets/asset.js +0 -107
- package/dist/resolvers/takeshape/assets/constants.d.ts +0 -11
- package/dist/resolvers/takeshape/assets/constants.js +0 -11
- package/dist/resolvers/takeshape/builtins/constants.d.ts +0 -1
- package/dist/resolvers/takeshape/builtins/constants.js +0 -1
- package/dist/runtime-schema.d.ts +0 -6
- package/dist/runtime-schema.js +0 -85
- package/dist/scalars.d.ts +0 -2
- package/dist/scalars.js +0 -4
- package/dist/schema-transform.d.ts +0 -19
- package/dist/schema-transform.js +0 -74
- package/dist/schema-util.d.ts +0 -266
- package/dist/schema-util.js +0 -1127
- package/dist/schemas/auth-schemas.json +0 -374
- package/dist/schemas/index.d.ts +0 -4
- package/dist/schemas/index.js +0 -170
- package/dist/schemas/project-schema/experimental-2025-07.json +0 -1297
- package/dist/schemas/project-schema/latest.d.ts +0 -180
- package/dist/schemas/project-schema/latest.js +0 -11
- package/dist/schemas/project-schema/latest.json +0 -4846
- package/dist/schemas/project-schema/meta-schema-v1.0.0.json +0 -193
- package/dist/schemas/project-schema/meta-schema-v3.0.0.json +0 -608
- package/dist/schemas/project-schema/meta-schema-v3.1.0.json +0 -608
- package/dist/schemas/project-schema/meta-schema-v3.2.0.json +0 -612
- package/dist/schemas/project-schema/meta-schema-v3.3.0.json +0 -612
- package/dist/schemas/project-schema/meta-schema-v3.4.0.json +0 -637
- package/dist/schemas/project-schema/meta-schema-v3.5.0.json +0 -626
- package/dist/schemas/project-schema/meta-schema-v3.5.1.json +0 -626
- package/dist/schemas/project-schema/meta-schema-v3.6.0.json +0 -629
- package/dist/schemas/project-schema/meta-schema-v3.7.0.json +0 -1137
- package/dist/schemas/project-schema/meta-schema-v3.8.0.json +0 -1137
- package/dist/schemas/project-schema/meta-schema-v3.9.0.json +0 -1477
- package/dist/schemas/project-schema/v1.0.0.json +0 -321
- package/dist/schemas/project-schema/v3.0.0.json +0 -414
- package/dist/schemas/project-schema/v3.1.0.json +0 -572
- package/dist/schemas/project-schema/v3.10.0.json +0 -2097
- package/dist/schemas/project-schema/v3.11.0.json +0 -2141
- package/dist/schemas/project-schema/v3.12.0.json +0 -2144
- package/dist/schemas/project-schema/v3.12.1.json +0 -2282
- package/dist/schemas/project-schema/v3.12.2.json +0 -2304
- package/dist/schemas/project-schema/v3.12.3.json +0 -2357
- package/dist/schemas/project-schema/v3.13.0.json +0 -2377
- package/dist/schemas/project-schema/v3.14.0.json +0 -2385
- package/dist/schemas/project-schema/v3.15.0.json +0 -2365
- package/dist/schemas/project-schema/v3.16.0.json +0 -2373
- package/dist/schemas/project-schema/v3.17.0.json +0 -2378
- package/dist/schemas/project-schema/v3.17.1.json +0 -2380
- package/dist/schemas/project-schema/v3.18.0.json +0 -2356
- package/dist/schemas/project-schema/v3.18.1.json +0 -2357
- package/dist/schemas/project-schema/v3.18.2.json +0 -2357
- package/dist/schemas/project-schema/v3.19.0.json +0 -2369
- package/dist/schemas/project-schema/v3.2.0.json +0 -580
- package/dist/schemas/project-schema/v3.20.0.json +0 -2369
- package/dist/schemas/project-schema/v3.21.0.json +0 -2376
- package/dist/schemas/project-schema/v3.22.0.json +0 -2381
- package/dist/schemas/project-schema/v3.23.0.json +0 -2456
- package/dist/schemas/project-schema/v3.24.0.json +0 -2556
- package/dist/schemas/project-schema/v3.25.0.json +0 -2552
- package/dist/schemas/project-schema/v3.26.0.json +0 -2599
- package/dist/schemas/project-schema/v3.27.0.json +0 -2611
- package/dist/schemas/project-schema/v3.28.0.json +0 -2656
- package/dist/schemas/project-schema/v3.29.0.json +0 -2670
- package/dist/schemas/project-schema/v3.3.0.json +0 -581
- package/dist/schemas/project-schema/v3.30.0.json +0 -2656
- package/dist/schemas/project-schema/v3.31.0.json +0 -2714
- package/dist/schemas/project-schema/v3.32.0.json +0 -2708
- package/dist/schemas/project-schema/v3.33.0.json +0 -2715
- package/dist/schemas/project-schema/v3.34.0.json +0 -2715
- package/dist/schemas/project-schema/v3.35.0.json +0 -2748
- package/dist/schemas/project-schema/v3.36.0.json +0 -2756
- package/dist/schemas/project-schema/v3.37.0.json +0 -2821
- package/dist/schemas/project-schema/v3.38.0.json +0 -2819
- package/dist/schemas/project-schema/v3.39.0.json +0 -2827
- package/dist/schemas/project-schema/v3.4.0.json +0 -571
- package/dist/schemas/project-schema/v3.40.0.json +0 -2830
- package/dist/schemas/project-schema/v3.41.0.json +0 -2830
- package/dist/schemas/project-schema/v3.42.0.json +0 -2835
- package/dist/schemas/project-schema/v3.43.0.json +0 -2841
- package/dist/schemas/project-schema/v3.44.0.json +0 -3013
- package/dist/schemas/project-schema/v3.45.0.json +0 -3064
- package/dist/schemas/project-schema/v3.46.0.json +0 -3136
- package/dist/schemas/project-schema/v3.47.0.json +0 -3189
- package/dist/schemas/project-schema/v3.48.0.json +0 -3196
- package/dist/schemas/project-schema/v3.49.0.json +0 -3239
- package/dist/schemas/project-schema/v3.5.0.json +0 -571
- package/dist/schemas/project-schema/v3.5.1.json +0 -571
- package/dist/schemas/project-schema/v3.50.0.json +0 -3320
- package/dist/schemas/project-schema/v3.51.0.json +0 -3326
- package/dist/schemas/project-schema/v3.52.0.json +0 -3326
- package/dist/schemas/project-schema/v3.53.0.json +0 -3476
- package/dist/schemas/project-schema/v3.54.0.json +0 -3512
- package/dist/schemas/project-schema/v3.55.0.json +0 -3515
- package/dist/schemas/project-schema/v3.56.0.json +0 -3530
- package/dist/schemas/project-schema/v3.57.0.json +0 -4815
- package/dist/schemas/project-schema/v3.58.0.json +0 -4815
- package/dist/schemas/project-schema/v3.59.0.json +0 -4846
- package/dist/schemas/project-schema/v3.6.0.json +0 -587
- package/dist/schemas/project-schema/v3.7.0.json +0 -587
- package/dist/schemas/project-schema/v3.8.0.json +0 -604
- package/dist/schemas/project-schema/v3.9.0.json +0 -604
- package/dist/schemas/project-schema/v4.0.0.json +0 -2316
- package/dist/schemas/project-schema.json +0 -214
- package/dist/service-dependencies.d.ts +0 -13
- package/dist/service-dependencies.js +0 -165
- package/dist/services/services.d.ts +0 -31
- package/dist/services/services.js +0 -145
- package/dist/services/types.d.ts +0 -11
- package/dist/services/types.js +0 -1
- package/dist/services/util.d.ts +0 -16
- package/dist/services/util.js +0 -36
- package/dist/shape-paths.d.ts +0 -7
- package/dist/shape-paths.js +0 -28
- package/dist/taxonomies.d.ts +0 -15
- package/dist/taxonomies.js +0 -24
- package/dist/template-shapes/index.d.ts +0 -7
- package/dist/template-shapes/index.js +0 -33
- package/dist/template-shapes/names.d.ts +0 -10
- package/dist/template-shapes/names.js +0 -21
- package/dist/template-shapes/templates.d.ts +0 -32
- package/dist/template-shapes/templates.js +0 -316
- package/dist/template-shapes/types.d.ts +0 -15
- package/dist/template-shapes/types.js +0 -7
- package/dist/template-shapes/where.d.ts +0 -37
- package/dist/template-shapes/where.js +0 -400
- package/dist/types/index.d.ts +0 -3
- package/dist/types/index.js +0 -2
- package/dist/types/transforms.d.ts +0 -15
- package/dist/types/transforms.js +0 -1
- package/dist/types/types.d.ts +0 -200
- package/dist/types/types.js +0 -10
- package/dist/types/utils.d.ts +0 -112
- package/dist/types/utils.js +0 -269
- package/dist/unions.d.ts +0 -14
- package/dist/unions.js +0 -77
- package/dist/util/ai-tools.d.ts +0 -2
- package/dist/util/ai-tools.js +0 -14
- package/dist/util/api-indexing.d.ts +0 -9
- package/dist/util/api-indexing.js +0 -57
- package/dist/util/coerce-value.d.ts +0 -9
- package/dist/util/coerce-value.js +0 -32
- package/dist/util/detect-cycles.d.ts +0 -7
- package/dist/util/detect-cycles.js +0 -45
- package/dist/util/expressions.d.ts +0 -34
- package/dist/util/expressions.js +0 -350
- package/dist/util/find-shape-at-path.d.ts +0 -21
- package/dist/util/find-shape-at-path.js +0 -53
- package/dist/util/form-config.d.ts +0 -11
- package/dist/util/form-config.js +0 -62
- package/dist/util/get-conflicting-properties.d.ts +0 -6
- package/dist/util/get-conflicting-properties.js +0 -55
- package/dist/util/get-return-shape.d.ts +0 -4
- package/dist/util/get-return-shape.js +0 -30
- package/dist/util/has-arg.d.ts +0 -6
- package/dist/util/has-arg.js +0 -25
- package/dist/util/is-asset-property.d.ts +0 -3
- package/dist/util/is-asset-property.js +0 -11
- package/dist/util/mcp.d.ts +0 -8
- package/dist/util/mcp.js +0 -21
- package/dist/util/merge.d.ts +0 -15
- package/dist/util/merge.js +0 -254
- package/dist/util/patch-schema.d.ts +0 -8
- package/dist/util/patch-schema.js +0 -51
- package/dist/util/query-field-path.d.ts +0 -9
- package/dist/util/query-field-path.js +0 -23
- package/dist/util/shapes.d.ts +0 -5
- package/dist/util/shapes.js +0 -22
- package/dist/validate/ai.d.ts +0 -6
- package/dist/validate/ai.js +0 -183
- package/dist/validate/errors.d.ts +0 -3
- package/dist/validate/errors.js +0 -20
- package/dist/validate/types.d.ts +0 -1
- package/dist/validate/types.js +0 -1
- package/dist/validate/util.d.ts +0 -3
- package/dist/validate/util.js +0 -28
- package/dist/validate/validate.d.ts +0 -80
- package/dist/validate/validate.js +0 -1058
- package/dist/versions.d.ts +0 -4
- package/dist/versions.js +0 -4
- package/dist/workflows.d.ts +0 -14
- package/dist/workflows.js +0 -66
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://schema.takeshape.io/project-schema#",
|
|
4
|
-
"title": "Any Project Schema",
|
|
5
|
-
"oneOf": [
|
|
6
|
-
{
|
|
7
|
-
"$ref": "https://schema.takeshape.io/project-schema/v1.0.0#"
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.0.0#"
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.1.0#"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.2.0#"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.3.0#"
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.4.0#"
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.5.0#"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.5.1#"
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.6.0#"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.7.0#"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.8.0#"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.9.0#"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.10.0#"
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.11.0#"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.12.0#"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.12.1#"
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.12.2#"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.12.3#"
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.13.0#"
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.14.0#"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.15.0#"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.16.0#"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.17.0#"
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.17.1#"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.18.0#"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.18.1#"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.18.2#"
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.19.0#"
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.20.0#"
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.21.0#"
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.22.0#"
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.23.0#"
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.24.0#"
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.25.0#"
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.26.0#"
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.27.0#"
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.28.0#"
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.29.0#"
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.30.0#"
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.31.0#"
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.32.0#"
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.33.0#"
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.34.0#"
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.35.0#"
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.36.0#"
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.37.0#"
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.38.0#"
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.39.0#"
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.40.0#"
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.41.0#"
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.42.0#"
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.43.0#"
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.44.0#"
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.45.0#"
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.46.0#"
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.47.0#"
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.48.0#"
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.49.0#"
|
|
179
|
-
},
|
|
180
|
-
{
|
|
181
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.50.0#"
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.51.0#"
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.52.0#"
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.53.0#"
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.54.0#"
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.55.0#"
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.56.0#"
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.57.0#"
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.58.0#"
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
"$ref": "https://schema.takeshape.io/project-schema/v3.59.0#"
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
"$ref": "https://schema.takeshape.io/project-schema/v4.0.0#"
|
|
212
|
-
}
|
|
213
|
-
]
|
|
214
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { ProjectSchemaJSON, PropertySchema } from './project-schema/index.ts';
|
|
2
|
-
import { type ServicesContext } from './refs.ts';
|
|
3
|
-
import { type ServiceLayers } from './types/index.ts';
|
|
4
|
-
/**
|
|
5
|
-
* Add all referenced shape names to the refSet meant to be used as a callback to visitSchemaProperties
|
|
6
|
-
*/
|
|
7
|
-
export declare function collectReferencedShapeNames(context: ServicesContext, shapeNames: Set<string>): (schema: PropertySchema) => void;
|
|
8
|
-
/**
|
|
9
|
-
* Returns a schema with all of its dependencies resolved.
|
|
10
|
-
* SHOULD only return the minimum set of remote dependencies required to enable
|
|
11
|
-
* the local shape definitions.
|
|
12
|
-
*/
|
|
13
|
-
export declare function resolveSchemaShapeDependencies(projectSchema: ProjectSchemaJSON, serviceLayers: ServiceLayers): ProjectSchemaJSON;
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { addAll, deepClone, mapSet } from '@takeshape/util';
|
|
2
|
-
import get from 'lodash/get.js';
|
|
3
|
-
import isObject from 'lodash/isObject.js';
|
|
4
|
-
import pick from 'lodash/pick.js';
|
|
5
|
-
import set from 'lodash/set.js';
|
|
6
|
-
import { getImplementationShapeNameMap, isInterfaceShape, pruneUnusedInterfaces } from "./interfaces.js";
|
|
7
|
-
import { createGetNamespace, dereferenceObjectSchema, getAllPropertyRefs, getRef, getRefShapeName, isValidRefItem, propertyRefItemToPath, refExpressionToNamespacedName, refItemToNamespacedShapeName } from "./refs.js";
|
|
8
|
-
import { getAllNamespaceShapes, getAllRefsInQuery, getArgsReference, visitSchemaProperties } from "./schema-util.js";
|
|
9
|
-
import { isExtendsSchema, isObjectSchema, isProjectSchemaWithServices } from "./types/index.js";
|
|
10
|
-
function getGraphQLServiceShapeMap(layers) {
|
|
11
|
-
return Object.assign({}, ...Object.values(layers).map((layer) => layer.schema?.shapes ?? {}));
|
|
12
|
-
}
|
|
13
|
-
function schemaExtendsShape(context, shapeName, schema) {
|
|
14
|
-
return (isExtendsSchema(schema) &&
|
|
15
|
-
schema.extends.some((item) => getRefShapeName(context, item) === shapeName));
|
|
16
|
-
}
|
|
17
|
-
function getMissingPropertyRefs(projectSchema, getNamespace) {
|
|
18
|
-
const propertyRefs = getAllPropertyRefs(projectSchema);
|
|
19
|
-
return propertyRefs.filter((ref) => {
|
|
20
|
-
const path = propertyRefItemToPath(getNamespace, ref);
|
|
21
|
-
return !get(projectSchema, path);
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
function refToQuery(serviceSchemas, ref) {
|
|
25
|
-
const serviceSchema = serviceSchemas[ref.layerId]?.schema;
|
|
26
|
-
if (serviceSchema) {
|
|
27
|
-
if (ref.shapeName === 'Query' || ref.shapeName === 'Mutation') {
|
|
28
|
-
const operation = ref.shapeName === 'Query' ? 'queries' : 'mutations';
|
|
29
|
-
return serviceSchema[operation][ref.propertyName];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function getShapeRefs(services, serviceSchemas, propertyRefs) {
|
|
34
|
-
const results = [];
|
|
35
|
-
for (const ref of propertyRefs) {
|
|
36
|
-
const query = refToQuery(serviceSchemas, ref);
|
|
37
|
-
const layerSchema = serviceSchemas[ref.layerId]?.schema;
|
|
38
|
-
if (query && layerSchema) {
|
|
39
|
-
const layerWithService = {
|
|
40
|
-
...layerSchema,
|
|
41
|
-
services: pick(services, [ref.layerId]) // include own service so refs have isValidService: true
|
|
42
|
-
};
|
|
43
|
-
results.push(...getAllRefsInQuery(layerWithService, [], query));
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return results;
|
|
47
|
-
}
|
|
48
|
-
function interfacesToShapeNames(projectSchema, shapeRefArray) {
|
|
49
|
-
return shapeRefArray.map((shapeRef) => refExpressionToNamespacedName(projectSchema, shapeRef));
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Add all referenced shape names to the refSet meant to be used as a callback to visitSchemaProperties
|
|
53
|
-
*/
|
|
54
|
-
export function collectReferencedShapeNames(context, shapeNames) {
|
|
55
|
-
const addRef = (refItem) => {
|
|
56
|
-
shapeNames.add(refItemToNamespacedShapeName(context, refItem));
|
|
57
|
-
};
|
|
58
|
-
const collect = (schema) => {
|
|
59
|
-
const args = schema['@args'];
|
|
60
|
-
if (args && isObject(args) && isObjectSchema(args)) {
|
|
61
|
-
Object.values(args.properties).forEach(collect);
|
|
62
|
-
}
|
|
63
|
-
const argsRefItem = getArgsReference(context, schema);
|
|
64
|
-
if (argsRefItem) {
|
|
65
|
-
addRef(argsRefItem);
|
|
66
|
-
}
|
|
67
|
-
const refItem = getRef(context, schema);
|
|
68
|
-
if (refItem) {
|
|
69
|
-
addRef(refItem);
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
return collect;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Returns a schema with all of its dependencies resolved.
|
|
76
|
-
* SHOULD only return the minimum set of remote dependencies required to enable
|
|
77
|
-
* the local shape definitions.
|
|
78
|
-
*/
|
|
79
|
-
export function resolveSchemaShapeDependencies(projectSchema, serviceLayers) {
|
|
80
|
-
const newSchema = deepClone(projectSchema);
|
|
81
|
-
if (isProjectSchemaWithServices(projectSchema)) {
|
|
82
|
-
const newShapeMap = {};
|
|
83
|
-
const requiredShapeNames = new Set(getAllNamespaceShapes(projectSchema));
|
|
84
|
-
const getNamespace = createGetNamespace(projectSchema);
|
|
85
|
-
const missingPropertyRefs = getMissingPropertyRefs(projectSchema, getNamespace);
|
|
86
|
-
if (requiredShapeNames.size || missingPropertyRefs.length) {
|
|
87
|
-
const remoteShapeMap = getGraphQLServiceShapeMap(serviceLayers);
|
|
88
|
-
// Add shape references from queries
|
|
89
|
-
addAll(requiredShapeNames, getShapeRefs(projectSchema.services, serviceLayers, missingPropertyRefs)
|
|
90
|
-
.filter(isValidRefItem(projectSchema))
|
|
91
|
-
.map((item) => refItemToNamespacedShapeName(projectSchema, item)));
|
|
92
|
-
// Add referenced queries and mutations
|
|
93
|
-
for (const ref of missingPropertyRefs) {
|
|
94
|
-
const query = refToQuery(serviceLayers, ref);
|
|
95
|
-
if (query) {
|
|
96
|
-
set(newSchema, propertyRefItemToPath(getNamespace, ref), query);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
// Gather all the remote dependencies that our local schema requires.
|
|
100
|
-
// If the required shape exists in the remote shape map, visit the
|
|
101
|
-
// properties on the remote shape's schema and ensure they are required
|
|
102
|
-
// as well.
|
|
103
|
-
const collectDependencies = (shapeNames) => {
|
|
104
|
-
for (const name of shapeNames) {
|
|
105
|
-
const localShape = newSchema.shapes[name];
|
|
106
|
-
const remoteShape = remoteShapeMap[name];
|
|
107
|
-
// Don't check for dependencies if the shape is already in our schema unless it extends a remote shape
|
|
108
|
-
// getNamespacedShapeNameList already collected those dependencies
|
|
109
|
-
if ((!localShape || (localShape && schemaExtendsShape(projectSchema, name, localShape.schema))) &&
|
|
110
|
-
remoteShape) {
|
|
111
|
-
visitSchemaProperties(remoteShape.schema, [remoteShape.name, 'schema'], collectReferencedShapeNames({ services: newSchema.services }, shapeNames));
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
collectDependencies(requiredShapeNames);
|
|
116
|
-
// Collect interfaces that requiredShapeNames implement
|
|
117
|
-
const interfaceNames = new Set();
|
|
118
|
-
const requiredShapes = mapSet(requiredShapeNames, (shapeName) => newSchema.shapes[shapeName] ?? remoteShapeMap[shapeName]);
|
|
119
|
-
for (const shape of requiredShapes) {
|
|
120
|
-
if (shape?.interfaces) {
|
|
121
|
-
addAll(interfaceNames, interfacesToShapeNames(projectSchema, shape.interfaces));
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
// Collect implementations for interfaces in requiredShapeNames
|
|
125
|
-
const implementationNames = new Set();
|
|
126
|
-
const implementations = getImplementationShapeNameMap({
|
|
127
|
-
...newSchema.shapes,
|
|
128
|
-
...remoteShapeMap
|
|
129
|
-
});
|
|
130
|
-
for (const shape of requiredShapes) {
|
|
131
|
-
if (isInterfaceShape(shape) && implementations[shape.name]) {
|
|
132
|
-
addAll(implementationNames, implementations[shape.name]);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
// Collect the dependencies for the interfaces and implementations
|
|
136
|
-
collectDependencies(interfaceNames);
|
|
137
|
-
collectDependencies(implementationNames);
|
|
138
|
-
addAll(requiredShapeNames, interfaceNames);
|
|
139
|
-
addAll(requiredShapeNames, implementationNames);
|
|
140
|
-
// Populate a ShapeMap with the remote shapes we've gathered
|
|
141
|
-
// A combined context which prefers remote shapes for use when merging/inlining
|
|
142
|
-
const mergingContext = {
|
|
143
|
-
services: newSchema.services,
|
|
144
|
-
shapes: { ...newSchema.shapes, ...remoteShapeMap }
|
|
145
|
-
};
|
|
146
|
-
for (const name of requiredShapeNames) {
|
|
147
|
-
const localShape = newSchema.shapes[name];
|
|
148
|
-
const remoteShape = remoteShapeMap[name];
|
|
149
|
-
if (localShape && remoteShape && schemaExtendsShape(mergingContext, name, localShape.schema)) {
|
|
150
|
-
// Merge and inline combined shape when a local shape extends a remote shape
|
|
151
|
-
newShapeMap[name] = {
|
|
152
|
-
...localShape,
|
|
153
|
-
schema: dereferenceObjectSchema(mergingContext, newSchema.shapes[name].schema)
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
else if (localShape ?? remoteShape) {
|
|
157
|
-
newShapeMap[name] = localShape ?? remoteShape;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
// Assign remote shapes to the new schema, mutating the new schema
|
|
162
|
-
Object.assign(newSchema.shapes, pruneUnusedInterfaces(newSchema, newShapeMap));
|
|
163
|
-
}
|
|
164
|
-
return newSchema;
|
|
165
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { Overwrite } from '@takeshape/util';
|
|
2
|
-
import { SERVICE_OBJECT_PATTERN_NAME } from '../constants.ts';
|
|
3
|
-
import type { ProjectSchemaJSON, ServiceConfig, ServiceConfigJSON, ServiceMapJSON, ShapeJSON } from '../project-schema/index.ts';
|
|
4
|
-
import type { PatternGenerator, ServiceConfigUpdate, ServiceInfo, ServiceMap } from '../types/types.ts';
|
|
5
|
-
import type { DecryptFn, EncryptFn } from './types.ts';
|
|
6
|
-
/**
|
|
7
|
-
* Given a `StoredServiceConfig` returns a usable `ServiceConfig` with the
|
|
8
|
-
* authentication object decrypted.
|
|
9
|
-
*/
|
|
10
|
-
export declare function decryptServiceConfig(decryptFn: DecryptFn, storedServiceConfig: ServiceConfigJSON): ServiceConfig;
|
|
11
|
-
/**
|
|
12
|
-
* Given a `ServiceMapJSON` returns a usable `ServiceMap` with all the
|
|
13
|
-
* authentication objects decrypted.
|
|
14
|
-
*/
|
|
15
|
-
export declare function decryptServiceMap(decryptFn: DecryptFn, ServiceMapJSON: ServiceMapJSON): Promise<ServiceMap>;
|
|
16
|
-
/**
|
|
17
|
-
* Validates a `ServiceConfig` validator based on the JSON-schema.
|
|
18
|
-
*/
|
|
19
|
-
export declare function validateServiceConfig(maybeServiceConfig: unknown): ServiceConfigJSON;
|
|
20
|
-
/**
|
|
21
|
-
* Prepare a `ServiceConfig` object update, validating the overall structure
|
|
22
|
-
* and encrypting the `ServiceAuthentication` object.
|
|
23
|
-
*/
|
|
24
|
-
export declare function prepareServiceUpdate(encryptFn: EncryptFn, decryptFn: DecryptFn, projectSchema: ProjectSchemaJSON, serviceConfigUpdate: ServiceConfigUpdate, serviceKey: string): ServiceConfigJSON;
|
|
25
|
-
export type ServiceInfoWithServiceObject = Overwrite<ServiceInfo, {
|
|
26
|
-
generators: {
|
|
27
|
-
[SERVICE_OBJECT_PATTERN_NAME]: PatternGenerator;
|
|
28
|
-
};
|
|
29
|
-
}>;
|
|
30
|
-
export declare function getServiceObjectFields(projectSchema: ProjectSchemaJSON, shape: ShapeJSON, provider: string): ServiceInfoWithServiceObject[];
|
|
31
|
-
export declare function getServiceInfo(projectSchema: ProjectSchemaJSON, shape: ShapeJSON): Record<string, ServiceInfo[]>;
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { SchemaValidationError } from '@takeshape/errors';
|
|
2
|
-
import { createAjv } from '@takeshape/json-schema';
|
|
3
|
-
import { mergeWithArrayMerge } from '@takeshape/util';
|
|
4
|
-
import isEqual from 'lodash/isEqual.js';
|
|
5
|
-
import isNull from 'lodash/isNull.js';
|
|
6
|
-
import { SERVICE_OBJECT_PATTERN_NAME } from "../constants.js";
|
|
7
|
-
import { createSchemaPropertyList, getGeneratorVersion, getServiceIdFieldName, getShapeDependencies, pathBetween } from "../schema-util.js";
|
|
8
|
-
import { latestSchemaJson } from "../schemas/index.js";
|
|
9
|
-
import { isEncryptedServiceConfig, isServiceAuthentication, isServiceResolver } from "../types/utils.js";
|
|
10
|
-
import { formatError } from "../validate/errors.js";
|
|
11
|
-
import { getStoredServiceConfig } from "./util.js";
|
|
12
|
-
/**
|
|
13
|
-
* Given a `StoredServiceConfig` returns a usable `ServiceConfig` with the
|
|
14
|
-
* authentication object decrypted.
|
|
15
|
-
*/
|
|
16
|
-
export function decryptServiceConfig(decryptFn, storedServiceConfig) {
|
|
17
|
-
let authentication;
|
|
18
|
-
if (isEncryptedServiceConfig(storedServiceConfig)) {
|
|
19
|
-
const decrypted = decryptFn(storedServiceConfig.authentication);
|
|
20
|
-
if (isServiceAuthentication(decrypted)) {
|
|
21
|
-
authentication = decrypted;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
...storedServiceConfig,
|
|
26
|
-
authentication
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Given a `ServiceMapJSON` returns a usable `ServiceMap` with all the
|
|
31
|
-
* authentication objects decrypted.
|
|
32
|
-
*/
|
|
33
|
-
export async function decryptServiceMap(decryptFn, ServiceMapJSON) {
|
|
34
|
-
return Object.entries(ServiceMapJSON).reduce((result, [serviceKey, serviceConfig]) => {
|
|
35
|
-
return result.set(serviceKey, decryptServiceConfig(decryptFn, serviceConfig));
|
|
36
|
-
}, new Map());
|
|
37
|
-
}
|
|
38
|
-
function createServiceConfigValidator() {
|
|
39
|
-
const validator = createAjv();
|
|
40
|
-
const { serviceConfig, ...definitions } = latestSchemaJson.definitions;
|
|
41
|
-
return validator.compile({
|
|
42
|
-
$id: 'ServiceConfig',
|
|
43
|
-
definitions,
|
|
44
|
-
...serviceConfig
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
const serviceConfigValidator = createServiceConfigValidator();
|
|
48
|
-
/**
|
|
49
|
-
* Validates a `ServiceConfig` validator based on the JSON-schema.
|
|
50
|
-
*/
|
|
51
|
-
export function validateServiceConfig(maybeServiceConfig) {
|
|
52
|
-
if (serviceConfigValidator(maybeServiceConfig)) {
|
|
53
|
-
return maybeServiceConfig;
|
|
54
|
-
}
|
|
55
|
-
throw new SchemaValidationError('ServiceConfig was invalid', serviceConfigValidator.errors?.map(formatError));
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Prepare a `ServiceConfig` object update, validating the overall structure
|
|
59
|
-
* and encrypting the `ServiceAuthentication` object.
|
|
60
|
-
*/
|
|
61
|
-
export function prepareServiceUpdate(encryptFn, decryptFn, projectSchema, serviceConfigUpdate, serviceKey) {
|
|
62
|
-
const storedServiceConfig = getStoredServiceConfig(projectSchema, serviceKey);
|
|
63
|
-
let newServiceConfig = serviceConfigUpdate;
|
|
64
|
-
if (storedServiceConfig) {
|
|
65
|
-
const existingServiceConfig = decryptServiceConfig(decryptFn, storedServiceConfig);
|
|
66
|
-
newServiceConfig = mergeWithArrayMerge(existingServiceConfig, serviceConfigUpdate);
|
|
67
|
-
}
|
|
68
|
-
const { authentication, authenticationType } = newServiceConfig;
|
|
69
|
-
if (authenticationType === 'none' || isNull(authentication)) {
|
|
70
|
-
// biome-ignore lint/performance/noDelete: Property presence may matter here
|
|
71
|
-
delete newServiceConfig.authentication;
|
|
72
|
-
}
|
|
73
|
-
else if (authentication !== undefined) {
|
|
74
|
-
// Add the discriminator to the authentication object, set authenticationType
|
|
75
|
-
// to ensure the update is correct for the auth type.
|
|
76
|
-
newServiceConfig.authentication = {
|
|
77
|
-
...authentication,
|
|
78
|
-
type: authenticationType
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
validateServiceConfig(newServiceConfig);
|
|
82
|
-
let serviceConfig;
|
|
83
|
-
if (newServiceConfig.authentication) {
|
|
84
|
-
serviceConfig = {
|
|
85
|
-
...newServiceConfig,
|
|
86
|
-
authentication: encryptFn(newServiceConfig.authentication)
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
serviceConfig = newServiceConfig;
|
|
91
|
-
}
|
|
92
|
-
return serviceConfig;
|
|
93
|
-
}
|
|
94
|
-
export function getServiceObjectFields(projectSchema, shape, provider) {
|
|
95
|
-
return (getServiceInfo(projectSchema, shape)[provider] ?? []).filter((serviceInfo) => serviceInfo.generators[SERVICE_OBJECT_PATTERN_NAME]);
|
|
96
|
-
}
|
|
97
|
-
// Returns info for all services found in shape, keyed by provider
|
|
98
|
-
export function getServiceInfo(projectSchema, shape) {
|
|
99
|
-
const result = {};
|
|
100
|
-
// Get inline dependencies by not following refs with @resolver
|
|
101
|
-
const inlineDepShapes = getShapeDependencies(projectSchema, shape, (prop) => !prop['@resolver']).map((name) => projectSchema.shapes[name]);
|
|
102
|
-
const shapesToCheck = [shape, ...inlineDepShapes];
|
|
103
|
-
for (const thisShape of shapesToCheck) {
|
|
104
|
-
// biome-ignore lint/complexity/noForEach: Types for createSchemaPropertyList do not include the iterator
|
|
105
|
-
createSchemaPropertyList(projectSchema, thisShape).forEach(([key, value]) => {
|
|
106
|
-
const resolver = value['@resolver'];
|
|
107
|
-
if (!isServiceResolver(resolver)) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
const serviceConfig = getStoredServiceConfig(projectSchema, resolver.service);
|
|
111
|
-
if (!serviceConfig) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
const { provider } = serviceConfig;
|
|
115
|
-
const generators = {};
|
|
116
|
-
const tag = value['@tag'];
|
|
117
|
-
if (tag?.startsWith(SERVICE_OBJECT_PATTERN_NAME)) {
|
|
118
|
-
const idFieldName = getServiceIdFieldName(key);
|
|
119
|
-
const version = tag.substr(Number(tag.lastIndexOf(':')) + 1);
|
|
120
|
-
generators[SERVICE_OBJECT_PATTERN_NAME] = {
|
|
121
|
-
version,
|
|
122
|
-
currentVersion: getGeneratorVersion(SERVICE_OBJECT_PATTERN_NAME),
|
|
123
|
-
idFieldName,
|
|
124
|
-
serviceObjectType: resolver.fieldName
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
const serviceInfo = {
|
|
128
|
-
service: resolver.service,
|
|
129
|
-
fieldName: key,
|
|
130
|
-
path: pathBetween(shape, thisShape, projectSchema),
|
|
131
|
-
generators
|
|
132
|
-
};
|
|
133
|
-
if (Array.isArray(result[provider])) {
|
|
134
|
-
// Dedupe service info
|
|
135
|
-
if (!result[provider].find((existingServiceInfo) => isEqual(existingServiceInfo, serviceInfo))) {
|
|
136
|
-
result[provider].push(serviceInfo);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
result[provider] = [serviceInfo];
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
return result;
|
|
145
|
-
}
|
package/dist/services/types.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Decrypt an encrypted authentication JSON string
|
|
3
|
-
* Throws an error if decryption fails
|
|
4
|
-
*/
|
|
5
|
-
export type DecryptFn = (authentication: string) => object;
|
|
6
|
-
/**
|
|
7
|
-
* Decrypt an encrypted authentication JSON string
|
|
8
|
-
* Returns undefined if decryption fails
|
|
9
|
-
*/
|
|
10
|
-
export type SafeDecryptFn = (authentication: string) => object | undefined;
|
|
11
|
-
export type EncryptFn = (authentication: object) => string;
|
package/dist/services/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/services/util.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ProjectSchemaJSON, Resolver, ServiceConfig, ServiceConfigJSON } from '../project-schema/index.ts';
|
|
2
|
-
import type { ServiceKey } from '../types/types.ts';
|
|
3
|
-
/**
|
|
4
|
-
* Get a service config from a project schema.
|
|
5
|
-
*/
|
|
6
|
-
export declare function getStoredServiceConfig(projectSchema: ProjectSchemaJSON, serviceKey: ServiceKey): ServiceConfigJSON | undefined;
|
|
7
|
-
/**
|
|
8
|
-
* Get a `Map` keyed with all the service namespaces.
|
|
9
|
-
*
|
|
10
|
-
* @param context A partial project schema
|
|
11
|
-
*
|
|
12
|
-
* @returns A `Map` with namespaces as keys, and service keys as values.
|
|
13
|
-
*/
|
|
14
|
-
export declare function getServiceNamespaces(context: Pick<ProjectSchemaJSON, 'services'>): Map<string, string>;
|
|
15
|
-
export declare function isMissingAuth(service: Pick<ServiceConfig | ServiceConfigJSON, 'authenticationType' | 'authentication'>): boolean;
|
|
16
|
-
export declare function getResolverServices(resolver: Resolver): string[];
|
package/dist/services/util.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { isDefined } from '@takeshape/util';
|
|
2
|
-
import isEmpty from 'lodash/isEmpty.js';
|
|
3
|
-
import uniq from 'lodash/uniq.js';
|
|
4
|
-
/**
|
|
5
|
-
* Get a service config from a project schema.
|
|
6
|
-
*/
|
|
7
|
-
export function getStoredServiceConfig(projectSchema, serviceKey) {
|
|
8
|
-
return projectSchema.services?.[serviceKey];
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Get a `Map` keyed with all the service namespaces.
|
|
12
|
-
*
|
|
13
|
-
* @param context A partial project schema
|
|
14
|
-
*
|
|
15
|
-
* @returns A `Map` with namespaces as keys, and service keys as values.
|
|
16
|
-
*/
|
|
17
|
-
export function getServiceNamespaces(context) {
|
|
18
|
-
const namespaces = new Map();
|
|
19
|
-
const { services } = context;
|
|
20
|
-
if (services) {
|
|
21
|
-
for (const serviceKey of Object.keys(services)) {
|
|
22
|
-
const namespace = services[serviceKey]?.namespace;
|
|
23
|
-
if (namespace) {
|
|
24
|
-
namespaces.set(namespace, serviceKey);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return namespaces;
|
|
29
|
-
}
|
|
30
|
-
export function isMissingAuth(service) {
|
|
31
|
-
return service.authenticationType !== 'none' && isEmpty(service.authentication);
|
|
32
|
-
}
|
|
33
|
-
export function getResolverServices(resolver) {
|
|
34
|
-
const resolverArray = 'compose' in resolver ? resolver.compose : [resolver];
|
|
35
|
-
return uniq(resolverArray.map((resolver) => ('service' in resolver ? resolver.service : undefined)).filter(isDefined));
|
|
36
|
-
}
|
package/dist/shape-paths.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { ProjectSchemaJSON, ShapeJSON } from './project-schema/latest.ts';
|
|
2
|
-
export interface GetShapePathsArgs {
|
|
3
|
-
includeRoot?: boolean;
|
|
4
|
-
prefix?: string;
|
|
5
|
-
depthLimit?: number;
|
|
6
|
-
}
|
|
7
|
-
export declare function getShapePaths(projectSchema: ProjectSchemaJSON, shape: ShapeJSON, args?: GetShapePathsArgs): string[];
|
package/dist/shape-paths.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { dereferenceSchema } from "./refs.js";
|
|
2
|
-
import { isArraySchema, isObjectSchema } from "./types/utils.js";
|
|
3
|
-
export function getShapePaths(projectSchema, shape, args = {}) {
|
|
4
|
-
const { includeRoot = false, prefix = '', depthLimit = 2 } = args;
|
|
5
|
-
const options = [];
|
|
6
|
-
const visit = (propertySchema, path, depth) => {
|
|
7
|
-
if (depth > depthLimit) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
if (depth !== 0 || includeRoot) {
|
|
11
|
-
options.push(path.join('.'));
|
|
12
|
-
}
|
|
13
|
-
const schema = dereferenceSchema(projectSchema, propertySchema);
|
|
14
|
-
if (isArraySchema(schema)) {
|
|
15
|
-
if (isObjectSchema(schema.items)) {
|
|
16
|
-
visit(schema.items, path, depth + 1);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
else if (isObjectSchema(schema)) {
|
|
20
|
-
for (const [name, propSchema] of Object.entries(schema.properties)) {
|
|
21
|
-
const newPath = [...path, propSchema.type === 'array' ? `${name}[0]` : name];
|
|
22
|
-
visit(propSchema, newPath, depth + 1);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
visit(shape.schema, prefix ? [prefix] : [], 0);
|
|
27
|
-
return options;
|
|
28
|
-
}
|