@takeshape/schema 11.144.1 → 11.154.2
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
package/dist/refs.js
DELETED
|
@@ -1,616 +0,0 @@
|
|
|
1
|
-
import { NotFoundError } from '@takeshape/errors';
|
|
2
|
-
import { deepCloneWith, ensureArray, isDefined, isIntegerLike, isIterableObject, isRecord, visit } from '@takeshape/util';
|
|
3
|
-
import compact from 'lodash/compact.js';
|
|
4
|
-
import assign from 'lodash/fp/assign.js';
|
|
5
|
-
import omit from 'lodash/fp/omit.js';
|
|
6
|
-
import get from 'lodash/get.js';
|
|
7
|
-
import isString from 'lodash/isString.js';
|
|
8
|
-
import { isScalar } from "./scalars.js";
|
|
9
|
-
import { getServiceNamespaces } from "./services/util.js";
|
|
10
|
-
import { isAllOfSchema, isExtendsSchema, isObjectSchema, isOneOfSchema, isRefSchema, isRefSchemaLegacy } from "./types/index.js";
|
|
11
|
-
import { mergeDeepObjectSchemas, mergeObjectSchemas } from "./util/merge.js";
|
|
12
|
-
import { getShape } from "./util/shapes.js";
|
|
13
|
-
export const LOCAL_LAYER_ID = 'local';
|
|
14
|
-
const templateShapeRegex = /^(\w+)<([\w:-]+)>$/;
|
|
15
|
-
/**
|
|
16
|
-
* Parse a template like `PaginatedList<Post>` and return both the template and the shape name.
|
|
17
|
-
*/
|
|
18
|
-
export function parseTemplateShape(shapeExpression) {
|
|
19
|
-
const matches = templateShapeRegex.exec(shapeExpression);
|
|
20
|
-
if (matches) {
|
|
21
|
-
return { shapeName: matches[2], template: matches[1] };
|
|
22
|
-
}
|
|
23
|
-
return { shapeName: shapeExpression, template: undefined };
|
|
24
|
-
}
|
|
25
|
-
export function parseReturnShape(context, shape) {
|
|
26
|
-
if (typeof shape === 'object') {
|
|
27
|
-
if (isRefSchema(shape.items)) {
|
|
28
|
-
const ref = getRef(context, shape.items);
|
|
29
|
-
if (!ref) {
|
|
30
|
-
throw new Error(`Could not parse ${JSON.stringify(shape.items)}: invalid ref`);
|
|
31
|
-
}
|
|
32
|
-
return {
|
|
33
|
-
isArray: true,
|
|
34
|
-
ref,
|
|
35
|
-
shapeName: refItemToNamespacedShapeName(context, ref)
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
if (typeof shape.items.type !== 'string') {
|
|
39
|
-
throw new Error(`Could not parse ${JSON.stringify(shape.items)}: invalid type`);
|
|
40
|
-
}
|
|
41
|
-
return { isArray: true, shapeName: shape.items.type };
|
|
42
|
-
}
|
|
43
|
-
const ref = parseRef(context, shape);
|
|
44
|
-
const shapeName = refItemToNamespacedShapeName(context, ref);
|
|
45
|
-
return { isArray: false, shapeName, ref, template: ref.template };
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Convert Query.shape to a PropertySchema
|
|
49
|
-
*/
|
|
50
|
-
export function returnShapeToSchema(projectSchema, returnShape) {
|
|
51
|
-
if (typeof returnShape === 'string') {
|
|
52
|
-
if (isScalar(returnShape) || returnShape === 'object') {
|
|
53
|
-
return { type: returnShape };
|
|
54
|
-
}
|
|
55
|
-
return {
|
|
56
|
-
'@ref': serializeRef(parseRef(projectSchema, returnShape))
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
return returnShape;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Create a template string like `PaginatedList<Post>` from a template and shape name.
|
|
63
|
-
*/
|
|
64
|
-
export function createTemplateShapeName(template, shapeName) {
|
|
65
|
-
return `${template}<${shapeName}>`;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* If the string is a template like `PaginatedList<Post>`, return the shape name,
|
|
69
|
-
* in this case `Post`. Otherwise return the input.
|
|
70
|
-
*/
|
|
71
|
-
export const untemplate = (input) => {
|
|
72
|
-
return parseTemplateShape(input).shapeName;
|
|
73
|
-
};
|
|
74
|
-
export function getFlattenedTemplateShapeName(shapeName, template) {
|
|
75
|
-
return `${shapeName}${template ?? ''}`;
|
|
76
|
-
}
|
|
77
|
-
function $refToPath(ref) {
|
|
78
|
-
return ref.substr(2).split('/');
|
|
79
|
-
}
|
|
80
|
-
function $refToShapeName(ref) {
|
|
81
|
-
return $refToPath(ref)[1];
|
|
82
|
-
}
|
|
83
|
-
export function refSchemaToPath(context, refSchema) {
|
|
84
|
-
const refItem = getRef(context, refSchema);
|
|
85
|
-
if (refItem === undefined) {
|
|
86
|
-
throw new Error('Invalid ref in refSchemaToPath');
|
|
87
|
-
}
|
|
88
|
-
return refItemToShapePath(context, refItem);
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Safely turn a "template" shape reference (`@args`, `args`, `shape`) into a `RefItem`
|
|
92
|
-
*
|
|
93
|
-
* @param context A partial project schema
|
|
94
|
-
* @param refExpression
|
|
95
|
-
* A ref expression might include "template" name and refer to a local or remote
|
|
96
|
-
* shape, `Foo` or `CreateArgs<Foo>` or `CreateArgs<remote:Foo>`.*
|
|
97
|
-
*/
|
|
98
|
-
export function parseRef(context, refExpression) {
|
|
99
|
-
const { shapeName, template } = parseTemplateShape(refExpression);
|
|
100
|
-
if (shapeName.includes(':')) {
|
|
101
|
-
return refExpressionToRefItem(shapeName, template);
|
|
102
|
-
}
|
|
103
|
-
return shapeNameToRefItem(context, shapeName, template);
|
|
104
|
-
}
|
|
105
|
-
export function isRefEqual(context, a, b) {
|
|
106
|
-
const parsedA = typeof a === 'string' ? parseRef(context, a) : a;
|
|
107
|
-
const parsedB = typeof b === 'string' ? parseRef(context, b) : b;
|
|
108
|
-
return (parsedA.shapeName === parsedB.shapeName &&
|
|
109
|
-
parsedA.layerId === parsedB.layerId &&
|
|
110
|
-
parsedA.template === parsedB.template);
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Converts a list of ref expressions into a list of ref items.
|
|
114
|
-
*/
|
|
115
|
-
export function refExpressionListToRefItemList(context, refExpressionList) {
|
|
116
|
-
return refExpressionList.map((ref) => parseRef(context, ref));
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Sugar for converting a `refExpression` directly into a shape, without the
|
|
120
|
-
* intermediate `refItem`.
|
|
121
|
-
*
|
|
122
|
-
* @param context A partial project schema
|
|
123
|
-
* @param refExpression
|
|
124
|
-
* A ref expression might include "template" name and refer to a local or remote
|
|
125
|
-
* shape, `Foo` or `CreateArgs<Foo>` or `CreateArgs<remote:Foo>`.
|
|
126
|
-
*/
|
|
127
|
-
export function getShapeByRef(context, refExpression) {
|
|
128
|
-
return refItemToShape(context, parseRef(context, refExpression));
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Provided a service name and a referenced type. Supports 2 or 3 part
|
|
132
|
-
* references, e.g., `shopify:my-store:ProductInput` or `my-store:ProductInput`.
|
|
133
|
-
*
|
|
134
|
-
* @returns
|
|
135
|
-
* A 2 member array, where 0 is the service name, 1 is the referenced type.
|
|
136
|
-
*/
|
|
137
|
-
function splitRefExpression(ref) {
|
|
138
|
-
const index = ref.lastIndexOf(':');
|
|
139
|
-
const serviceKey = index === -1 ? LOCAL_LAYER_ID : ref.substring(0, index);
|
|
140
|
-
const referencedType = index === -1 ? ref : ref.substring(index + 1);
|
|
141
|
-
return [serviceKey, referencedType];
|
|
142
|
-
}
|
|
143
|
-
export function isValidServiceId(context, serviceId) {
|
|
144
|
-
return serviceId === LOCAL_LAYER_ID || Boolean(context.services?.[serviceId]);
|
|
145
|
-
}
|
|
146
|
-
export function isValidRefItem(context) {
|
|
147
|
-
return (refItem) => {
|
|
148
|
-
return isValidServiceId(context, refItem.layerId);
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Parses and returns a typeName, serviceKey, and potentially a namespace for
|
|
153
|
-
* the type.
|
|
154
|
-
*/
|
|
155
|
-
function refExpressionToRefItem(ref, template) {
|
|
156
|
-
const [serviceKey, typeName] = splitRefExpression(ref);
|
|
157
|
-
return {
|
|
158
|
-
shapeName: typeName,
|
|
159
|
-
layerId: serviceKey,
|
|
160
|
-
template
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
export function refToRefItem(context, $ref, template) {
|
|
164
|
-
return shapeNameToRefItem(context, $refToShapeName($ref), template);
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Parse a name (query, shape, etc) that might have a namespace and find the corresponding service layer id
|
|
168
|
-
*/
|
|
169
|
-
export function parseName(context, name) {
|
|
170
|
-
const shapeNameParts = name.split('_');
|
|
171
|
-
let layerId;
|
|
172
|
-
if (shapeNameParts.length > 1) {
|
|
173
|
-
const namespaces = getServiceNamespaces(context);
|
|
174
|
-
const maybeNamespace = shapeNameParts[0];
|
|
175
|
-
layerId = namespaces.get(maybeNamespace);
|
|
176
|
-
if (layerId) {
|
|
177
|
-
name = shapeNameParts.slice(1).join('_');
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return {
|
|
181
|
-
name,
|
|
182
|
-
layerId: layerId ?? LOCAL_LAYER_ID
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
function shapeNameToRefItem(context, shapeName, template) {
|
|
186
|
-
const parsed = parseName(context, shapeName);
|
|
187
|
-
return {
|
|
188
|
-
shapeName: parsed.name,
|
|
189
|
-
layerId: parsed.layerId,
|
|
190
|
-
template
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
export function shapeToRefItem(context, shape) {
|
|
194
|
-
return shapeNameToRefItem(context, shape.name);
|
|
195
|
-
}
|
|
196
|
-
export function shapeToRefString(context, shape) {
|
|
197
|
-
return serializeRef(shapeNameToRefItem(context, shape.name));
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Given a property schema and project schema, finds a `@ref` or `$ref` and
|
|
201
|
-
* returns a `RefItem` suitable for loading a referenced schema...
|
|
202
|
-
*/
|
|
203
|
-
export function getRef(context, refSchema) {
|
|
204
|
-
if (refSchema['@ref']) {
|
|
205
|
-
// @ref: my-service:ShapeName
|
|
206
|
-
const { shapeName, template } = parseTemplateShape(refSchema['@ref']);
|
|
207
|
-
return refExpressionToRefItem(shapeName, template);
|
|
208
|
-
}
|
|
209
|
-
if (refSchema.$ref) {
|
|
210
|
-
// $ref: #/shapes/[ShapeName OR Namespace_TypeName]/schema
|
|
211
|
-
return refToRefItem(context, refSchema.$ref);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
export function getRefWithPath(context, refSchema, schemaPath = []) {
|
|
215
|
-
const refItem = getRef(context, refSchema);
|
|
216
|
-
if (refItem) {
|
|
217
|
-
const refType = refSchema['@ref'] ? '@ref' : '$ref';
|
|
218
|
-
return {
|
|
219
|
-
...refItem,
|
|
220
|
-
path: schemaPath.concat([refType])
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Tests for a `@ref` or `$ref` property directly on the passed schema.
|
|
226
|
-
*
|
|
227
|
-
* @param schema Any schema that might could have a ref property.
|
|
228
|
-
*/
|
|
229
|
-
export function hasRefProperty(schema) {
|
|
230
|
-
return Boolean(schema['@ref'] ?? schema.$ref);
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* From a property that has oneOf or items with oneOf, get all refs
|
|
234
|
-
*/
|
|
235
|
-
export function getOneOfRefs(context, propertySchema, schemaPath = []) {
|
|
236
|
-
const oneOf = propertySchema.oneOf ?? propertySchema.items?.oneOf;
|
|
237
|
-
const path = propertySchema.oneOf ? schemaPath : [...schemaPath, 'items'];
|
|
238
|
-
if (oneOf) {
|
|
239
|
-
return compact(oneOf.map((one) => {
|
|
240
|
-
return getRefWithPath(context, one, path);
|
|
241
|
-
}));
|
|
242
|
-
}
|
|
243
|
-
return [];
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* From a schema with a ref, will return the top-level ref, and potentially
|
|
247
|
-
* a ref item from a nested `items` property.
|
|
248
|
-
*/
|
|
249
|
-
export function getRefOrItemsRef(context, refSchema, schemaPath = []) {
|
|
250
|
-
const refItem = getRefWithPath(context, refSchema, schemaPath);
|
|
251
|
-
if (refItem) {
|
|
252
|
-
return refItem;
|
|
253
|
-
}
|
|
254
|
-
if (refSchema.items) {
|
|
255
|
-
return getRefOrItemsRef(context, refSchema.items, schemaPath.concat(['items']));
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Turns a `RefItem` into an `@ref`.
|
|
260
|
-
*/
|
|
261
|
-
export function serializeRef(refItem) {
|
|
262
|
-
const shapeRef = formatShapeRef(refItem.layerId, refItem.shapeName);
|
|
263
|
-
return refItem.template ? createTemplateShapeName(refItem.template, shapeRef) : shapeRef;
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Turns a `RefItem` into a standard shape name, namespacing if present.
|
|
267
|
-
*/
|
|
268
|
-
export function refItemToNamespacedShapeName(context, refItem) {
|
|
269
|
-
const { shapeName, layerId } = refItem;
|
|
270
|
-
const namespace = getNamespace(context, layerId);
|
|
271
|
-
return namespace ? `${namespace}_${shapeName}` : shapeName;
|
|
272
|
-
}
|
|
273
|
-
export function refExpressionToNamespacedName(context, refExpression) {
|
|
274
|
-
return refItemToNamespacedShapeName(context, parseRef(context, refExpression));
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Turns a `RefItem` into a path suitable for `lodash.get`.
|
|
278
|
-
*/
|
|
279
|
-
export function refItemToShapePath(context, refItem) {
|
|
280
|
-
return ['shapes', refItemToNamespacedShapeName(context, refItem)];
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Get a Shape referenced by a `RefItem`.
|
|
284
|
-
*/
|
|
285
|
-
export function refItemToShape(context, refItem) {
|
|
286
|
-
const shapePath = refItemToShapePath(context, refItem);
|
|
287
|
-
return get(context, shapePath);
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Get all shapes referenced by a RefItem array.
|
|
291
|
-
*/
|
|
292
|
-
export function refItemListToShapeList(context, refItems) {
|
|
293
|
-
return refItems.map((ref) => refItemToShape(context, ref)).filter(isDefined);
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Get a shape referenced by a `RefItem`, also returning the path to the new shape.
|
|
297
|
-
*/
|
|
298
|
-
export function refItemToShapeWithPath(context, refItem) {
|
|
299
|
-
const shapePath = refItemToShapePath(context, refItem);
|
|
300
|
-
const shape = get(context, shapePath);
|
|
301
|
-
return shape ? { shape, path: shapePath } : undefined;
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Get a Shape schema referenced by a `RefItem`.
|
|
305
|
-
*/
|
|
306
|
-
export function refItemToShapeSchema(context, refItem) {
|
|
307
|
-
const shapePath = refItemToShapePath(context, refItem);
|
|
308
|
-
return get(context, [...shapePath, 'schema']);
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Sugar, for when you really just need a string...
|
|
312
|
-
*/
|
|
313
|
-
export function getRefShapeName(context, refSchema) {
|
|
314
|
-
const refItem = getRef(context, refSchema);
|
|
315
|
-
return refItem ? refItemToNamespacedShapeName(context, refItem) : undefined;
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* Sugar, for when you really just need a path...
|
|
319
|
-
*/
|
|
320
|
-
export function refSchemaToShapeSchemaPath(context, refSchema) {
|
|
321
|
-
const refItem = getRef(context, refSchema);
|
|
322
|
-
return refItem ? [...refItemToShapePath(context, refItem), 'schema'] : undefined;
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Helper fn to omit `ref` props from the target schema, and then extend it with the source schema.
|
|
326
|
-
*/
|
|
327
|
-
export const omitRefAndExtend = (targetSchema, sourceSchema) => assign(omit(['@ref', '$ref'], targetSchema), sourceSchema);
|
|
328
|
-
/**
|
|
329
|
-
* If there is a $ref, this will insert a property schema from the top level
|
|
330
|
-
* in place of the reference.
|
|
331
|
-
*/
|
|
332
|
-
export function followRef(context, schema, ref) {
|
|
333
|
-
const refItem = ref ?? getRef(context, schema);
|
|
334
|
-
if (refItem) {
|
|
335
|
-
const referencedSchema = refItemToShapeSchema(context, refItem);
|
|
336
|
-
if (referencedSchema) {
|
|
337
|
-
return omitRefAndExtend(schema, referencedSchema);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
return schema;
|
|
341
|
-
}
|
|
342
|
-
/**
|
|
343
|
-
* Returns whether a schema has refs.
|
|
344
|
-
*/
|
|
345
|
-
export function hasRef(schema) {
|
|
346
|
-
if (isRefSchema(schema) || isRefSchemaLegacy(schema)) {
|
|
347
|
-
return true;
|
|
348
|
-
}
|
|
349
|
-
if (isAllOfSchema(schema)) {
|
|
350
|
-
return Boolean(schema.allOf.find(hasRef));
|
|
351
|
-
}
|
|
352
|
-
if (isOneOfSchema(schema)) {
|
|
353
|
-
return Boolean(schema.oneOf.find(hasRef));
|
|
354
|
-
}
|
|
355
|
-
return false;
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* Returns whether a schema has refs which can be followed.
|
|
359
|
-
*/
|
|
360
|
-
export function hasResolvableRef(context, schema) {
|
|
361
|
-
if (isRefSchema(schema) || isRefSchemaLegacy(schema)) {
|
|
362
|
-
const ref = getRef(context, schema);
|
|
363
|
-
return Boolean(ref && refItemToShapeSchema(context, ref));
|
|
364
|
-
}
|
|
365
|
-
if (isAllOfSchema(schema)) {
|
|
366
|
-
return Boolean(schema.allOf.find((s) => hasResolvableRef(context, s)));
|
|
367
|
-
}
|
|
368
|
-
if (isOneOfSchema(schema)) {
|
|
369
|
-
return Boolean(schema.oneOf.find((s) => hasResolvableRef(context, s)));
|
|
370
|
-
}
|
|
371
|
-
return false;
|
|
372
|
-
}
|
|
373
|
-
function isSelfReferential(path, shapeName) {
|
|
374
|
-
if (path[0] !== 'shapes' || path[1] !== shapeName) {
|
|
375
|
-
return false;
|
|
376
|
-
}
|
|
377
|
-
const index = path.findIndex((part) => part === 'allOf' || part === 'extends');
|
|
378
|
-
return index !== -1 && isIntegerLike(path[Number(index) + 1]);
|
|
379
|
-
}
|
|
380
|
-
/**
|
|
381
|
-
* Given a schema, will resolve any `allOf` or `ref` objects. This function has
|
|
382
|
-
* to fully resolve all refs, because attempting to extend an object schema with
|
|
383
|
-
* a ref property would create an invalid schema, potentially containing both
|
|
384
|
-
* a ref and properties.
|
|
385
|
-
*
|
|
386
|
-
* If it can't create a valid schema it returns the input.
|
|
387
|
-
*/
|
|
388
|
-
export function dereferenceSchema(context, shapeOrFieldSchema, schemaPath = []) {
|
|
389
|
-
const resolveAll = (propertySchema, resolvePath) => {
|
|
390
|
-
try {
|
|
391
|
-
if (isAllOfSchema(propertySchema)) {
|
|
392
|
-
return merge(propertySchema.allOf, 'allOf', resolvePath);
|
|
393
|
-
}
|
|
394
|
-
if (isExtendsSchema(propertySchema)) {
|
|
395
|
-
return merge(propertySchema.extends, 'extends', resolvePath);
|
|
396
|
-
}
|
|
397
|
-
if (isRefSchema(propertySchema)) {
|
|
398
|
-
const refItem = getRefWithPath(context, propertySchema);
|
|
399
|
-
if (!refItem) {
|
|
400
|
-
throw new Error('ref could not be parsed');
|
|
401
|
-
}
|
|
402
|
-
const shapeWithPath = refItemToShapeWithPath(context, refItem);
|
|
403
|
-
if (shapeWithPath && !isSelfReferential(resolvePath, shapeWithPath.shape.name)) {
|
|
404
|
-
/**
|
|
405
|
-
* Pass the new shape's path rather than the parent's path, which
|
|
406
|
-
* will have been truncated to something opaque, like `@ref`.
|
|
407
|
-
*/
|
|
408
|
-
return resolveAll(omitRefAndExtend(propertySchema, shapeWithPath.shape.schema), shapeWithPath.path);
|
|
409
|
-
}
|
|
410
|
-
return;
|
|
411
|
-
}
|
|
412
|
-
return propertySchema;
|
|
413
|
-
}
|
|
414
|
-
catch (err) {
|
|
415
|
-
throw new Error(`error at '${resolvePath.join('.')}', ${err.message}`);
|
|
416
|
-
}
|
|
417
|
-
};
|
|
418
|
-
const merge = (schemas, propName, path) => {
|
|
419
|
-
const resolvedSchemas = schemas.map((schema, index) => {
|
|
420
|
-
const resolved = resolveAll(schema, [...path, propName, index]);
|
|
421
|
-
return resolved && isObjectSchema(resolved) ? resolved : undefined;
|
|
422
|
-
});
|
|
423
|
-
return (propName === 'allOf' ? mergeDeepObjectSchemas : mergeObjectSchemas)(...resolvedSchemas);
|
|
424
|
-
};
|
|
425
|
-
return resolveAll(shapeOrFieldSchema, schemaPath) ?? shapeOrFieldSchema;
|
|
426
|
-
}
|
|
427
|
-
export function dereferenceObjectSchema(context, shapeOrFieldSchema, schemaPath = []) {
|
|
428
|
-
const schema = dereferenceSchema(context, shapeOrFieldSchema, schemaPath);
|
|
429
|
-
if (!isObjectSchema(schema)) {
|
|
430
|
-
throw new Error(`provided schema at '${schemaPath.join('.')}' could not be resolved to an object schema`);
|
|
431
|
-
}
|
|
432
|
-
return schema;
|
|
433
|
-
}
|
|
434
|
-
function getNamespace(context, layerId) {
|
|
435
|
-
return context.services?.[layerId]?.namespace;
|
|
436
|
-
}
|
|
437
|
-
export function createGetNamespace(context) {
|
|
438
|
-
return (layerId) => getNamespace(context, layerId);
|
|
439
|
-
}
|
|
440
|
-
export function parsePropertyRef(refStr) {
|
|
441
|
-
const [layerId, coordinate] = splitRefExpression(refStr);
|
|
442
|
-
const coordinateParts = coordinate.split('.');
|
|
443
|
-
if (coordinateParts.length === 1 && coordinateParts[0]) {
|
|
444
|
-
return { layerId, shapeName: 'Query', propertyName: coordinateParts[0] };
|
|
445
|
-
}
|
|
446
|
-
if (coordinateParts.length === 2) {
|
|
447
|
-
return {
|
|
448
|
-
layerId,
|
|
449
|
-
shapeName: coordinateParts[0],
|
|
450
|
-
propertyName: coordinateParts[1]
|
|
451
|
-
};
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
export function serializePropertyRef({ shapeName, propertyName, layerId }) {
|
|
455
|
-
return formatShapeRef(layerId, `${shapeName}.${propertyName}`);
|
|
456
|
-
}
|
|
457
|
-
export function normalizePropertyRef(refStr) {
|
|
458
|
-
const parsed = parsePropertyRef(refStr);
|
|
459
|
-
return parsed ? serializePropertyRef(parsed) : refStr;
|
|
460
|
-
}
|
|
461
|
-
export function propertyRefToShapeRef(propertyRef) {
|
|
462
|
-
const parsed = parsePropertyRef(propertyRef);
|
|
463
|
-
return parsed && formatShapeRef(parsed.layerId, parsed.shapeName);
|
|
464
|
-
}
|
|
465
|
-
export function mappingToShapeRefs(prop) {
|
|
466
|
-
const mappings = prop['@mapping'];
|
|
467
|
-
if (mappings) {
|
|
468
|
-
const result = [];
|
|
469
|
-
for (const mapping of ensureArray(mappings)) {
|
|
470
|
-
const shapeRef = propertyRefToShapeRef(mapping);
|
|
471
|
-
if (shapeRef) {
|
|
472
|
-
result.push(shapeRef);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
return result;
|
|
476
|
-
}
|
|
477
|
-
return [];
|
|
478
|
-
}
|
|
479
|
-
export function formatShapeRef(layerId, shapeName) {
|
|
480
|
-
return layerId === LOCAL_LAYER_ID ? shapeName : `${layerId}:${shapeName}`;
|
|
481
|
-
}
|
|
482
|
-
export function applyNamespace(namespace, name) {
|
|
483
|
-
return namespace ? `${namespace}_${name}` : name;
|
|
484
|
-
}
|
|
485
|
-
export function propertyRefItemToResolverPath(getNamespace, item) {
|
|
486
|
-
const path = propertyRefItemToPath(getNamespace, item);
|
|
487
|
-
return path.concat(path[0] === 'shapes' ? '@resolver' : 'resolver');
|
|
488
|
-
}
|
|
489
|
-
export function propertyRefItemToArgsPath(getNamespace, item) {
|
|
490
|
-
const path = propertyRefItemToPath(getNamespace, item);
|
|
491
|
-
return path.concat(path[0] === 'shapes' ? '@args' : 'args');
|
|
492
|
-
}
|
|
493
|
-
export function propertyRefItemToPath(getNamespace, item) {
|
|
494
|
-
const { shapeName, layerId, propertyName } = item;
|
|
495
|
-
const namespace = getNamespace(layerId);
|
|
496
|
-
if (shapeName === 'Query' || shapeName === 'Mutation') {
|
|
497
|
-
return [shapeName === 'Query' ? 'queries' : 'mutations', applyNamespace(namespace, propertyName)];
|
|
498
|
-
}
|
|
499
|
-
return ['shapes', applyNamespace(namespace, shapeName), 'schema', 'properties', propertyName];
|
|
500
|
-
}
|
|
501
|
-
export function propertyRefToArgs(projectSchema, ref) {
|
|
502
|
-
const parsed = typeof ref === 'object' ? ref : parsePropertyRef(ref);
|
|
503
|
-
if (parsed) {
|
|
504
|
-
const path = propertyRefItemToArgsPath(createGetNamespace(projectSchema), parsed);
|
|
505
|
-
return get(projectSchema, path);
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
/**
|
|
509
|
-
* Get a ref to the given shape.
|
|
510
|
-
*/
|
|
511
|
-
export function normalizeRefExpression(context, refExpression) {
|
|
512
|
-
return serializeRef(parseRef(context, refExpression));
|
|
513
|
-
}
|
|
514
|
-
export function normalizeLocalRefString(ref) {
|
|
515
|
-
return ref.startsWith('local:') ? ref.substring(6) : ref;
|
|
516
|
-
}
|
|
517
|
-
export function getAllPropertyRefs(projectSchema) {
|
|
518
|
-
const result = [];
|
|
519
|
-
const parentIsResolver = (path, resolverName) => {
|
|
520
|
-
const parent = get(projectSchema, path.slice(0, -1));
|
|
521
|
-
return (isRecord(parent) &&
|
|
522
|
-
(Array.isArray(resolverName) ? resolverName.some((name) => name === parent.name) : parent.name === resolverName));
|
|
523
|
-
};
|
|
524
|
-
const parentIsGenerateState = (path) => {
|
|
525
|
-
if (path[0] !== 'agents' || path[path.length - 2] !== 'execution') {
|
|
526
|
-
return false;
|
|
527
|
-
}
|
|
528
|
-
const parent = get(projectSchema, path.slice(0, -1));
|
|
529
|
-
return isRecord(parent) && (parent.type === 'generate' || parent.type === 'chat');
|
|
530
|
-
};
|
|
531
|
-
const pushRef = (refStr) => {
|
|
532
|
-
const parsed = parsePropertyRef(refStr);
|
|
533
|
-
if (parsed) {
|
|
534
|
-
result.push(parsed);
|
|
535
|
-
}
|
|
536
|
-
};
|
|
537
|
-
visit(projectSchema, ['to', 'tools'], (value, path) => {
|
|
538
|
-
const propName = path[path.length - 1];
|
|
539
|
-
if (propName === 'to' && isString(value) && parentIsResolver(path, 'delegate')) {
|
|
540
|
-
pushRef(value);
|
|
541
|
-
}
|
|
542
|
-
else if (propName === 'tools') {
|
|
543
|
-
if (Array.isArray(value) &&
|
|
544
|
-
(parentIsGenerateState(path) || parentIsResolver(path, ['ai:generateText', 'ai:chat']))) {
|
|
545
|
-
const tools = value;
|
|
546
|
-
for (const tool of tools) {
|
|
547
|
-
pushRef(getToolRef(tool));
|
|
548
|
-
}
|
|
549
|
-
}
|
|
550
|
-
else if (isRecord(value) && (path[0] === 'agents' || path[0] === 'mcp')) {
|
|
551
|
-
for (const tool of Object.values(value)) {
|
|
552
|
-
pushRef(tool.ref);
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
});
|
|
557
|
-
return result;
|
|
558
|
-
}
|
|
559
|
-
export function getQuery(projectSchema, queryRef) {
|
|
560
|
-
const propertyRef = parsePropertyRef(queryRef);
|
|
561
|
-
if (!propertyRef || (propertyRef.shapeName !== 'Query' && propertyRef.shapeName !== 'Mutation')) {
|
|
562
|
-
throw new Error(`Invalid query ref "${queryRef}"`);
|
|
563
|
-
}
|
|
564
|
-
const path = propertyRefItemToPath(createGetNamespace(projectSchema), propertyRef);
|
|
565
|
-
const query = get(projectSchema, path);
|
|
566
|
-
return query ? { name: path[path.length - 1], query, ref: propertyRef } : undefined;
|
|
567
|
-
}
|
|
568
|
-
export function ensureQuery(projectSchema, queryRef) {
|
|
569
|
-
const query = getQuery(projectSchema, queryRef);
|
|
570
|
-
if (!query) {
|
|
571
|
-
throw new NotFoundError(`Query "${queryRef}" not found`);
|
|
572
|
-
}
|
|
573
|
-
return query;
|
|
574
|
-
}
|
|
575
|
-
export function normalizeRefs(projectSchema, property) {
|
|
576
|
-
return deepCloneWith(property ?? projectSchema, (value, _key, _parent, clone) => {
|
|
577
|
-
if (isIterableObject(value)) {
|
|
578
|
-
const ref = getRef(projectSchema, value);
|
|
579
|
-
if (ref) {
|
|
580
|
-
const { $ref, '@output': output, '@input': input, ...newRefSchema } = value;
|
|
581
|
-
newRefSchema['@ref'] = serializeRef(ref);
|
|
582
|
-
if (output) {
|
|
583
|
-
newRefSchema['@output'] = clone(output, '@output', value);
|
|
584
|
-
}
|
|
585
|
-
if (input) {
|
|
586
|
-
newRefSchema['@input'] = clone(input, '@input', value);
|
|
587
|
-
}
|
|
588
|
-
return newRefSchema;
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
});
|
|
592
|
-
}
|
|
593
|
-
/**
|
|
594
|
-
* Get a ShapeJSON from a RefItem, with the schema dereferenced.
|
|
595
|
-
*/
|
|
596
|
-
export function getReferencedShape(projectSchema, refItem, namespace) {
|
|
597
|
-
const shape = getShape(projectSchema, applyNamespace(namespace ?? getNamespace(projectSchema, refItem.layerId), refItem.shapeName));
|
|
598
|
-
if (shape) {
|
|
599
|
-
return {
|
|
600
|
-
...shape,
|
|
601
|
-
schema: dereferenceSchema(projectSchema, shape.schema, ['shapes', shape.name])
|
|
602
|
-
};
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
/**
|
|
606
|
-
* Get a PropertySchema from a RefItem.
|
|
607
|
-
*/
|
|
608
|
-
export function getReferencedShapeProperty(projectSchema, refItem, namespace) {
|
|
609
|
-
const shape = getReferencedShape(projectSchema, refItem, namespace ?? getNamespace(projectSchema, refItem.layerId));
|
|
610
|
-
if (shape && isObjectSchema(shape.schema)) {
|
|
611
|
-
return shape.schema.properties[refItem.propertyName];
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
export function getToolRef(tool) {
|
|
615
|
-
return typeof tool === 'string' ? tool : tool.ref;
|
|
616
|
-
}
|
package/dist/relationships.d.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import type { Maybe } from '@takeshape/util';
|
|
2
|
-
import type { ProjectSchemaJSON, PropertySchema, ShapeJSON, ShapeMap } from './project-schema/index.ts';
|
|
3
|
-
import type { LegacyRelationship, PropertySchemaWithRelationship, Relationship, RelationshipEnv, ShapeRefs } from './types/index.ts';
|
|
4
|
-
/**
|
|
5
|
-
* Turn a LegacyRelationship into a partial PropertySchemaWithRelationship.
|
|
6
|
-
*/
|
|
7
|
-
export declare function getRelationshipSchema(projectSchema: ProjectSchemaJSON, relationship: LegacyRelationship | Relationship): PropertySchemaWithRelationship;
|
|
8
|
-
/**
|
|
9
|
-
* Get a list of refs given a property schema with a relationship resolver.
|
|
10
|
-
*/
|
|
11
|
-
export declare function getRelationshipShapeRefs(propertySchema: PropertySchemaWithRelationship): ShapeRefs;
|
|
12
|
-
/**
|
|
13
|
-
* Get a list of shapes given a property schema with a relationship resolver.
|
|
14
|
-
*/
|
|
15
|
-
export declare function getRelationshipShapes(shapes: ShapeMap, refs: ShapeRefs): ShapeJSON[];
|
|
16
|
-
/**
|
|
17
|
-
* Get a list of shape ids given a property schema with a relationship resolver.
|
|
18
|
-
*/
|
|
19
|
-
export declare function getRelationshipShapeIds(shapes: ShapeMap, refs: ShapeRefs): string[];
|
|
20
|
-
/**
|
|
21
|
-
* Turn a Relationship into a LegacyRelationship object.
|
|
22
|
-
*/
|
|
23
|
-
export declare function getLegacyRelationship(projectSchema: ProjectSchemaJSON, relationship: Relationship): LegacyRelationship;
|
|
24
|
-
/**
|
|
25
|
-
* Get relationship details from a PropertySchema.
|
|
26
|
-
*/
|
|
27
|
-
export declare function getRelationship(propertySchema: PropertySchema): Maybe<Relationship>;
|
|
28
|
-
export declare function findExistingRelationships(projectSchema: ProjectSchemaJSON, shapes: ShapeMap): Record<string, RelationshipEnv[]>;
|
|
29
|
-
/**
|
|
30
|
-
* Test whether two PropertySchemas have equal relationships
|
|
31
|
-
*/
|
|
32
|
-
export declare function isEqualRelationship(a: PropertySchema, b: PropertySchema): boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Test whether an array of PropertySchemas have unequal relationships
|
|
35
|
-
*/
|
|
36
|
-
export declare function hasUnequalRelationships(relationships: PropertySchema[]): boolean;
|
|
37
|
-
/**
|
|
38
|
-
* Adds backreference fields to the schema.
|
|
39
|
-
*/
|
|
40
|
-
export declare function addRelatedFields(projectSchema: ProjectSchemaJSON, allRelationships: Record<string, RelationshipEnv[]>): ProjectSchemaJSON;
|