@microsoft/typespec-msgraph 0.0.1-Preview.2 → 0.0.1-Preview.20
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/dist/src/components/acceptable-media-types-annotation.d.ts +3 -4
- package/dist/src/components/acceptable-media-types-annotation.d.ts.map +1 -1
- package/dist/src/components/acceptable-media-types-annotation.js +2 -6
- package/dist/src/components/acceptable-media-types-annotation.js.map +1 -1
- package/dist/src/components/alternate-keys-annotation.d.ts +4 -4
- package/dist/src/components/alternate-keys-annotation.d.ts.map +1 -1
- package/dist/src/components/alternate-keys-annotation.js +9 -16
- package/dist/src/components/alternate-keys-annotation.js.map +1 -1
- package/dist/src/components/annotations.d.ts +12 -0
- package/dist/src/components/annotations.d.ts.map +1 -0
- package/dist/src/components/annotations.js +84 -0
- package/dist/src/components/annotations.js.map +1 -0
- package/dist/src/components/common-elements.d.ts +16 -74
- package/dist/src/components/common-elements.d.ts.map +1 -1
- package/dist/src/components/common-elements.js +12 -26
- package/dist/src/components/common-elements.js.map +1 -1
- package/dist/src/components/computed-annotation.d.ts +3 -4
- package/dist/src/components/computed-annotation.d.ts.map +1 -1
- package/dist/src/components/computed-annotation.js +4 -10
- package/dist/src/components/computed-annotation.js.map +1 -1
- package/dist/src/components/count-restrictions-annotation.d.ts +3 -4
- package/dist/src/components/count-restrictions-annotation.d.ts.map +1 -1
- package/dist/src/components/count-restrictions-annotation.js +4 -13
- package/dist/src/components/count-restrictions-annotation.js.map +1 -1
- package/dist/src/components/delta-annotation.d.ts +6 -0
- package/dist/src/components/delta-annotation.d.ts.map +1 -0
- package/dist/src/components/delta-annotation.js +18 -0
- package/dist/src/components/delta-annotation.js.map +1 -0
- package/dist/src/components/description-annotation.d.ts +3 -4
- package/dist/src/components/description-annotation.d.ts.map +1 -1
- package/dist/src/components/description-annotation.js +5 -11
- package/dist/src/components/description-annotation.js.map +1 -1
- package/dist/src/components/entity-container-element.d.ts +21 -0
- package/dist/src/components/entity-container-element.d.ts.map +1 -0
- package/dist/src/components/entity-container-element.js +28 -0
- package/dist/src/components/entity-container-element.js.map +1 -0
- package/dist/src/components/enum-type-element.d.ts +6 -0
- package/dist/src/components/enum-type-element.d.ts.map +1 -0
- package/dist/src/components/enum-type-element.js +20 -0
- package/dist/src/components/enum-type-element.js.map +1 -0
- package/dist/src/components/expand-restrictions-annotation.d.ts +4 -5
- package/dist/src/components/expand-restrictions-annotation.d.ts.map +1 -1
- package/dist/src/components/expand-restrictions-annotation.js +9 -30
- package/dist/src/components/expand-restrictions-annotation.js.map +1 -1
- package/dist/src/components/filter-restrictions-annotation.d.ts +6 -0
- package/dist/src/components/filter-restrictions-annotation.d.ts.map +1 -0
- package/dist/src/components/filter-restrictions-annotation.js +10 -0
- package/dist/src/components/filter-restrictions-annotation.js.map +1 -0
- package/dist/src/components/immutable-annotation.d.ts +5 -0
- package/dist/src/components/immutable-annotation.d.ts.map +1 -0
- package/dist/src/components/immutable-annotation.js +6 -0
- package/dist/src/components/immutable-annotation.js.map +1 -0
- package/dist/src/components/index.d.ts +2 -14
- package/dist/src/components/index.d.ts.map +1 -1
- package/dist/src/components/index.js +9 -14
- package/dist/src/components/index.js.map +1 -1
- package/dist/src/components/insert-restrictions-annotation.d.ts +6 -0
- package/dist/src/components/insert-restrictions-annotation.d.ts.map +1 -0
- package/dist/src/components/insert-restrictions-annotation.js +10 -0
- package/dist/src/components/insert-restrictions-annotation.js.map +1 -0
- package/dist/src/components/is-url-annotation.d.ts +5 -0
- package/dist/src/components/is-url-annotation.d.ts.map +1 -0
- package/dist/src/components/is-url-annotation.js +6 -0
- package/dist/src/components/is-url-annotation.js.map +1 -0
- package/dist/src/components/open-property-type-constraint-annotation-element.d.ts +5 -0
- package/dist/src/components/open-property-type-constraint-annotation-element.d.ts.map +1 -0
- package/dist/src/components/open-property-type-constraint-annotation-element.js +7 -0
- package/dist/src/components/open-property-type-constraint-annotation-element.js.map +1 -0
- package/dist/src/components/operation-element.d.ts +6 -0
- package/dist/src/components/operation-element.d.ts.map +1 -0
- package/dist/src/components/operation-element.js +83 -0
- package/dist/src/components/operation-element.js.map +1 -0
- package/dist/src/components/permissions-annotation.d.ts +3 -4
- package/dist/src/components/permissions-annotation.d.ts.map +1 -1
- package/dist/src/components/permissions-annotation.js +2 -10
- package/dist/src/components/permissions-annotation.js.map +1 -1
- package/dist/src/components/property-element.d.ts +4 -4
- package/dist/src/components/property-element.d.ts.map +1 -1
- package/dist/src/components/property-element.js +20 -32
- package/dist/src/components/property-element.js.map +1 -1
- package/dist/src/components/reference-target-element.d.ts +9 -0
- package/dist/src/components/reference-target-element.d.ts.map +1 -0
- package/dist/src/components/reference-target-element.js +3 -0
- package/dist/src/components/reference-target-element.js.map +1 -0
- package/dist/src/components/revisions-annotation.d.ts +4 -5
- package/dist/src/components/revisions-annotation.d.ts.map +1 -1
- package/dist/src/components/revisions-annotation.js +8 -51
- package/dist/src/components/revisions-annotation.js.map +1 -1
- package/dist/src/components/schema-element.d.ts +6 -0
- package/dist/src/components/schema-element.d.ts.map +1 -0
- package/dist/src/components/schema-element.js +44 -0
- package/dist/src/components/schema-element.js.map +1 -0
- package/dist/src/components/search-restrictions-annotation.d.ts +3 -4
- package/dist/src/components/search-restrictions-annotation.d.ts.map +1 -1
- package/dist/src/components/search-restrictions-annotation.js +4 -13
- package/dist/src/components/search-restrictions-annotation.js.map +1 -1
- package/dist/src/components/select-supported-annotation.d.ts +5 -0
- package/dist/src/components/select-supported-annotation.d.ts.map +1 -0
- package/dist/src/components/select-supported-annotation.js +6 -0
- package/dist/src/components/select-supported-annotation.js.map +1 -0
- package/dist/src/components/skip-supported-annotation.d.ts +3 -4
- package/dist/src/components/skip-supported-annotation.d.ts.map +1 -1
- package/dist/src/components/skip-supported-annotation.js +2 -11
- package/dist/src/components/skip-supported-annotation.js.map +1 -1
- package/dist/src/components/sort-restrictions-annotation.d.ts +4 -5
- package/dist/src/components/sort-restrictions-annotation.d.ts.map +1 -1
- package/dist/src/components/sort-restrictions-annotation.js +9 -30
- package/dist/src/components/sort-restrictions-annotation.js.map +1 -1
- package/dist/src/components/structured-type-element.d.ts +7 -4
- package/dist/src/components/structured-type-element.d.ts.map +1 -1
- package/dist/src/components/structured-type-element.js +26 -66
- package/dist/src/components/structured-type-element.js.map +1 -1
- package/dist/src/components/term-element.d.ts +9 -0
- package/dist/src/components/term-element.d.ts.map +1 -0
- package/dist/src/components/term-element.js +8 -0
- package/dist/src/components/term-element.js.map +1 -0
- package/dist/src/components/top-supported-annotation.d.ts +3 -4
- package/dist/src/components/top-supported-annotation.d.ts.map +1 -1
- package/dist/src/components/top-supported-annotation.js +3 -10
- package/dist/src/components/top-supported-annotation.js.map +1 -1
- package/dist/src/components/update-restrictions-annotation.d.ts +6 -0
- package/dist/src/components/update-restrictions-annotation.d.ts.map +1 -0
- package/dist/src/components/update-restrictions-annotation.js +8 -0
- package/dist/src/components/update-restrictions-annotation.js.map +1 -0
- package/dist/src/decorators/abstract.d.ts.map +1 -1
- package/dist/src/decorators/abstract.js +0 -6
- package/dist/src/decorators/abstract.js.map +1 -1
- package/dist/src/decorators/action.d.ts +10 -0
- package/dist/src/decorators/action.d.ts.map +1 -0
- package/dist/src/decorators/action.js +16 -0
- package/dist/src/decorators/action.js.map +1 -0
- package/dist/src/decorators/{handlers/custom/additional-query-parameters.d.ts → additional-query-parameters.d.ts} +3 -1
- package/dist/src/decorators/additional-query-parameters.d.ts.map +1 -0
- package/dist/src/decorators/additional-query-parameters.js +21 -0
- package/dist/src/decorators/additional-query-parameters.js.map +1 -0
- package/dist/src/decorators/address-url-msa.d.ts +12 -0
- package/dist/src/decorators/address-url-msa.d.ts.map +1 -0
- package/dist/src/decorators/address-url-msa.js +19 -0
- package/dist/src/decorators/address-url-msa.js.map +1 -0
- package/dist/src/decorators/address-url.d.ts +18 -0
- package/dist/src/decorators/address-url.d.ts.map +1 -0
- package/dist/src/decorators/address-url.js +21 -0
- package/dist/src/decorators/address-url.js.map +1 -0
- package/dist/src/decorators/ags-attribute.d.ts +17 -0
- package/dist/src/decorators/ags-attribute.d.ts.map +1 -0
- package/dist/src/decorators/ags-attribute.js +153 -0
- package/dist/src/decorators/ags-attribute.js.map +1 -0
- package/dist/src/decorators/allowed-values.d.ts +15 -0
- package/dist/src/decorators/allowed-values.d.ts.map +1 -0
- package/dist/src/decorators/allowed-values.js +37 -0
- package/dist/src/decorators/allowed-values.js.map +1 -0
- package/dist/src/decorators/complex.d.ts +2 -0
- package/dist/src/decorators/complex.d.ts.map +1 -1
- package/dist/src/decorators/complex.js +2 -6
- package/dist/src/decorators/complex.js.map +1 -1
- package/dist/src/decorators/computed.d.ts +2 -0
- package/dist/src/decorators/computed.d.ts.map +1 -1
- package/dist/src/decorators/computed.js +2 -0
- package/dist/src/decorators/computed.js.map +1 -1
- package/dist/src/decorators/count.d.ts +2 -0
- package/dist/src/decorators/count.d.ts.map +1 -1
- package/dist/src/decorators/count.js +2 -0
- package/dist/src/decorators/count.js.map +1 -1
- package/dist/src/decorators/delta-collection.d.ts +8 -0
- package/dist/src/decorators/delta-collection.d.ts.map +1 -0
- package/dist/src/decorators/delta-collection.js +12 -0
- package/dist/src/decorators/delta-collection.js.map +1 -0
- package/dist/src/decorators/delta.d.ts +10 -0
- package/dist/src/decorators/delta.d.ts.map +1 -0
- package/dist/src/decorators/delta.js +14 -0
- package/dist/src/decorators/delta.js.map +1 -0
- package/dist/src/decorators/entity.d.ts +2 -0
- package/dist/src/decorators/entity.d.ts.map +1 -1
- package/dist/src/decorators/entity.js +2 -6
- package/dist/src/decorators/entity.js.map +1 -1
- package/dist/src/decorators/expand.d.ts +1 -0
- package/dist/src/decorators/expand.d.ts.map +1 -1
- package/dist/src/decorators/expand.js +5 -1
- package/dist/src/decorators/expand.js.map +1 -1
- package/dist/src/decorators/experimental.d.ts +9 -0
- package/dist/src/decorators/experimental.d.ts.map +1 -0
- package/dist/src/decorators/experimental.js +13 -0
- package/dist/src/decorators/experimental.js.map +1 -0
- package/dist/src/decorators/filter.d.ts +13 -0
- package/dist/src/decorators/filter.d.ts.map +1 -0
- package/dist/src/decorators/filter.js +29 -0
- package/dist/src/decorators/filter.js.map +1 -0
- package/dist/src/decorators/flags.d.ts +9 -0
- package/dist/src/decorators/flags.d.ts.map +1 -0
- package/dist/src/decorators/flags.js +13 -0
- package/dist/src/decorators/flags.js.map +1 -0
- package/dist/src/decorators/function.d.ts +15 -0
- package/dist/src/decorators/function.d.ts.map +1 -0
- package/dist/src/decorators/function.js +19 -0
- package/dist/src/decorators/function.js.map +1 -0
- package/dist/src/decorators/global-operation.d.ts +9 -0
- package/dist/src/decorators/global-operation.d.ts.map +1 -0
- package/dist/src/decorators/global-operation.js +13 -0
- package/dist/src/decorators/global-operation.js.map +1 -0
- package/dist/src/decorators/graph-deprecated.d.ts +11 -0
- package/dist/src/decorators/graph-deprecated.d.ts.map +1 -0
- package/dist/src/decorators/graph-deprecated.js +19 -0
- package/dist/src/decorators/graph-deprecated.js.map +1 -0
- package/dist/src/decorators/graph-route.d.ts +18 -0
- package/dist/src/decorators/graph-route.d.ts.map +1 -0
- package/dist/src/decorators/graph-route.js +109 -0
- package/dist/src/decorators/graph-route.js.map +1 -0
- package/dist/src/decorators/immutable.d.ts +8 -0
- package/dist/src/decorators/immutable.d.ts.map +1 -0
- package/dist/src/decorators/immutable.js +12 -0
- package/dist/src/decorators/immutable.js.map +1 -0
- package/dist/src/decorators/index.d.ts +35 -1
- package/dist/src/decorators/index.d.ts.map +1 -1
- package/dist/src/decorators/index.js +35 -1
- package/dist/src/decorators/index.js.map +1 -1
- package/dist/src/decorators/is-owner.d.ts +10 -0
- package/dist/src/decorators/is-owner.d.ts.map +1 -0
- package/dist/src/decorators/is-owner.js +17 -0
- package/dist/src/decorators/is-owner.js.map +1 -0
- package/dist/src/decorators/limited-charset.d.ts +9 -0
- package/dist/src/decorators/limited-charset.d.ts.map +1 -0
- package/dist/src/decorators/limited-charset.js +13 -0
- package/dist/src/decorators/limited-charset.js.map +1 -0
- package/dist/src/decorators/media.d.ts +10 -0
- package/dist/src/decorators/media.d.ts.map +1 -0
- package/dist/src/decorators/media.js +16 -0
- package/dist/src/decorators/media.js.map +1 -0
- package/dist/src/decorators/open.d.ts.map +1 -1
- package/dist/src/decorators/open.js +0 -6
- package/dist/src/decorators/open.js.map +1 -1
- package/dist/src/decorators/{routed-interfaces.d.ts → operation-parameters.d.ts} +3 -11
- package/dist/src/decorators/operation-parameters.d.ts.map +1 -0
- package/dist/src/decorators/operation-parameters.js +15 -0
- package/dist/src/decorators/operation-parameters.js.map +1 -0
- package/dist/src/decorators/order-by.d.ts +2 -0
- package/dist/src/decorators/order-by.d.ts.map +1 -1
- package/dist/src/decorators/order-by.js +2 -0
- package/dist/src/decorators/order-by.js.map +1 -1
- package/dist/src/decorators/ownerless.d.ts +8 -0
- package/dist/src/decorators/ownerless.d.ts.map +1 -0
- package/dist/src/decorators/ownerless.js +12 -0
- package/dist/src/decorators/ownerless.js.map +1 -0
- package/dist/src/decorators/paged-collection.d.ts +8 -0
- package/dist/src/decorators/paged-collection.d.ts.map +1 -0
- package/dist/src/decorators/paged-collection.js +12 -0
- package/dist/src/decorators/paged-collection.js.map +1 -0
- package/dist/src/decorators/partial.d.ts +12 -0
- package/dist/src/decorators/partial.d.ts.map +1 -0
- package/dist/src/decorators/partial.js +18 -0
- package/dist/src/decorators/partial.js.map +1 -0
- package/dist/src/decorators/passthrough-address-url-msa.d.ts +11 -0
- package/dist/src/decorators/passthrough-address-url-msa.d.ts.map +1 -0
- package/dist/src/decorators/passthrough-address-url-msa.js +17 -0
- package/dist/src/decorators/passthrough-address-url-msa.js.map +1 -0
- package/dist/src/decorators/passthrough-address-url.d.ts +11 -0
- package/dist/src/decorators/passthrough-address-url.d.ts.map +1 -0
- package/dist/src/decorators/passthrough-address-url.js +17 -0
- package/dist/src/decorators/passthrough-address-url.js.map +1 -0
- package/dist/src/decorators/private-preview-definition.d.ts +2 -0
- package/dist/src/decorators/private-preview-definition.d.ts.map +1 -1
- package/dist/src/decorators/private-preview-definition.js +2 -0
- package/dist/src/decorators/private-preview-definition.js.map +1 -1
- package/dist/src/decorators/private-preview.d.ts +2 -0
- package/dist/src/decorators/private-preview.d.ts.map +1 -1
- package/dist/src/decorators/private-preview.js +2 -10
- package/dist/src/decorators/private-preview.js.map +1 -1
- package/dist/src/decorators/privileged.d.ts +9 -0
- package/dist/src/decorators/privileged.d.ts.map +1 -0
- package/dist/src/decorators/privileged.js +13 -0
- package/dist/src/decorators/privileged.js.map +1 -0
- package/dist/src/decorators/public-namespace.d.ts +12 -0
- package/dist/src/decorators/public-namespace.d.ts.map +1 -0
- package/dist/src/decorators/public-namespace.js +21 -0
- package/dist/src/decorators/public-namespace.js.map +1 -0
- package/dist/src/decorators/reference-target.d.ts +16 -0
- package/dist/src/decorators/reference-target.d.ts.map +1 -0
- package/dist/src/decorators/reference-target.js +58 -0
- package/dist/src/decorators/reference-target.js.map +1 -0
- package/dist/src/decorators/required-for-create.d.ts +12 -0
- package/dist/src/decorators/required-for-create.d.ts.map +1 -0
- package/dist/src/decorators/required-for-create.js +16 -0
- package/dist/src/decorators/required-for-create.js.map +1 -0
- package/dist/src/decorators/return-source.d.ts +9 -0
- package/dist/src/decorators/return-source.d.ts.map +1 -0
- package/dist/src/decorators/return-source.js +26 -0
- package/dist/src/decorators/return-source.js.map +1 -0
- package/dist/src/decorators/search.d.ts +2 -0
- package/dist/src/decorators/search.d.ts.map +1 -1
- package/dist/src/decorators/search.js +2 -0
- package/dist/src/decorators/search.js.map +1 -1
- package/dist/src/decorators/select.d.ts +9 -0
- package/dist/src/decorators/select.d.ts.map +1 -0
- package/dist/src/decorators/select.js +13 -0
- package/dist/src/decorators/select.js.map +1 -0
- package/dist/src/decorators/skip.d.ts +2 -0
- package/dist/src/decorators/skip.d.ts.map +1 -1
- package/dist/src/decorators/skip.js +2 -0
- package/dist/src/decorators/skip.js.map +1 -1
- package/dist/src/decorators/term.d.ts +13 -0
- package/dist/src/decorators/term.d.ts.map +1 -0
- package/dist/src/decorators/term.js +14 -0
- package/dist/src/decorators/term.js.map +1 -0
- package/dist/src/decorators/top.d.ts +2 -0
- package/dist/src/decorators/top.d.ts.map +1 -1
- package/dist/src/decorators/top.js +2 -0
- package/dist/src/decorators/top.js.map +1 -1
- package/dist/src/decorators/workload-name-msa.d.ts +9 -0
- package/dist/src/decorators/workload-name-msa.d.ts.map +1 -0
- package/dist/src/decorators/workload-name-msa.js +13 -0
- package/dist/src/decorators/workload-name-msa.js.map +1 -0
- package/dist/src/decorators/workload-name.d.ts +9 -0
- package/dist/src/decorators/workload-name.d.ts.map +1 -0
- package/dist/src/decorators/workload-name.js +13 -0
- package/dist/src/decorators/workload-name.js.map +1 -0
- package/dist/src/decorators/workload-namespace.d.ts +10 -0
- package/dist/src/decorators/workload-namespace.d.ts.map +1 -0
- package/dist/src/decorators/workload-namespace.js +19 -0
- package/dist/src/decorators/workload-namespace.js.map +1 -0
- package/dist/src/dom/error-interceptor.d.ts +2 -0
- package/dist/src/dom/error-interceptor.d.ts.map +1 -0
- package/dist/src/dom/error-interceptor.js +13 -0
- package/dist/src/dom/error-interceptor.js.map +1 -0
- package/dist/src/dom/reconciler.js.map +1 -1
- package/dist/src/dom/renderer.d.ts +1 -0
- package/dist/src/dom/renderer.d.ts.map +1 -1
- package/dist/src/dom/renderer.js +1 -0
- package/dist/src/dom/renderer.js.map +1 -1
- package/dist/src/emitter.d.ts +2 -1
- package/dist/src/emitter.d.ts.map +1 -1
- package/dist/src/emitter.js +28 -3
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/entities/address-url.d.ts +8 -0
- package/dist/src/entities/address-url.d.ts.map +1 -0
- package/dist/src/entities/address-url.js +47 -0
- package/dist/src/entities/address-url.js.map +1 -0
- package/dist/src/entities/annotations.d.ts +48 -0
- package/dist/src/entities/annotations.d.ts.map +1 -0
- package/dist/src/entities/annotations.js +166 -0
- package/dist/src/entities/annotations.js.map +1 -0
- package/dist/src/entities/entity-container.d.ts +33 -0
- package/dist/src/entities/entity-container.d.ts.map +1 -0
- package/dist/src/entities/entity-container.js +56 -0
- package/dist/src/entities/entity-container.js.map +1 -0
- package/dist/src/entities/enum.d.ts +19 -0
- package/dist/src/entities/enum.d.ts.map +1 -0
- package/dist/src/entities/enum.js +27 -0
- package/dist/src/entities/enum.js.map +1 -0
- package/dist/src/entities/model.d.ts +62 -0
- package/dist/src/entities/model.d.ts.map +1 -0
- package/dist/src/entities/model.js +266 -0
- package/dist/src/entities/model.js.map +1 -0
- package/dist/src/entities/ms-graph-route.d.ts +13 -0
- package/dist/src/entities/ms-graph-route.d.ts.map +1 -0
- package/dist/src/entities/ms-graph-route.js +70 -0
- package/dist/src/entities/ms-graph-route.js.map +1 -0
- package/dist/src/entities/namespace.d.ts +29 -0
- package/dist/src/entities/namespace.d.ts.map +1 -0
- package/dist/src/entities/namespace.js +218 -0
- package/dist/src/entities/namespace.js.map +1 -0
- package/dist/src/entities/operation.d.ts +36 -0
- package/dist/src/entities/operation.d.ts.map +1 -0
- package/dist/src/entities/operation.js +146 -0
- package/dist/src/entities/operation.js.map +1 -0
- package/dist/src/entities/property.d.ts +3 -0
- package/dist/src/entities/property.d.ts.map +1 -0
- package/dist/src/entities/property.js +57 -0
- package/dist/src/entities/property.js.map +1 -0
- package/dist/src/entities/revision-definition.d.ts +10 -0
- package/dist/src/entities/revision-definition.d.ts.map +1 -0
- package/dist/src/entities/revision-definition.js +42 -0
- package/dist/src/entities/revision-definition.js.map +1 -0
- package/dist/src/entities/term.d.ts +8 -0
- package/dist/src/entities/term.d.ts.map +1 -0
- package/dist/src/entities/term.js +14 -0
- package/dist/src/entities/term.js.map +1 -0
- package/dist/src/index.d.ts +1 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts +128 -106
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +70 -10
- package/dist/src/lib.js.map +1 -1
- package/dist/src/linter.d.ts +1 -2
- package/dist/src/linter.d.ts.map +1 -1
- package/dist/src/linter.js +16 -34
- package/dist/src/linter.js.map +1 -1
- package/dist/src/rules/abstract.d.ts +2 -1
- package/dist/src/rules/abstract.d.ts.map +1 -1
- package/dist/src/rules/abstract.js +8 -8
- package/dist/src/rules/abstract.js.map +1 -1
- package/dist/src/rules/address-url.d.ts +19 -0
- package/dist/src/rules/address-url.d.ts.map +1 -0
- package/dist/src/rules/address-url.js +161 -0
- package/dist/src/rules/address-url.js.map +1 -0
- package/dist/src/rules/allowed-values.d.ts +7 -0
- package/dist/src/rules/allowed-values.d.ts.map +1 -0
- package/dist/src/rules/allowed-values.js +59 -0
- package/dist/src/rules/allowed-values.js.map +1 -0
- package/dist/src/rules/alternate-key.d.ts +4 -3
- package/dist/src/rules/alternate-key.d.ts.map +1 -1
- package/dist/src/rules/alternate-key.js +23 -23
- package/dist/src/rules/alternate-key.js.map +1 -1
- package/dist/src/rules/collection-navigation-properties-not-nullable.d.ts +3 -0
- package/dist/src/rules/collection-navigation-properties-not-nullable.d.ts.map +1 -0
- package/dist/src/rules/collection-navigation-properties-not-nullable.js +28 -0
- package/dist/src/rules/collection-navigation-properties-not-nullable.js.map +1 -0
- package/dist/src/rules/complex.d.ts +3 -0
- package/dist/src/rules/complex.d.ts.map +1 -0
- package/dist/src/rules/complex.js +27 -0
- package/dist/src/rules/complex.js.map +1 -0
- package/dist/src/rules/computed.d.ts +2 -3
- package/dist/src/rules/computed.d.ts.map +1 -1
- package/dist/src/rules/computed.js +14 -16
- package/dist/src/rules/computed.js.map +1 -1
- package/dist/src/rules/contains.d.ts +2 -1
- package/dist/src/rules/contains.d.ts.map +1 -1
- package/dist/src/rules/contains.js +9 -8
- package/dist/src/rules/contains.js.map +1 -1
- package/dist/src/rules/count.d.ts +2 -1
- package/dist/src/rules/count.d.ts.map +1 -1
- package/dist/src/rules/count.js +12 -9
- package/dist/src/rules/count.js.map +1 -1
- package/dist/src/rules/delta.d.ts +8 -0
- package/dist/src/rules/delta.d.ts.map +1 -0
- package/dist/src/rules/delta.js +204 -0
- package/dist/src/rules/delta.js.map +1 -0
- package/dist/src/rules/disallowed-typespec-decorators.d.ts +3 -0
- package/dist/src/rules/disallowed-typespec-decorators.d.ts.map +1 -0
- package/dist/src/rules/disallowed-typespec-decorators.js +37 -0
- package/dist/src/rules/disallowed-typespec-decorators.js.map +1 -0
- package/dist/src/rules/entity.d.ts +6 -1
- package/dist/src/rules/entity.d.ts.map +1 -1
- package/dist/src/rules/entity.js +177 -11
- package/dist/src/rules/entity.js.map +1 -1
- package/dist/src/rules/enum.d.ts +4 -0
- package/dist/src/rules/enum.d.ts.map +1 -0
- package/dist/src/rules/enum.js +29 -0
- package/dist/src/rules/enum.js.map +1 -0
- package/dist/src/rules/expand.d.ts +3 -2
- package/dist/src/rules/expand.d.ts.map +1 -1
- package/dist/src/rules/expand.js +29 -23
- package/dist/src/rules/expand.js.map +1 -1
- package/dist/src/rules/extends-on-same-type.d.ts +3 -0
- package/dist/src/rules/extends-on-same-type.d.ts.map +1 -0
- package/dist/src/rules/extends-on-same-type.js +39 -0
- package/dist/src/rules/extends-on-same-type.js.map +1 -0
- package/dist/src/rules/filter.d.ts +7 -0
- package/dist/src/rules/filter.d.ts.map +1 -0
- package/dist/src/rules/filter.js +160 -0
- package/dist/src/rules/filter.js.map +1 -0
- package/dist/src/rules/function.d.ts +3 -0
- package/dist/src/rules/function.d.ts.map +1 -0
- package/dist/src/rules/function.js +26 -0
- package/dist/src/rules/function.js.map +1 -0
- package/dist/src/rules/global-operation.d.ts +4 -0
- package/dist/src/rules/global-operation.d.ts.map +1 -0
- package/dist/src/rules/global-operation.js +60 -0
- package/dist/src/rules/global-operation.js.map +1 -0
- package/dist/src/rules/graph-deprecated.d.ts +8 -0
- package/dist/src/rules/graph-deprecated.d.ts.map +1 -0
- package/dist/src/rules/graph-deprecated.js +152 -0
- package/dist/src/rules/graph-deprecated.js.map +1 -0
- package/dist/src/rules/graph-route.d.ts +14 -0
- package/dist/src/rules/graph-route.d.ts.map +1 -0
- package/dist/src/rules/graph-route.js +225 -0
- package/dist/src/rules/graph-route.js.map +1 -0
- package/dist/src/rules/index.d.ts +25 -7
- package/dist/src/rules/index.d.ts.map +1 -1
- package/dist/src/rules/index.js +25 -162
- package/dist/src/rules/index.js.map +1 -1
- package/dist/src/rules/limited-charset.d.ts +3 -0
- package/dist/src/rules/limited-charset.d.ts.map +1 -0
- package/dist/src/rules/limited-charset.js +42 -0
- package/dist/src/rules/limited-charset.js.map +1 -0
- package/dist/src/rules/media.d.ts +10 -0
- package/dist/src/rules/media.d.ts.map +1 -0
- package/dist/src/rules/media.js +122 -0
- package/dist/src/rules/media.js.map +1 -0
- package/dist/src/rules/model.d.ts +4 -0
- package/dist/src/rules/model.d.ts.map +1 -0
- package/dist/src/rules/model.js +36 -0
- package/dist/src/rules/model.js.map +1 -0
- package/dist/src/rules/namespace.d.ts +6 -0
- package/dist/src/rules/namespace.d.ts.map +1 -0
- package/dist/src/rules/namespace.js +110 -0
- package/dist/src/rules/namespace.js.map +1 -0
- package/dist/src/rules/open.d.ts +2 -1
- package/dist/src/rules/open.d.ts.map +1 -1
- package/dist/src/rules/open.js +9 -8
- package/dist/src/rules/open.js.map +1 -1
- package/dist/src/rules/operation-inside-interface.d.ts +4 -0
- package/dist/src/rules/operation-inside-interface.d.ts.map +1 -0
- package/dist/src/rules/operation-inside-interface.js +62 -0
- package/dist/src/rules/operation-inside-interface.js.map +1 -0
- package/dist/src/rules/order-by.d.ts +3 -2
- package/dist/src/rules/order-by.d.ts.map +1 -1
- package/dist/src/rules/order-by.js +25 -24
- package/dist/src/rules/order-by.js.map +1 -1
- package/dist/src/rules/ownerless.d.ts +11 -0
- package/dist/src/rules/ownerless.d.ts.map +1 -0
- package/dist/src/rules/ownerless.js +171 -0
- package/dist/src/rules/ownerless.js.map +1 -0
- package/dist/src/rules/partial.d.ts +7 -0
- package/dist/src/rules/partial.d.ts.map +1 -0
- package/dist/src/rules/partial.js +52 -0
- package/dist/src/rules/partial.js.map +1 -0
- package/dist/src/rules/record-t.d.ts +5 -0
- package/dist/src/rules/record-t.d.ts.map +1 -0
- package/dist/src/rules/record-t.js +78 -0
- package/dist/src/rules/record-t.js.map +1 -0
- package/dist/src/rules/reference-target.d.ts +8 -0
- package/dist/src/rules/reference-target.d.ts.map +1 -0
- package/dist/src/rules/reference-target.js +118 -0
- package/dist/src/rules/reference-target.js.map +1 -0
- package/dist/src/rules/references.d.ts +2 -1
- package/dist/src/rules/references.d.ts.map +1 -1
- package/dist/src/rules/references.js +9 -8
- package/dist/src/rules/references.js.map +1 -1
- package/dist/src/rules/required-for-create.d.ts +3 -0
- package/dist/src/rules/required-for-create.d.ts.map +1 -0
- package/dist/src/rules/required-for-create.js +42 -0
- package/dist/src/rules/required-for-create.js.map +1 -0
- package/dist/src/rules/return-source.d.ts +3 -0
- package/dist/src/rules/return-source.d.ts.map +1 -0
- package/dist/src/rules/return-source.js +27 -0
- package/dist/src/rules/return-source.js.map +1 -0
- package/dist/src/rules/search.d.ts +2 -1
- package/dist/src/rules/search.d.ts.map +1 -1
- package/dist/src/rules/search.js +12 -9
- package/dist/src/rules/search.js.map +1 -1
- package/dist/src/rules/skip.d.ts +2 -1
- package/dist/src/rules/skip.d.ts.map +1 -1
- package/dist/src/rules/skip.js +12 -9
- package/dist/src/rules/skip.js.map +1 -1
- package/dist/src/rules/top.d.ts +2 -1
- package/dist/src/rules/top.d.ts.map +1 -1
- package/dist/src/rules/top.js +12 -9
- package/dist/src/rules/top.js.map +1 -1
- package/dist/src/testing/index.d.ts +1 -0
- package/dist/src/testing/index.d.ts.map +1 -1
- package/dist/src/testing/index.js +21 -0
- package/dist/src/testing/index.js.map +1 -1
- package/dist/src/utils.d.ts +59 -2
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +535 -12
- package/dist/src/utils.js.map +1 -1
- package/dist/src/validate.d.ts +3 -0
- package/dist/src/validate.d.ts.map +1 -0
- package/dist/src/validate.js +81 -0
- package/dist/src/validate.js.map +1 -0
- package/lib/bodies.tsp +71 -0
- package/lib/decorators.tsp +350 -40
- package/lib/deployment.tsp +18 -0
- package/lib/lib.tsp +9 -23
- package/lib/msgraph.tsp +5 -0
- package/lib/porcelain.tsp +190 -0
- package/lib/responses.tsp +59 -0
- package/lib/shared-models.tsp +25 -0
- package/package.json +42 -32
- package/dist/src/components/program-context.d.ts +0 -4
- package/dist/src/components/program-context.d.ts.map +0 -1
- package/dist/src/components/program-context.js +0 -3
- package/dist/src/components/program-context.js.map +0 -1
- package/dist/src/csdl.d.ts +0 -8
- package/dist/src/csdl.d.ts.map +0 -1
- package/dist/src/csdl.js +0 -298
- package/dist/src/csdl.js.map +0 -1
- package/dist/src/decorators/attribute-builder.d.ts +0 -2
- package/dist/src/decorators/attribute-builder.d.ts.map +0 -1
- package/dist/src/decorators/attribute-builder.js +0 -166
- package/dist/src/decorators/attribute-builder.js.map +0 -1
- package/dist/src/decorators/attributes.d.ts +0 -57
- package/dist/src/decorators/attributes.d.ts.map +0 -1
- package/dist/src/decorators/attributes.js +0 -50
- package/dist/src/decorators/attributes.js.map +0 -1
- package/dist/src/decorators/handlers/custom/additional-query-parameters.d.ts.map +0 -1
- package/dist/src/decorators/handlers/custom/additional-query-parameters.js +0 -36
- package/dist/src/decorators/handlers/custom/additional-query-parameters.js.map +0 -1
- package/dist/src/decorators/handlers/custom/ags-attribute.d.ts +0 -7
- package/dist/src/decorators/handlers/custom/ags-attribute.d.ts.map +0 -1
- package/dist/src/decorators/handlers/custom/ags-attribute.js +0 -36
- package/dist/src/decorators/handlers/custom/ags-attribute.js.map +0 -1
- package/dist/src/decorators/handlers/custom/index.d.ts +0 -3
- package/dist/src/decorators/handlers/custom/index.d.ts.map +0 -1
- package/dist/src/decorators/handlers/custom/index.js +0 -3
- package/dist/src/decorators/handlers/custom/index.js.map +0 -1
- package/dist/src/decorators/handlers/index.d.ts +0 -30
- package/dist/src/decorators/handlers/index.d.ts.map +0 -1
- package/dist/src/decorators/handlers/index.js +0 -121
- package/dist/src/decorators/handlers/index.js.map +0 -1
- package/dist/src/decorators/has-stream.d.ts +0 -11
- package/dist/src/decorators/has-stream.d.ts.map +0 -1
- package/dist/src/decorators/has-stream.js +0 -30
- package/dist/src/decorators/has-stream.js.map +0 -1
- package/dist/src/decorators/routed-interfaces.d.ts.map +0 -1
- package/dist/src/decorators/routed-interfaces.js +0 -43
- package/dist/src/decorators/routed-interfaces.js.map +0 -1
- package/dist/src/rules/has-stream.d.ts +0 -2
- package/dist/src/rules/has-stream.d.ts.map +0 -1
- package/dist/src/rules/has-stream.js +0 -29
- package/dist/src/rules/has-stream.js.map +0 -1
package/dist/src/utils.js
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
import { getNamespaceFullName, isArrayModelType, } from "@typespec/compiler";
|
|
2
|
-
import { getEntity, isEntity } from "./decorators/index.js";
|
|
1
|
+
import { getLocationContext, getNamespaceFullName, isArrayModelType, walkPropertiesInherited, } from "@typespec/compiler";
|
|
2
|
+
import { getEntity, getExpand, getFilter, getGraphRoutePaths, getPublicNamespaceName, getWorkloadNamespaceName, hasPublicNamespace, hasWorkloadNamespace, isComplex, isContains, isDelta, isEntity, isExpand, isFilter, isPartial, isReferences } from "./decorators/index.js";
|
|
3
|
+
import { getOperationVerb } from "@typespec/http";
|
|
4
|
+
// schema namespace is workloadNamespace if its defined or publicNamespace if its defined
|
|
5
|
+
export function hasSchemaNamespace(program, namespace) {
|
|
6
|
+
return hasWorkloadNamespace(program, namespace) || hasPublicNamespace(program, namespace);
|
|
7
|
+
}
|
|
8
|
+
// schema namespace is workloadNamespace if its defined, publicNamespace if its defined or the defined namespace name
|
|
9
|
+
export function getSchemaNamespaceName(program, namespace) {
|
|
10
|
+
if (hasWorkloadNamespace(program, namespace)) {
|
|
11
|
+
return getWorkloadNamespaceName(program, namespace);
|
|
12
|
+
}
|
|
13
|
+
return getPublicNamespaceName(program, namespace);
|
|
14
|
+
}
|
|
3
15
|
export function getNameForType(program, type) {
|
|
4
16
|
switch (type.kind) {
|
|
5
17
|
case "Union":
|
|
@@ -25,6 +37,9 @@ export function getNameForType(program, type) {
|
|
|
25
37
|
export function getNameForModelType(program, type) {
|
|
26
38
|
switch (type.name) {
|
|
27
39
|
case "string":
|
|
40
|
+
case "url":
|
|
41
|
+
case "graphUrl":
|
|
42
|
+
case "webUrl":
|
|
28
43
|
return "Edm.String";
|
|
29
44
|
case "bytes":
|
|
30
45
|
return "Collection(Edm.Byte)";
|
|
@@ -46,12 +61,20 @@ export function getNameForModelType(program, type) {
|
|
|
46
61
|
return "Edm.TimeOfDay";
|
|
47
62
|
case "zonedDateTime":
|
|
48
63
|
return "Edm.DateTimeOffset";
|
|
64
|
+
case "offsetDateTime":
|
|
65
|
+
return "Edm.DateTimeOffset";
|
|
66
|
+
case "utcDateTime":
|
|
67
|
+
return "Edm.DateTimeOffset";
|
|
49
68
|
case "duration":
|
|
50
69
|
return "Edm.Duration";
|
|
51
70
|
case "boolean":
|
|
52
71
|
return "Edm.Boolean";
|
|
53
72
|
case "stream":
|
|
54
73
|
return "Edm.Stream";
|
|
74
|
+
case "guid":
|
|
75
|
+
return "Edm.Guid";
|
|
76
|
+
case "unknown":
|
|
77
|
+
return "Edm.Untyped";
|
|
55
78
|
default:
|
|
56
79
|
break;
|
|
57
80
|
}
|
|
@@ -60,21 +83,89 @@ export function getNameForModelType(program, type) {
|
|
|
60
83
|
}
|
|
61
84
|
return `Collection(${getPropertyTypeName(program, type.indexer.value)})`;
|
|
62
85
|
}
|
|
86
|
+
export function getCSDLPrimitiveType(typespecType) {
|
|
87
|
+
switch (typespecType) {
|
|
88
|
+
case "string":
|
|
89
|
+
return "String";
|
|
90
|
+
case "int8":
|
|
91
|
+
return "Byte";
|
|
92
|
+
case "int16":
|
|
93
|
+
return "Int16";
|
|
94
|
+
case "int32":
|
|
95
|
+
return "Int32";
|
|
96
|
+
case "int64":
|
|
97
|
+
return "Int64";
|
|
98
|
+
case "integer":
|
|
99
|
+
return "Int64";
|
|
100
|
+
case "float32":
|
|
101
|
+
return "Single";
|
|
102
|
+
case "float64":
|
|
103
|
+
return "Double";
|
|
104
|
+
case "decimal":
|
|
105
|
+
return "Decimal";
|
|
106
|
+
case "guid":
|
|
107
|
+
return "Guid";
|
|
108
|
+
case "plainDate":
|
|
109
|
+
return "Date";
|
|
110
|
+
case "plainTime":
|
|
111
|
+
return "TimeOfDay";
|
|
112
|
+
case "zonedDateTime":
|
|
113
|
+
return "DateTimeOffset";
|
|
114
|
+
case "duration":
|
|
115
|
+
return "Duration";
|
|
116
|
+
case "boolean":
|
|
117
|
+
return "Bool";
|
|
118
|
+
case "stream":
|
|
119
|
+
return "Stream";
|
|
120
|
+
default:
|
|
121
|
+
return typespecType;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
export function isDictionaryType(program, type) {
|
|
125
|
+
var _a;
|
|
126
|
+
if (type.kind === "Model" && getLocationContext(program, type).type === "project") {
|
|
127
|
+
const indexer = (_a = type.indexer) === null || _a === void 0 ? void 0 : _a.value;
|
|
128
|
+
if (indexer) {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
export function generateDictionaryBaseType(program, model) {
|
|
135
|
+
if (getLocationContext(program, model).type === "library") {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
if (isDictionaryType(program, model)) {
|
|
139
|
+
return "Org.OData.Core.V1.Dictionary";
|
|
140
|
+
}
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
63
143
|
export function getIdForType(program, type) {
|
|
64
144
|
switch (type.kind) {
|
|
65
145
|
case "Namespace":
|
|
66
|
-
|
|
146
|
+
if (hasWorkloadNamespace(program, type)) {
|
|
147
|
+
return getWorkloadNamespaceName(program, type);
|
|
148
|
+
}
|
|
149
|
+
else if (hasPublicNamespace(program, type)) {
|
|
150
|
+
return getPublicNamespaceName(program, type);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
return getNamespaceFullName(type);
|
|
154
|
+
}
|
|
67
155
|
case "Model":
|
|
68
156
|
case "Enum":
|
|
69
157
|
case "Operation":
|
|
70
158
|
case "Interface":
|
|
71
|
-
return `${
|
|
159
|
+
return `${getIdForType(program, type.namespace)}.${type.name}`;
|
|
72
160
|
case "String":
|
|
73
161
|
case "Number":
|
|
74
162
|
case "Boolean":
|
|
75
163
|
return `${type.value}`;
|
|
76
164
|
case "Union":
|
|
77
165
|
return getIdForUnion(program, type);
|
|
166
|
+
case "Scalar":
|
|
167
|
+
case "Intrinsic":
|
|
168
|
+
return getNameForModelType(program, type);
|
|
78
169
|
default:
|
|
79
170
|
return type.kind;
|
|
80
171
|
}
|
|
@@ -87,37 +178,106 @@ export function getNavigationTypeId(program, getOperation) {
|
|
|
87
178
|
}
|
|
88
179
|
return getIdForType(program, returnType.templateArguments[0]);
|
|
89
180
|
}
|
|
181
|
+
export function getInterfacesOfKinds(program, navigationSources, kinds) {
|
|
182
|
+
const interfaces = new Map();
|
|
183
|
+
navigationSources.forEach((theInterface) => {
|
|
184
|
+
if (!getSourceInterfaces(theInterface).some((s) => kinds.includes(s.name))) {
|
|
185
|
+
// if source interfaces DO NOT have the kinds.
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const graphRoutePaths = getGraphRoutePaths(program, theInterface);
|
|
189
|
+
if (!graphRoutePaths || !graphRoutePaths.length) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
graphRoutePaths.forEach((graphRoute) => {
|
|
193
|
+
// skip two-segment resources as they are collections
|
|
194
|
+
if (isRouteIndexOfACollection(theInterface, graphRoute)) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
processGraphRoute(program, graphRoute, interfaces, theInterface);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
return interfaces;
|
|
201
|
+
}
|
|
202
|
+
export function isRouteIndexOfACollection(theInterface, graphRoute) {
|
|
203
|
+
if (theInterface === undefined) {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
const pathSegments = graphRoute.split("/");
|
|
207
|
+
const lastSegment = pathSegments[pathSegments.length - 1].replace(/\{[\w-]+\}/g, "");
|
|
208
|
+
if (lastSegment === "" && getSourceInterfaces(theInterface).some((s) => s.name === "Resource")) {
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
// Generate an interface for a resource that has a root path and an index like /users/{id}. Note that this is a collection.
|
|
214
|
+
// Resources with two-segment paths like /users/{id} are essentially collections
|
|
215
|
+
// This applies to deeply nested resources as well e.g. /cars/{carId}/wheels/{wheelId}
|
|
216
|
+
export function getCollectionIndexInterfaces(program, navigationSources) {
|
|
217
|
+
const interfaces = new Map();
|
|
218
|
+
navigationSources.forEach((theInterface) => {
|
|
219
|
+
const graphRoutePaths = getGraphRoutePaths(program, theInterface);
|
|
220
|
+
if (!graphRoutePaths || !graphRoutePaths.length) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
graphRoutePaths.forEach((graphRoute) => {
|
|
224
|
+
if (isRouteIndexOfACollection(theInterface, graphRoute)) {
|
|
225
|
+
processGraphRoute(program, graphRoute, interfaces, theInterface);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
return interfaces;
|
|
230
|
+
}
|
|
231
|
+
function processGraphRoute(program, graphRoute, interfaces, theInterface) {
|
|
232
|
+
const path = removeRoutePathParams(graphRoute);
|
|
233
|
+
if (!path) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
let operations = [...theInterface.operations.values()].map((operation) => ({ theOperation: operation, verb: getOperationVerb(program, operation), graphRoute: graphRoute }));
|
|
237
|
+
if (interfaces.has(path)) {
|
|
238
|
+
const existing = interfaces.get(path);
|
|
239
|
+
operations = [...operations, ...existing.operations];
|
|
240
|
+
}
|
|
241
|
+
interfaces.set(path, {
|
|
242
|
+
theInterface: theInterface,
|
|
243
|
+
operations: operations,
|
|
244
|
+
path: graphRoute
|
|
245
|
+
});
|
|
246
|
+
}
|
|
90
247
|
export function getPropertyTypeName(program, type) {
|
|
91
248
|
var _a;
|
|
92
249
|
if (type.kind === "Union") {
|
|
93
250
|
const unionTypes = extractTypesFromUnion(type);
|
|
94
|
-
const nonNullTypes = unionTypes.filter((t) => !isNullType(
|
|
251
|
+
const nonNullTypes = unionTypes.filter((t) => !isNullType(t));
|
|
95
252
|
if (!nonNullTypes.length) {
|
|
96
253
|
return "undefined.";
|
|
97
254
|
}
|
|
98
|
-
return getPropertyTypeName(program, nonNullTypes[0]);
|
|
255
|
+
return removeReferencePrefixFromType(getPropertyTypeName(program, nonNullTypes[0]));
|
|
99
256
|
}
|
|
100
257
|
if ((type.kind === "Model" || type.kind === "Scalar") && ((_a = type.namespace) === null || _a === void 0 ? void 0 : _a.name) === "TypeSpec") {
|
|
101
|
-
return getNameForType(program, type);
|
|
258
|
+
return removeReferencePrefixFromType(getNameForType(program, type));
|
|
102
259
|
}
|
|
103
|
-
return getIdForType(program, type);
|
|
260
|
+
return removeReferencePrefixFromType(getIdForType(program, type));
|
|
261
|
+
}
|
|
262
|
+
export function removeReferencePrefixFromType(typeName) {
|
|
263
|
+
return typeName.replace(/^reference\./, "");
|
|
104
264
|
}
|
|
105
265
|
export function isTypeNullable(program, type) {
|
|
106
266
|
if (type.kind !== "Union") {
|
|
107
267
|
return false;
|
|
108
268
|
}
|
|
109
269
|
const unionTypes = extractTypesFromUnion(type);
|
|
110
|
-
return unionTypes.some((t) => isNullType(
|
|
270
|
+
return unionTypes.some((t) => isNullType(t));
|
|
111
271
|
}
|
|
112
272
|
function getIdForUnion(program, unionType) {
|
|
113
273
|
const unionTypes = extractTypesFromUnion(unionType);
|
|
114
|
-
const nonNullTypes = unionTypes.filter((t) => !isNullType(
|
|
274
|
+
const nonNullTypes = unionTypes.filter((t) => !isNullType(t));
|
|
115
275
|
if (!nonNullTypes.length) {
|
|
116
276
|
return "undefined.";
|
|
117
277
|
}
|
|
118
278
|
return getIdForType(program, nonNullTypes[0]);
|
|
119
279
|
}
|
|
120
|
-
function isNullType(
|
|
280
|
+
export function isNullType(type) {
|
|
121
281
|
return type.kind === "Intrinsic" && type.name === "null";
|
|
122
282
|
}
|
|
123
283
|
export function extractTypesFromUnion(type) {
|
|
@@ -130,6 +290,26 @@ export function getSingletonTypeId(program, singletonType, getOperation) {
|
|
|
130
290
|
}
|
|
131
291
|
return getOperation && getNavigationTypeId(program, getOperation);
|
|
132
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Returns whether a type matches Graph's definition of a collection
|
|
295
|
+
* @param program
|
|
296
|
+
* @param type
|
|
297
|
+
*/
|
|
298
|
+
export function isTypeCollection(Program, type) {
|
|
299
|
+
let modelTypes = [];
|
|
300
|
+
if (type.kind === "Union") {
|
|
301
|
+
const extracted = (extractTypesFromUnion(type).filter((t) => t.kind === "Model"));
|
|
302
|
+
modelTypes = modelTypes.concat(extracted);
|
|
303
|
+
}
|
|
304
|
+
else if (type.kind === "Model") {
|
|
305
|
+
modelTypes.push(type);
|
|
306
|
+
}
|
|
307
|
+
if (modelTypes.length === 0) {
|
|
308
|
+
return false;
|
|
309
|
+
}
|
|
310
|
+
return modelTypes.some((t) => t.kind === "Model" &&
|
|
311
|
+
(t.name === "Array" || t.name.includes("Collection")));
|
|
312
|
+
}
|
|
133
313
|
/**
|
|
134
314
|
* Imported from typespec-azure
|
|
135
315
|
* Returns the full namespace name for the given type, if available.
|
|
@@ -167,11 +347,24 @@ export function isExcludedCoreType(program, type) {
|
|
|
167
347
|
// https://github.com/Azure/typespec-azure/issues/801#issuecomment-1194454247
|
|
168
348
|
//
|
|
169
349
|
const nsName = getNamespaceName(program, type);
|
|
170
|
-
const excludedNamespaces = ["TypeSpec", "
|
|
350
|
+
const excludedNamespaces = ["TypeSpec", "MsGraph"];
|
|
351
|
+
return excludedNamespaces.find((ns) => nsName.startsWith(ns)) !== undefined;
|
|
352
|
+
}
|
|
353
|
+
export function isExcludedLibraryType(program, type) {
|
|
354
|
+
const nsName = getNamespaceName(program, type);
|
|
355
|
+
const excludedNamespaces = ["TypeSpec", "MsGraph"];
|
|
171
356
|
return excludedNamespaces.find((ns) => nsName.startsWith(ns)) !== undefined;
|
|
172
357
|
}
|
|
173
358
|
export function isNavigationProperty(program, property) {
|
|
174
359
|
let propertyType = property.type;
|
|
360
|
+
if (propertyType.kind === "Union") {
|
|
361
|
+
const unionTypes = extractTypesFromUnion(propertyType);
|
|
362
|
+
const nonNullTypes = unionTypes.filter((t) => !isNullType(t));
|
|
363
|
+
if (!nonNullTypes.length) {
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
propertyType = nonNullTypes[0];
|
|
367
|
+
}
|
|
175
368
|
if (propertyType.kind !== "Model") {
|
|
176
369
|
return false;
|
|
177
370
|
}
|
|
@@ -183,4 +376,334 @@ export function isNavigationProperty(program, property) {
|
|
|
183
376
|
}
|
|
184
377
|
return isEntity(program, propertyType);
|
|
185
378
|
}
|
|
379
|
+
export function isNavigationSource(theInterface) {
|
|
380
|
+
return findNavigationSource(theInterface) !== undefined;
|
|
381
|
+
}
|
|
382
|
+
export function isTopLevelNavigationSource(program, theInterface) {
|
|
383
|
+
return removeRoutePathParams(theInterface.path).split("/").length === 1;
|
|
384
|
+
}
|
|
385
|
+
// Get the type returned by all operations in an interface representing a navigation source.
|
|
386
|
+
// This is the 'T' in Collection<T> and friends.
|
|
387
|
+
export function getInterfaceNavigationSourceType(program, theInterface) {
|
|
388
|
+
var _a;
|
|
389
|
+
const navSource = findNavigationSource(theInterface);
|
|
390
|
+
if (navSource === undefined) {
|
|
391
|
+
return undefined;
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
return (_a = navSource.templateMapper) === null || _a === void 0 ? void 0 : _a.args[0];
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// Get the type returned by all operations in an interface representing a navigation source.
|
|
398
|
+
export function getNavigationSourceType(program, operation) {
|
|
399
|
+
return getInterfaceNavigationSourceType(program, operation.interface);
|
|
400
|
+
}
|
|
401
|
+
function findNavigationSource(theInterface) {
|
|
402
|
+
for (const baseInterface of getSourceInterfaces(theInterface)) {
|
|
403
|
+
if (baseInterface.name === "Resource" || baseInterface.name === "Collection") {
|
|
404
|
+
return baseInterface;
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
const baseBase = findNavigationSource(baseInterface);
|
|
408
|
+
if (baseBase !== undefined) {
|
|
409
|
+
return baseBase;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
return undefined;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Removes route path params from a route path
|
|
417
|
+
*
|
|
418
|
+
* Examples:
|
|
419
|
+
* - user/{id}/manager -> user/manager
|
|
420
|
+
* - user/{id}/friends/{friendId}/hobbies -> user/friends/hobbies
|
|
421
|
+
* - user/{user-id}/friends/{friend-id}/hobbies -> user/friends/hobbies
|
|
422
|
+
*/
|
|
423
|
+
export function removeRoutePathParams(routePath) {
|
|
424
|
+
return routePath.replace(/\/\{[\w-]+\}/g, "");
|
|
425
|
+
}
|
|
426
|
+
export function isSameNamespace(program, model, baseModel) {
|
|
427
|
+
if (!baseModel) {
|
|
428
|
+
return false;
|
|
429
|
+
}
|
|
430
|
+
return getNamespaceName(program, model) === getNamespaceName(program, baseModel);
|
|
431
|
+
}
|
|
432
|
+
export function isTypeDefinedInExternalLibrary(program, type) {
|
|
433
|
+
const locationContext = getLocationContext(program, type);
|
|
434
|
+
return locationContext.type === "library";
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Recursively get all source interfaces of an interface
|
|
438
|
+
* @param theInterface
|
|
439
|
+
* @returns an array of all source interfaces
|
|
440
|
+
*/
|
|
441
|
+
export function getSourceInterfaces(theInterface) {
|
|
442
|
+
return [...theInterface.sourceInterfaces, ...[...theInterface.sourceInterfaces.values()].flatMap(getSourceInterfaces)];
|
|
443
|
+
}
|
|
444
|
+
export function getStructuralProperties(program, model) {
|
|
445
|
+
const structuralProperties = getStructuralPropertyNames(program, model);
|
|
446
|
+
const propertiesOfTypeModel = getPropertiesOfTypeModel(program, model);
|
|
447
|
+
const nestedPropertyNames = getNestedPropertyNames(program, propertiesOfTypeModel);
|
|
448
|
+
return [...new Set([...structuralProperties, ...nestedPropertyNames])].filter(path => path !== model.name);
|
|
449
|
+
}
|
|
450
|
+
function getStructuralPropertyNames(program, model) {
|
|
451
|
+
const allProperties = walkPropertiesInherited(model);
|
|
452
|
+
const structuralPropertyNames = [...allProperties] // gets only reachable ones per the function
|
|
453
|
+
.filter((property) => !isContains(program, property) && !isReferences(program, property))
|
|
454
|
+
.map(property => property.name.trim());
|
|
455
|
+
return structuralPropertyNames;
|
|
456
|
+
}
|
|
457
|
+
function getPropertiesOfTypeModel(program, model) {
|
|
458
|
+
const allProperties = walkPropertiesInherited(model);
|
|
459
|
+
const propertiesOfTypeModel = [];
|
|
460
|
+
for (const property of allProperties) {
|
|
461
|
+
const type = getModelStructuredTypeFromProperty(program, property);
|
|
462
|
+
if (type) {
|
|
463
|
+
propertiesOfTypeModel.push(type);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
return propertiesOfTypeModel;
|
|
467
|
+
}
|
|
468
|
+
function getModelStructuredTypeFromProperty(program, property) {
|
|
469
|
+
// Skip navigation properties
|
|
470
|
+
if (isContains(program, property) || isReferences(program, property)) {
|
|
471
|
+
return null;
|
|
472
|
+
}
|
|
473
|
+
const type = property.type;
|
|
474
|
+
if (type.kind === "Model") {
|
|
475
|
+
// Skip array-typed properties
|
|
476
|
+
if (type.name === "Array") {
|
|
477
|
+
return null;
|
|
478
|
+
}
|
|
479
|
+
return {
|
|
480
|
+
name: property.name,
|
|
481
|
+
model: type
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
if (type.kind === "Union") {
|
|
485
|
+
const nonNullUnionTypes = extractTypesFromUnion(type).filter(t => !isNullType(t));
|
|
486
|
+
if (nonNullUnionTypes[0].kind === "Model") {
|
|
487
|
+
return {
|
|
488
|
+
name: property.name,
|
|
489
|
+
model: nonNullUnionTypes[0]
|
|
490
|
+
};
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
return null;
|
|
494
|
+
}
|
|
495
|
+
function getNestedPropertyNames(program, propertyModels, prefix = "") {
|
|
496
|
+
const names = [];
|
|
497
|
+
if (prefix && hasRepeatedItem(prefix)) {
|
|
498
|
+
return names;
|
|
499
|
+
}
|
|
500
|
+
for (const propertyModel of propertyModels) {
|
|
501
|
+
const propertyModelPrefix = prefix + propertyModel.name + "/";
|
|
502
|
+
const nestedPropertyModels = getNestedPropertyModels(program, propertyModel);
|
|
503
|
+
nestedPropertyModels.forEach(m => {
|
|
504
|
+
const name = propertyModelPrefix + m.name;
|
|
505
|
+
if (!hasRepeatedItem(name)) {
|
|
506
|
+
names.push(name);
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
names.push(...getNestedPropertyNames(program, nestedPropertyModels, propertyModelPrefix));
|
|
510
|
+
}
|
|
511
|
+
return names;
|
|
512
|
+
}
|
|
513
|
+
function getNestedPropertyModels(program, propertyModel) {
|
|
514
|
+
const propertyModels = [];
|
|
515
|
+
if (!propertyModel.model.properties) {
|
|
516
|
+
return propertyModels;
|
|
517
|
+
}
|
|
518
|
+
propertyModel.model.properties.forEach((property, name) => {
|
|
519
|
+
const model = getPropertyModel(program, property);
|
|
520
|
+
if (model !== null) {
|
|
521
|
+
propertyModels.push({ name: name, model: model });
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
return propertyModels;
|
|
525
|
+
}
|
|
526
|
+
function getPropertyModel(program, property) {
|
|
527
|
+
if (isContains(program, property) || isReferences(program, property)) {
|
|
528
|
+
return null;
|
|
529
|
+
}
|
|
530
|
+
let type = property.type;
|
|
531
|
+
if (type.kind === "Union") {
|
|
532
|
+
const nonNullUnionTypes = extractTypesFromUnion(type).filter(t => !isNullType(t));
|
|
533
|
+
type = nonNullUnionTypes[0];
|
|
534
|
+
}
|
|
535
|
+
if (type.kind === "Model") {
|
|
536
|
+
if (type.name === "Array") {
|
|
537
|
+
if (type.indexer.value.kind !== "Model") {
|
|
538
|
+
return null;
|
|
539
|
+
}
|
|
540
|
+
type = type.indexer.value;
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
return type;
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* This function checks if a path is repeating.
|
|
547
|
+
* For example, if we have a tsp with this structure:
|
|
548
|
+
* @complex model inner {
|
|
549
|
+
innerName: string;
|
|
550
|
+
otherInnerName: string;
|
|
551
|
+
circularReferenceProp: outer;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
@complex model outer {
|
|
555
|
+
inner: inner | null;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
If our root (interface navigation type) is outer, some of the possible paths would be
|
|
559
|
+
- outer/inner/innerName
|
|
560
|
+
- outer/inner/otherInnerName
|
|
561
|
+
For circularReferenceProp property, we run the risk of having a path like the one below which would cause an infinite loop:
|
|
562
|
+
- outer/inner/circularReferenceProp/inner/circularReferenceProp
|
|
563
|
+
* @param slashSeparatedString
|
|
564
|
+
* @returns
|
|
565
|
+
*/
|
|
566
|
+
function hasRepeatedItem(slashSeparatedString) {
|
|
567
|
+
const items = slashSeparatedString.split('/');
|
|
568
|
+
const uniqueItems = new Set(items);
|
|
569
|
+
return items.length !== uniqueItems.size;
|
|
570
|
+
}
|
|
571
|
+
export function isInterfaceBindingTypeOwned(program, $interface) {
|
|
572
|
+
const interfaceBindingType = getInterfaceNavigationSourceType(program, $interface);
|
|
573
|
+
if (interfaceBindingType) {
|
|
574
|
+
if (isPartial(program, interfaceBindingType)) {
|
|
575
|
+
return false;
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
return true;
|
|
579
|
+
}
|
|
580
|
+
export function getNestedComplexTypes(program, model, nestedModels = new Set()) {
|
|
581
|
+
nestedModels.add(model);
|
|
582
|
+
const modelProperties = model.properties;
|
|
583
|
+
if (modelProperties.size === 0) {
|
|
584
|
+
return nestedModels;
|
|
585
|
+
}
|
|
586
|
+
for (const property of modelProperties.values()) {
|
|
587
|
+
if (property.type.kind === "Model" && isComplex(program, property.type)) {
|
|
588
|
+
if (!nestedModels.has(property.type)) {
|
|
589
|
+
getNestedComplexTypes(program, property.type, nestedModels);
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
if (property.type.kind === "Union") {
|
|
593
|
+
const nonNullTypes = extractTypesFromUnion(property.type).filter((t) => !isNullType(t));
|
|
594
|
+
if (nonNullTypes.length > 0 && nonNullTypes[0].kind === "Model" && isComplex(program, nonNullTypes[0])) {
|
|
595
|
+
if (!nestedModels.has(nonNullTypes[0])) {
|
|
596
|
+
getNestedComplexTypes(program, nonNullTypes[0], nestedModels);
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
if (property.type.kind === "Model" && isArrayModelType(program, property.type)) {
|
|
601
|
+
const indexer = property.type.indexer.value;
|
|
602
|
+
if (indexer.kind === "Model" && isComplex(program, indexer)) {
|
|
603
|
+
if (!nestedModels.has(indexer)) {
|
|
604
|
+
getNestedComplexTypes(program, indexer, nestedModels);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
return nestedModels;
|
|
610
|
+
}
|
|
611
|
+
// This function gets filterable and expandable properties
|
|
612
|
+
export function getDeltaProperties(program, entity) {
|
|
613
|
+
const operations = entity.operations;
|
|
614
|
+
let hasDelta = false;
|
|
615
|
+
let filterProps;
|
|
616
|
+
let expandProps;
|
|
617
|
+
for (const [_, operation] of operations) {
|
|
618
|
+
// Get filterable and expandable properties as defined by @filter and @expand on the @delta operation
|
|
619
|
+
if (isDelta(program, operation)) {
|
|
620
|
+
hasDelta = true;
|
|
621
|
+
filterProps = getFilterableProperties(program, operation);
|
|
622
|
+
expandProps = getExpandableProperties(program, operation);
|
|
623
|
+
break;
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
// If the delta operation exists and the filter properties are not set, get the filter properties from the get operation
|
|
627
|
+
if (hasDelta && !filterProps) {
|
|
628
|
+
filterProps = [...getFilterablePropertiesFromGetOperation(program, operations)];
|
|
629
|
+
}
|
|
630
|
+
// If the delta operation exists and the expand properties are not set, get the expand properties from the get operation
|
|
631
|
+
if (hasDelta && !expandProps) {
|
|
632
|
+
expandProps = [...getExpandablePropertiesFromGetOperation(program, operations)];
|
|
633
|
+
}
|
|
634
|
+
if (hasDelta) {
|
|
635
|
+
return {
|
|
636
|
+
FilterProperties: filterProps,
|
|
637
|
+
ExpandProperties: expandProps,
|
|
638
|
+
};
|
|
639
|
+
}
|
|
640
|
+
return undefined;
|
|
641
|
+
}
|
|
642
|
+
function getFilterableProperties(program, operation) {
|
|
643
|
+
if (isFilter(program, operation)) {
|
|
644
|
+
const filterProps = getFilter(program, operation);
|
|
645
|
+
return filterProps;
|
|
646
|
+
}
|
|
647
|
+
return undefined;
|
|
648
|
+
}
|
|
649
|
+
function getExpandableProperties(program, operation) {
|
|
650
|
+
if (isExpand(program, operation)) {
|
|
651
|
+
return getExpand(program, operation);
|
|
652
|
+
}
|
|
653
|
+
return undefined;
|
|
654
|
+
}
|
|
655
|
+
// check this
|
|
656
|
+
function getFilterablePropertiesFromGetOperation(program, operationsMap) {
|
|
657
|
+
const operations = [...operationsMap.values()];
|
|
658
|
+
if (operations.some(theOperation => isFilter(program, theOperation))) {
|
|
659
|
+
for (const operation of operations) {
|
|
660
|
+
if (operation.name === "get") {
|
|
661
|
+
if (isFilter(program, operation)) {
|
|
662
|
+
return getFilter(program, operation);
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
return [];
|
|
668
|
+
}
|
|
669
|
+
function getExpandablePropertiesFromGetOperation(program, operationsMap) {
|
|
670
|
+
const operations = [...operationsMap.values()];
|
|
671
|
+
if (operations.some(theOperation => isExpand(program, theOperation))) {
|
|
672
|
+
for (const operation of operations) {
|
|
673
|
+
if (operation.name === "get") {
|
|
674
|
+
if (isExpand(program, operation)) {
|
|
675
|
+
return getExpand(program, operation);
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
return [];
|
|
681
|
+
}
|
|
682
|
+
export function isCollection(theInterfaces) {
|
|
683
|
+
return theInterfaces.some(theInterface => theInterface.name === "Collection");
|
|
684
|
+
}
|
|
685
|
+
export function isUnion(type) {
|
|
686
|
+
return type.kind === "Union";
|
|
687
|
+
}
|
|
688
|
+
export function filterMapByIdenticalValues(inputMap) {
|
|
689
|
+
var _a;
|
|
690
|
+
const resultMap = new Map();
|
|
691
|
+
const valueToKeys = new Map();
|
|
692
|
+
// Iterate over the input map
|
|
693
|
+
for (const [key, value] of inputMap.entries()) {
|
|
694
|
+
if (!valueToKeys.has(value)) {
|
|
695
|
+
valueToKeys.set(value, [key]);
|
|
696
|
+
}
|
|
697
|
+
else {
|
|
698
|
+
(_a = valueToKeys.get(value)) === null || _a === void 0 ? void 0 : _a.push(key);
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
// Add keys with identical values to the result map
|
|
702
|
+
for (const [value, keys] of valueToKeys.entries()) {
|
|
703
|
+
if (keys.length > 1) {
|
|
704
|
+
keys.forEach((key) => resultMap.set(key, value));
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
return resultMap;
|
|
708
|
+
}
|
|
186
709
|
//# sourceMappingURL=utils.js.map
|