@greensecurity/javascript-sdk 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/README.md +35 -0
- package/.devcontainer/devcontainer.json +45 -0
- package/FUNCTIONS.md +109 -0
- package/REACT_QUERY.md +318 -0
- package/README.md +561 -0
- package/RUNTIMES.md +48 -0
- package/core.d.ts +10 -0
- package/core.d.ts.map +1 -0
- package/core.js +17 -0
- package/core.js.map +1 -0
- package/docs/sdks/greensecurity/README.md +14 -0
- package/docs/sdks/organizations/README.md +252 -0
- package/docs/sdks/user/README.md +348 -0
- package/docs/sdks/vendors/README.md +219 -0
- package/funcs/organizationsGetFacility.d.ts +17 -0
- package/funcs/organizationsGetFacility.d.ts.map +1 -0
- package/funcs/organizationsGetFacility.js +117 -0
- package/funcs/organizationsGetFacility.js.map +1 -0
- package/funcs/organizationsListOrSearchFacilities.d.ts +28 -0
- package/funcs/organizationsListOrSearchFacilities.d.ts.map +1 -0
- package/funcs/organizationsListOrSearchFacilities.js +131 -0
- package/funcs/organizationsListOrSearchFacilities.js.map +1 -0
- package/funcs/userGetCurrentUser.d.ts +16 -0
- package/funcs/userGetCurrentUser.d.ts.map +1 -0
- package/funcs/userGetCurrentUser.js +101 -0
- package/funcs/userGetCurrentUser.js.map +1 -0
- package/funcs/userGetUserById.d.ts +17 -0
- package/funcs/userGetUserById.d.ts.map +1 -0
- package/funcs/userGetUserById.js +117 -0
- package/funcs/userGetUserById.js.map +1 -0
- package/funcs/userLogsUserIntoTheSystem.d.ts +46 -0
- package/funcs/userLogsUserIntoTheSystem.d.ts.map +1 -0
- package/funcs/userLogsUserIntoTheSystem.js +137 -0
- package/funcs/userLogsUserIntoTheSystem.js.map +1 -0
- package/funcs/vendorsCreateVendorRegistration.d.ts +16 -0
- package/funcs/vendorsCreateVendorRegistration.d.ts.map +1 -0
- package/funcs/vendorsCreateVendorRegistration.js +107 -0
- package/funcs/vendorsCreateVendorRegistration.js.map +1 -0
- package/funcs/vendorsListVendorJobTitles.d.ts +16 -0
- package/funcs/vendorsListVendorJobTitles.d.ts.map +1 -0
- package/funcs/vendorsListVendorJobTitles.js +114 -0
- package/funcs/vendorsListVendorJobTitles.js.map +1 -0
- package/hooks/hooks.d.ts +24 -0
- package/hooks/hooks.d.ts.map +1 -0
- package/hooks/hooks.js +86 -0
- package/hooks/hooks.js.map +1 -0
- package/hooks/index.d.ts +3 -0
- package/hooks/index.d.ts.map +1 -0
- package/hooks/index.js +22 -0
- package/hooks/index.js.map +1 -0
- package/hooks/registration.d.ts +3 -0
- package/hooks/registration.d.ts.map +1 -0
- package/hooks/registration.js +15 -0
- package/hooks/registration.js.map +1 -0
- package/hooks/types.d.ts +78 -0
- package/hooks/types.d.ts.map +1 -0
- package/hooks/types.js +6 -0
- package/hooks/types.js.map +1 -0
- package/index.d.ts +4 -0
- package/index.d.ts.map +1 -0
- package/index.js +46 -0
- package/index.js.map +1 -0
- package/jsr.json +27 -0
- package/lib/base64.d.ts +10 -0
- package/lib/base64.d.ts.map +1 -0
- package/lib/base64.js +71 -0
- package/lib/base64.js.map +1 -0
- package/lib/config.d.ts +38 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +46 -0
- package/lib/config.js.map +1 -0
- package/lib/dlv.d.ts +14 -0
- package/lib/dlv.d.ts.map +1 -0
- package/lib/dlv.js +49 -0
- package/lib/dlv.js.map +1 -0
- package/lib/encodings.d.ts +52 -0
- package/lib/encodings.d.ts.map +1 -0
- package/lib/encodings.js +368 -0
- package/lib/encodings.js.map +1 -0
- package/lib/env.d.ts +16 -0
- package/lib/env.d.ts.map +1 -0
- package/lib/env.js +66 -0
- package/lib/env.js.map +1 -0
- package/lib/files.d.ts +8 -0
- package/lib/files.d.ts.map +1 -0
- package/lib/files.js +36 -0
- package/lib/files.js.map +1 -0
- package/lib/http.d.ts +67 -0
- package/lib/http.d.ts.map +1 -0
- package/lib/http.js +217 -0
- package/lib/http.js.map +1 -0
- package/lib/is-plain-object.d.ts +2 -0
- package/lib/is-plain-object.d.ts.map +1 -0
- package/lib/is-plain-object.js +41 -0
- package/lib/is-plain-object.js.map +1 -0
- package/lib/logger.d.ts +6 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/logger.js +6 -0
- package/lib/logger.js.map +1 -0
- package/lib/matchers.d.ts +64 -0
- package/lib/matchers.d.ts.map +1 -0
- package/lib/matchers.js +204 -0
- package/lib/matchers.js.map +1 -0
- package/lib/primitives.d.ts +23 -0
- package/lib/primitives.d.ts.map +1 -0
- package/lib/primitives.js +104 -0
- package/lib/primitives.js.map +1 -0
- package/lib/retries.d.ts +38 -0
- package/lib/retries.d.ts.map +1 -0
- package/lib/retries.js +153 -0
- package/lib/retries.js.map +1 -0
- package/lib/schemas.d.ts +19 -0
- package/lib/schemas.d.ts.map +1 -0
- package/lib/schemas.js +62 -0
- package/lib/schemas.js.map +1 -0
- package/lib/sdks.d.ts +60 -0
- package/lib/sdks.d.ts.map +1 -0
- package/lib/sdks.js +280 -0
- package/lib/sdks.js.map +1 -0
- package/lib/security.d.ts +82 -0
- package/lib/security.d.ts.map +1 -0
- package/lib/security.js +145 -0
- package/lib/security.js.map +1 -0
- package/lib/url.d.ts +5 -0
- package/lib/url.d.ts.map +1 -0
- package/lib/url.js +25 -0
- package/lib/url.js.map +1 -0
- package/models/components/contact.d.ts +135 -0
- package/models/components/contact.d.ts.map +1 -0
- package/models/components/contact.js +172 -0
- package/models/components/contact.js.map +1 -0
- package/models/components/departmentsummary.d.ts +34 -0
- package/models/components/departmentsummary.d.ts.map +1 -0
- package/models/components/departmentsummary.js +71 -0
- package/models/components/departmentsummary.js.map +1 -0
- package/models/components/desc.d.ts +25 -0
- package/models/components/desc.d.ts.map +1 -0
- package/models/components/desc.js +66 -0
- package/models/components/desc.js.map +1 -0
- package/models/components/expand.d.ts +79 -0
- package/models/components/expand.d.ts.map +1 -0
- package/models/components/expand.js +79 -0
- package/models/components/expand.js.map +1 -0
- package/models/components/facility.d.ts +544 -0
- package/models/components/facility.d.ts.map +1 -0
- package/models/components/facility.js +797 -0
- package/models/components/facility.js.map +1 -0
- package/models/components/facilitysummary.d.ts +34 -0
- package/models/components/facilitysummary.d.ts.map +1 -0
- package/models/components/facilitysummary.js +71 -0
- package/models/components/facilitysummary.js.map +1 -0
- package/models/components/imageset.d.ts +38 -0
- package/models/components/imageset.d.ts.map +1 -0
- package/models/components/imageset.js +75 -0
- package/models/components/imageset.js.map +1 -0
- package/models/components/index.d.ts +20 -0
- package/models/components/index.d.ts.map +1 -0
- package/models/components/index.js +39 -0
- package/models/components/index.js.map +1 -0
- package/models/components/loginemailandpassword.d.ts +45 -0
- package/models/components/loginemailandpassword.d.ts.map +1 -0
- package/models/components/loginemailandpassword.js +82 -0
- package/models/components/loginemailandpassword.js.map +1 -0
- package/models/components/loginrequirementsfromemail.d.ts +40 -0
- package/models/components/loginrequirementsfromemail.d.ts.map +1 -0
- package/models/components/loginrequirementsfromemail.js +80 -0
- package/models/components/loginrequirementsfromemail.js.map +1 -0
- package/models/components/mfarequiredresponse.d.ts +98 -0
- package/models/components/mfarequiredresponse.d.ts.map +1 -0
- package/models/components/mfarequiredresponse.js +126 -0
- package/models/components/mfarequiredresponse.js.map +1 -0
- package/models/components/pager.d.ts +69 -0
- package/models/components/pager.d.ts.map +1 -0
- package/models/components/pager.js +97 -0
- package/models/components/pager.js.map +1 -0
- package/models/components/passwordrequiredresponse.d.ts +62 -0
- package/models/components/passwordrequiredresponse.d.ts.map +1 -0
- package/models/components/passwordrequiredresponse.js +92 -0
- package/models/components/passwordrequiredresponse.js.map +1 -0
- package/models/components/samlloginrequiredresponse.d.ts +73 -0
- package/models/components/samlloginrequiredresponse.d.ts.map +1 -0
- package/models/components/samlloginrequiredresponse.js +106 -0
- package/models/components/samlloginrequiredresponse.js.map +1 -0
- package/models/components/security.d.ts +31 -0
- package/models/components/security.d.ts.map +1 -0
- package/models/components/security.js +80 -0
- package/models/components/security.js.map +1 -0
- package/models/components/status.d.ts +37 -0
- package/models/components/status.d.ts.map +1 -0
- package/models/components/status.js +65 -0
- package/models/components/status.js.map +1 -0
- package/models/components/systemsummary.d.ts +34 -0
- package/models/components/systemsummary.d.ts.map +1 -0
- package/models/components/systemsummary.js +71 -0
- package/models/components/systemsummary.js.map +1 -0
- package/models/components/user.d.ts +265 -0
- package/models/components/user.d.ts.map +1 -0
- package/models/components/user.js +284 -0
- package/models/components/user.js.map +1 -0
- package/models/components/vendorjobtitle.d.ts +41 -0
- package/models/components/vendorjobtitle.d.ts.map +1 -0
- package/models/components/vendorjobtitle.js +71 -0
- package/models/components/vendorjobtitle.js.map +1 -0
- package/models/components/vendortype.d.ts +69 -0
- package/models/components/vendortype.d.ts.map +1 -0
- package/models/components/vendortype.js +135 -0
- package/models/components/vendortype.js.map +1 -0
- package/models/errors/apierror.d.ts +8 -0
- package/models/errors/apierror.d.ts.map +1 -0
- package/models/errors/apierror.js +21 -0
- package/models/errors/apierror.js.map +1 -0
- package/models/errors/apierrorresponse.d.ts +51 -0
- package/models/errors/apierrorresponse.d.ts.map +1 -0
- package/models/errors/apierrorresponse.js +91 -0
- package/models/errors/apierrorresponse.js.map +1 -0
- package/models/errors/httpclienterrors.d.ts +44 -0
- package/models/errors/httpclienterrors.d.ts.map +1 -0
- package/models/errors/httpclienterrors.js +78 -0
- package/models/errors/httpclienterrors.js.map +1 -0
- package/models/errors/index.d.ts +5 -0
- package/models/errors/index.d.ts.map +1 -0
- package/models/errors/index.js +24 -0
- package/models/errors/index.js.map +1 -0
- package/models/errors/sdkvalidationerror.d.ts +20 -0
- package/models/errors/sdkvalidationerror.d.ts.map +1 -0
- package/models/errors/sdkvalidationerror.js +115 -0
- package/models/errors/sdkvalidationerror.js.map +1 -0
- package/models/operations/createvendorregistration.d.ts +115 -0
- package/models/operations/createvendorregistration.d.ts.map +1 -0
- package/models/operations/createvendorregistration.js +143 -0
- package/models/operations/createvendorregistration.js.map +1 -0
- package/models/operations/getfacility.d.ts +32 -0
- package/models/operations/getfacility.d.ts.map +1 -0
- package/models/operations/getfacility.js +69 -0
- package/models/operations/getfacility.js.map +1 -0
- package/models/operations/getuserbyid.d.ts +32 -0
- package/models/operations/getuserbyid.d.ts.map +1 -0
- package/models/operations/getuserbyid.js +69 -0
- package/models/operations/getuserbyid.js.map +1 -0
- package/models/operations/index.d.ts +7 -0
- package/models/operations/index.d.ts.map +1 -0
- package/models/operations/index.js +26 -0
- package/models/operations/index.js.map +1 -0
- package/models/operations/listorsearchfacilities.d.ts +110 -0
- package/models/operations/listorsearchfacilities.d.ts.map +1 -0
- package/models/operations/listorsearchfacilities.js +130 -0
- package/models/operations/listorsearchfacilities.js.map +1 -0
- package/models/operations/listvendorjobtitles.d.ts +86 -0
- package/models/operations/listvendorjobtitles.d.ts.map +1 -0
- package/models/operations/listvendorjobtitles.js +118 -0
- package/models/operations/listvendorjobtitles.js.map +1 -0
- package/models/operations/logsuserintothesystem.d.ts +98 -0
- package/models/operations/logsuserintothesystem.d.ts.map +1 -0
- package/models/operations/logsuserintothesystem.js +164 -0
- package/models/operations/logsuserintothesystem.js.map +1 -0
- package/package.json +41 -0
- package/react-query/_context.d.ts +8 -0
- package/react-query/_context.d.ts.map +1 -0
- package/react-query/_context.js +21 -0
- package/react-query/_context.js.map +1 -0
- package/react-query/_types.d.ts +14 -0
- package/react-query/_types.d.ts.map +1 -0
- package/react-query/_types.js +6 -0
- package/react-query/_types.js.map +1 -0
- package/react-query/index.d.ts +10 -0
- package/react-query/index.d.ts.map +1 -0
- package/react-query/index.js +32 -0
- package/react-query/index.js.map +1 -0
- package/react-query/organizationsGetFacility.d.ts +31 -0
- package/react-query/organizationsGetFacility.d.ts.map +1 -0
- package/react-query/organizationsGetFacility.js +87 -0
- package/react-query/organizationsGetFacility.js.map +1 -0
- package/react-query/organizationsListOrSearchFacilities.d.ts +91 -0
- package/react-query/organizationsListOrSearchFacilities.d.ts.map +1 -0
- package/react-query/organizationsListOrSearchFacilities.js +132 -0
- package/react-query/organizationsListOrSearchFacilities.js.map +1 -0
- package/react-query/userGetCurrentUser.d.ts +29 -0
- package/react-query/userGetCurrentUser.d.ts.map +1 -0
- package/react-query/userGetCurrentUser.js +75 -0
- package/react-query/userGetCurrentUser.js.map +1 -0
- package/react-query/userGetUserById.d.ts +31 -0
- package/react-query/userGetUserById.d.ts.map +1 -0
- package/react-query/userGetUserById.js +87 -0
- package/react-query/userGetUserById.js.map +1 -0
- package/react-query/userLogsUserIntoTheSystem.d.ts +53 -0
- package/react-query/userLogsUserIntoTheSystem.d.ts.map +1 -0
- package/react-query/userLogsUserIntoTheSystem.js +77 -0
- package/react-query/userLogsUserIntoTheSystem.js.map +1 -0
- package/react-query/vendorsCreateVendorRegistration.d.ts +23 -0
- package/react-query/vendorsCreateVendorRegistration.d.ts.map +1 -0
- package/react-query/vendorsCreateVendorRegistration.js +51 -0
- package/react-query/vendorsCreateVendorRegistration.js.map +1 -0
- package/react-query/vendorsListVendorJobTitles.d.ts +53 -0
- package/react-query/vendorsListVendorJobTitles.d.ts.map +1 -0
- package/react-query/vendorsListVendorJobTitles.js +102 -0
- package/react-query/vendorsListVendorJobTitles.js.map +1 -0
- package/sdk/index.d.ts +2 -0
- package/sdk/index.d.ts.map +1 -0
- package/sdk/index.js +21 -0
- package/sdk/index.js.map +1 -0
- package/sdk/organizations.d.ts +33 -0
- package/sdk/organizations.d.ts.map +1 -0
- package/sdk/organizations.js +45 -0
- package/sdk/organizations.js.map +1 -0
- package/sdk/sdk.d.ts +13 -0
- package/sdk/sdk.d.ts.map +1 -0
- package/sdk/sdk.js +23 -0
- package/sdk/sdk.js.map +1 -0
- package/sdk/user.d.ts +57 -0
- package/sdk/user.d.ts.map +1 -0
- package/sdk/user.js +72 -0
- package/sdk/user.js.map +1 -0
- package/sdk/vendors.d.ts +19 -0
- package/sdk/vendors.d.ts.map +1 -0
- package/sdk/vendors.js +32 -0
- package/sdk/vendors.js.map +1 -0
- package/src/core.ts +13 -0
- package/src/funcs/organizationsGetFacility.ts +144 -0
- package/src/funcs/organizationsListOrSearchFacilities.ts +152 -0
- package/src/funcs/userGetCurrentUser.ts +118 -0
- package/src/funcs/userGetUserById.ts +141 -0
- package/src/funcs/userLogsUserIntoTheSystem.ts +161 -0
- package/src/funcs/vendorsCreateVendorRegistration.ts +132 -0
- package/src/funcs/vendorsListVendorJobTitles.ts +141 -0
- package/src/hooks/hooks.ts +132 -0
- package/src/hooks/index.ts +6 -0
- package/src/hooks/registration.ts +14 -0
- package/src/hooks/types.ts +110 -0
- package/src/index.ts +7 -0
- package/src/lib/base64.ts +37 -0
- package/src/lib/config.ts +76 -0
- package/src/lib/dlv.ts +53 -0
- package/src/lib/encodings.ts +483 -0
- package/src/lib/env.ts +43 -0
- package/src/lib/files.ts +40 -0
- package/src/lib/http.ts +323 -0
- package/src/lib/is-plain-object.ts +43 -0
- package/src/lib/logger.ts +9 -0
- package/src/lib/matchers.ts +322 -0
- package/src/lib/primitives.ts +136 -0
- package/src/lib/retries.ts +218 -0
- package/src/lib/schemas.ts +91 -0
- package/src/lib/sdks.ts +400 -0
- package/src/lib/security.ts +260 -0
- package/src/lib/url.ts +33 -0
- package/src/models/components/contact.ts +268 -0
- package/src/models/components/departmentsummary.ts +73 -0
- package/src/models/components/desc.ts +48 -0
- package/src/models/components/expand.ts +52 -0
- package/src/models/components/facility.ts +1334 -0
- package/src/models/components/facilitysummary.ts +71 -0
- package/src/models/components/imageset.ts +77 -0
- package/src/models/components/index.ts +23 -0
- package/src/models/components/loginemailandpassword.ts +95 -0
- package/src/models/components/loginrequirementsfromemail.ts +88 -0
- package/src/models/components/mfarequiredresponse.ts +160 -0
- package/src/models/components/pager.ts +126 -0
- package/src/models/components/passwordrequiredresponse.ts +105 -0
- package/src/models/components/samlloginrequiredresponse.ts +136 -0
- package/src/models/components/security.ts +75 -0
- package/src/models/components/status.ts +38 -0
- package/src/models/components/systemsummary.ts +69 -0
- package/src/models/components/user.ts +451 -0
- package/src/models/components/vendorjobtitle.ts +76 -0
- package/src/models/components/vendortype.ts +170 -0
- package/src/models/errors/apierror.ts +27 -0
- package/src/models/errors/apierrorresponse.ts +95 -0
- package/src/models/errors/httpclienterrors.ts +62 -0
- package/src/models/errors/index.ts +8 -0
- package/src/models/errors/sdkvalidationerror.ts +97 -0
- package/src/models/operations/createvendorregistration.ts +237 -0
- package/src/models/operations/getfacility.ts +69 -0
- package/src/models/operations/getuserbyid.ts +69 -0
- package/src/models/operations/index.ts +10 -0
- package/src/models/operations/listorsearchfacilities.ts +219 -0
- package/src/models/operations/listvendorjobtitles.ts +179 -0
- package/src/models/operations/logsuserintothesystem.ts +270 -0
- package/src/react-query/_types.ts +91 -0
- package/src/react-query/index.ts +14 -0
- package/src/react-query/organizationsGetFacility.ts +154 -0
- package/src/react-query/organizationsListOrSearchFacilities.ts +241 -0
- package/src/react-query/userGetCurrentUser.ts +124 -0
- package/src/react-query/userGetUserById.ts +152 -0
- package/src/react-query/userLogsUserIntoTheSystem.ts +119 -0
- package/src/react-query/vendorsCreateVendorRegistration.ts +93 -0
- package/src/react-query/vendorsListVendorJobTitles.ts +194 -0
- package/src/sdk/index.ts +5 -0
- package/src/sdk/organizations.ts +59 -0
- package/src/sdk/sdk.ts +25 -0
- package/src/sdk/user.ts +92 -0
- package/src/sdk/vendors.ts +45 -0
- package/src/types/blobs.ts +31 -0
- package/src/types/constdatetime.ts +15 -0
- package/src/types/enums.ts +16 -0
- package/src/types/fp.ts +50 -0
- package/src/types/index.ts +11 -0
- package/src/types/operations.ts +105 -0
- package/src/types/rfcdate.ts +54 -0
- package/src/types/streams.ts +21 -0
- package/tsconfig.json +41 -0
- package/types/blobs.d.ts +4 -0
- package/types/blobs.d.ts.map +1 -0
- package/types/blobs.js +62 -0
- package/types/blobs.js.map +1 -0
- package/types/constdatetime.d.ts +3 -0
- package/types/constdatetime.d.ts.map +1 -0
- package/types/constdatetime.js +46 -0
- package/types/constdatetime.js.map +1 -0
- package/types/enums.d.ts +12 -0
- package/types/enums.d.ts.map +1 -0
- package/types/enums.js +10 -0
- package/types/enums.js.map +1 -0
- package/types/fp.d.ts +31 -0
- package/types/fp.d.ts.map +1 -0
- package/types/fp.js +37 -0
- package/types/fp.js.map +1 -0
- package/types/index.d.ts +8 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.js +16 -0
- package/types/index.js.map +1 -0
- package/types/operations.d.ts +27 -0
- package/types/operations.d.ts.map +1 -0
- package/types/operations.js +83 -0
- package/types/operations.js.map +1 -0
- package/types/rfcdate.d.ts +21 -0
- package/types/rfcdate.d.ts.map +1 -0
- package/types/rfcdate.js +46 -0
- package/types/rfcdate.js.map +1 -0
- package/types/streams.d.ts +2 -0
- package/types/streams.d.ts.map +1 -0
- package/types/streams.js +18 -0
- package/types/streams.js.map +1 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
|
|
2
|
+
<div align="center">
|
|
3
|
+
<a href="https://codespaces.new/repconnex/repconnex.git/tree/main"><img src="https://github.com/codespaces/badge.svg" /></a>
|
|
4
|
+
</div>
|
|
5
|
+
<br>
|
|
6
|
+
|
|
7
|
+
> **Remember to shutdown a GitHub Codespace when it is not in use!**
|
|
8
|
+
|
|
9
|
+
# Dev Containers Quick Start
|
|
10
|
+
|
|
11
|
+
The default location for usage snippets is the `samples` directory.
|
|
12
|
+
|
|
13
|
+
## Running a Usage Sample
|
|
14
|
+
|
|
15
|
+
A sample usage example has been provided in a `root.ts` file. As you work with the SDK, it's expected that you will modify these samples to fit your needs. To execute this particular snippet, use the command below.
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
ts-node root.ts
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Generating Additional Usage Samples
|
|
22
|
+
|
|
23
|
+
The speakeasy CLI allows you to generate more usage snippets. Here's how:
|
|
24
|
+
|
|
25
|
+
- To generate a sample for a specific operation by providing an operation ID, use:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
speakeasy generate usage -s https://example.com/OVERWRITE_WHEN_SAMPLE_SPEC_IS_WRITTEN -l typescript -i {INPUT_OPERATION_ID} -o ./samples
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- To generate samples for an entire namespace (like a tag or group name), use:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
speakeasy generate usage -s https://example.com/OVERWRITE_WHEN_SAMPLE_SPEC_IS_WRITTEN -l typescript -n {INPUT_TAG_NAME} -o ./samples
|
|
35
|
+
```
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
|
2
|
+
// README at: https://github.com/devcontainers/images/tree/main/src/typescript-node
|
|
3
|
+
{
|
|
4
|
+
"name": "TypeScript",
|
|
5
|
+
"image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bullseye",
|
|
6
|
+
// Features to add to the dev container. More info: https://containers.dev/features.
|
|
7
|
+
// "features": {},
|
|
8
|
+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
|
9
|
+
// "forwardPorts": [],
|
|
10
|
+
// Use 'postCreateCommand' to run commands after the container is created.
|
|
11
|
+
"postCreateCommand": "sudo chmod +x ./.devcontainer/setup.sh && ./.devcontainer/setup.sh",
|
|
12
|
+
"customizations": {
|
|
13
|
+
"vscode": {
|
|
14
|
+
"extensions": [
|
|
15
|
+
"ms-vscode.vscode-typescript-tslint-plugin",
|
|
16
|
+
"esbenp.prettier-vscode",
|
|
17
|
+
"github.vscode-pull-request-github"
|
|
18
|
+
],
|
|
19
|
+
"settings": {
|
|
20
|
+
"files.eol": "\n",
|
|
21
|
+
"editor.formatOnSave": true,
|
|
22
|
+
"typescript.tsc.autoDetect": "on",
|
|
23
|
+
"typescript.updateImportsOnFileMove.enabled": "always",
|
|
24
|
+
"typescript.preferences.importModuleSpecifier": "relative",
|
|
25
|
+
"[typescript]": {
|
|
26
|
+
"editor.codeActionsOnSave": {
|
|
27
|
+
"source.organizeImports": true
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"[typescriptreact]": {
|
|
31
|
+
"editor.codeActionsOnSave": {
|
|
32
|
+
"source.organizeImports": true
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"codespaces": {
|
|
38
|
+
"openFiles": [
|
|
39
|
+
".devcontainer/README.md"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
|
44
|
+
// "remoteUser": "root"
|
|
45
|
+
}
|
package/FUNCTIONS.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Standalone Functions
|
|
2
|
+
|
|
3
|
+
> [!NOTE]
|
|
4
|
+
> This section is useful if you are using a bundler and targetting browsers and
|
|
5
|
+
> runtimes where the size of an application affects performance and load times.
|
|
6
|
+
|
|
7
|
+
Every method in this SDK is also available as a standalone function. This
|
|
8
|
+
alternative API is suitable when targetting the browser or serverless runtimes
|
|
9
|
+
and using a bundler to build your application since all unused functionality
|
|
10
|
+
will be tree-shaken away. This includes code for unused methods, Zod schemas,
|
|
11
|
+
encoding helpers and response handlers. The result is dramatically smaller
|
|
12
|
+
impact on the application's final bundle size which grows very slowly as you use
|
|
13
|
+
more and more functionality from this SDK.
|
|
14
|
+
|
|
15
|
+
Calling methods through the main SDK class remains a valid and generally more
|
|
16
|
+
more ergonomic option. Standalone functions represent an optimisation for a
|
|
17
|
+
specific category of applications.
|
|
18
|
+
|
|
19
|
+
## Example
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
import { GreenSecurityCore } from "@greensecurity/javascript-sdk/core.js";
|
|
23
|
+
import { vendorsCreateVendorRegistration } from "@greensecurity/javascript-sdk/funcs/vendorsCreateVendorRegistration.js";
|
|
24
|
+
import { SDKValidationError } from "@greensecurity/javascript-sdk/models/errors/sdkvalidationerror.js";
|
|
25
|
+
|
|
26
|
+
// Use `GreenSecurityCore` for best tree-shaking performance.
|
|
27
|
+
// You can create one instance of it to use across an application.
|
|
28
|
+
const greenSecurity = new GreenSecurityCore();
|
|
29
|
+
|
|
30
|
+
async function run() {
|
|
31
|
+
const res = await vendorsCreateVendorRegistration(greenSecurity, {
|
|
32
|
+
email: "user@example.com",
|
|
33
|
+
password: "Abcdef123!",
|
|
34
|
+
timezone: "America/Chicago",
|
|
35
|
+
affiliateId: 123,
|
|
36
|
+
vendorGroupId: 123,
|
|
37
|
+
managingCompanyId: 123,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
switch (true) {
|
|
41
|
+
case res.ok:
|
|
42
|
+
// The success case will be handled outside of the switch block
|
|
43
|
+
break;
|
|
44
|
+
case res.error instanceof SDKValidationError:
|
|
45
|
+
// Pretty-print validation errors.
|
|
46
|
+
return console.log(res.error.pretty());
|
|
47
|
+
case res.error instanceof Error:
|
|
48
|
+
return console.log(res.error);
|
|
49
|
+
default:
|
|
50
|
+
// TypeScript's type checking will fail on the following line if the above
|
|
51
|
+
// cases were not exhaustive.
|
|
52
|
+
res.error satisfies never;
|
|
53
|
+
throw new Error("Assertion failed: expected error checks to be exhaustive: " + res.error);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
const { value: result } = res;
|
|
58
|
+
|
|
59
|
+
// Handle the result
|
|
60
|
+
console.log(result);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
run();
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Result types
|
|
67
|
+
|
|
68
|
+
Standalone functions differ from SDK methods in that they return a
|
|
69
|
+
`Result<Value, Error>` type to capture _known errors_ and document them using
|
|
70
|
+
the type system. By avoiding throwing errors, application code maintains clear
|
|
71
|
+
control flow and error-handling become part of the regular flow of application
|
|
72
|
+
code.
|
|
73
|
+
|
|
74
|
+
> We use the term "known errors" because standalone functions, and JavaScript
|
|
75
|
+
> code in general, can still throw unexpected errors such as `TypeError`s,
|
|
76
|
+
> `RangeError`s and `DOMException`s. Exhaustively catching all errors may be
|
|
77
|
+
> something this SDK addresses in the future. Nevertheless, there is still a lot
|
|
78
|
+
> of benefit from capturing most errors and turning them into values.
|
|
79
|
+
|
|
80
|
+
The second reason for this style of programming is because these functions will
|
|
81
|
+
typically be used in front-end applications where exception throwing is
|
|
82
|
+
sometimes discouraged or considered unidiomatic. React and similar ecosystems
|
|
83
|
+
and libraries tend to promote this style of programming so that components
|
|
84
|
+
render useful content under all states (loading, success, error and so on).
|
|
85
|
+
|
|
86
|
+
The general pattern when calling standalone functions looks like this:
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
import { Core } from "<sdk-package-name>";
|
|
90
|
+
import { fetchSomething } from "<sdk-package-name>/funcs/fetchSomething.js";
|
|
91
|
+
|
|
92
|
+
const client = new Core();
|
|
93
|
+
|
|
94
|
+
async function run() {
|
|
95
|
+
const result = await fetchSomething(client, { id: "123" });
|
|
96
|
+
if (!result.ok) {
|
|
97
|
+
// You can throw the error or handle it. It's your choice now.
|
|
98
|
+
throw result.error;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
console.log(result.value);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
run();
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Notably, `result.error` above will have an explicit type compared to a try-catch
|
|
108
|
+
variation where the error in the catch block can only be of type `unknown` (or
|
|
109
|
+
`any` depending on your TypeScript settings).
|
package/REACT_QUERY.md
ADDED
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
# React hooks
|
|
2
|
+
|
|
3
|
+
This SDK provides React hooks and utilies for making queries and mutations that
|
|
4
|
+
can take the pain out of building front-end applications for the web or React
|
|
5
|
+
Native.
|
|
6
|
+
|
|
7
|
+
They are built as a thin wrapper around [TanStack Query for React v5][rq], a
|
|
8
|
+
powerful, asynchronous state management library. A good understanding of that
|
|
9
|
+
library will be very helpful while using them. In addition to hooks, there are
|
|
10
|
+
several helper functions that can be used for cache management and data fetching
|
|
11
|
+
during server-rendering and in React Server Components.
|
|
12
|
+
|
|
13
|
+
## Getting started
|
|
14
|
+
|
|
15
|
+
To get started using React hooks, you will need to inject TanStack query and an
|
|
16
|
+
SDK instance into your application. Typically, this will be done high up in
|
|
17
|
+
your React app at the root or layout component. For example:
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
21
|
+
import { GreenSecurityCore } from "@greensecurity/javascript-sdk";
|
|
22
|
+
import { GreenSecurityProvider } from "@greensecurity/javascript-sdk/react-query";
|
|
23
|
+
|
|
24
|
+
const queryClient = new QueryClient();
|
|
25
|
+
const greenSecurity = new GreenSecurityCore();
|
|
26
|
+
|
|
27
|
+
// Retries are handled by the underlying SDK.
|
|
28
|
+
queryClient.setQueryDefaults(["@greensecurity/javascript-sdk"], { retry: false });
|
|
29
|
+
queryClient.setMutationDefaults(["@greensecurity/javascript-sdk"], { retry: false });
|
|
30
|
+
|
|
31
|
+
export function App() {
|
|
32
|
+
return (
|
|
33
|
+
<QueryClientProvider client={queryClient}>
|
|
34
|
+
<GreenSecurityProvider client={greenSecurity}>
|
|
35
|
+
{/* Your app logic starts here */}
|
|
36
|
+
</GreenSecurityProvider>
|
|
37
|
+
</QueryClientProvider>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Queries
|
|
43
|
+
|
|
44
|
+
Query hooks are the basic building block for fetching data. In addition to
|
|
45
|
+
request data, they take the same options as the [`useQuery` hook][use-query]
|
|
46
|
+
from TanStack Query.
|
|
47
|
+
|
|
48
|
+
[use-query]: https://tanstack.com/query/v5/docs/framework/react/reference/useQuery
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
import { useVendorsListVendorJobTitles } from "@greensecurity/javascript-sdk/react-query/vendorsListVendorJobTitles.js";
|
|
52
|
+
|
|
53
|
+
export function Example() {
|
|
54
|
+
const { data, error, status } = useVendorsListVendorJobTitles({
|
|
55
|
+
sort: "job",
|
|
56
|
+
desc: true,
|
|
57
|
+
itemsPerPage: 25,
|
|
58
|
+
jobLike: "job",
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// Render the UI here...
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Query timeouts and retries
|
|
66
|
+
|
|
67
|
+
Since the underlying SDK handles request timeouts and retries, there are a few
|
|
68
|
+
more options provided by the query hooks to control these behaviors.
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
import { useState } from "react";
|
|
72
|
+
import { useVendorsListVendorJobTitles } from "@greensecurity/javascript-sdk/react-query/vendorsListVendorJobTitles.js";
|
|
73
|
+
|
|
74
|
+
export function ExampleWithOptions() {
|
|
75
|
+
const [enabled, setEnabled] = useState(true);
|
|
76
|
+
const { data, error, status } = useVendorsListVendorJobTitles(
|
|
77
|
+
{
|
|
78
|
+
sort: "job",
|
|
79
|
+
desc: true,
|
|
80
|
+
itemsPerPage: 25,
|
|
81
|
+
jobLike: "job",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
// TanStack Query options:
|
|
85
|
+
enabled,
|
|
86
|
+
staleTime: 60 * 1000, // 1 minute
|
|
87
|
+
gcTime: 5 * 60 * 1000, // 5 minutes
|
|
88
|
+
|
|
89
|
+
// Request options for the underlying API call:
|
|
90
|
+
timeoutMs: 1000,
|
|
91
|
+
retryCodes: ["5XX"],
|
|
92
|
+
retries: {
|
|
93
|
+
strategy: "backoff",
|
|
94
|
+
backoff: {
|
|
95
|
+
initialInterval: 500,
|
|
96
|
+
maxInterval: 10 * 1000, // 10 seconds
|
|
97
|
+
exponent: 1.5,
|
|
98
|
+
maxElapsedTime: 60 * 1000, // 1 minute
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
// Render the UI here...
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
## Mutations
|
|
110
|
+
|
|
111
|
+
Operations that can have side-effects in this SDK are exposed as mutation hooks.
|
|
112
|
+
These can be integrated into HTML forms to submit data to the API. They also
|
|
113
|
+
take the same options as the [`useMutation` hook][use-mutation] from TanStack
|
|
114
|
+
Query.
|
|
115
|
+
|
|
116
|
+
[use-mutation]: https://tanstack.com/query/v5/docs/framework/react/reference/useMutation
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
import { useVendorsCreateVendorRegistrationMutation } from "@greensecurity/javascript-sdk/react-query/vendorsCreateVendorRegistration.js";
|
|
120
|
+
|
|
121
|
+
export function Example() {
|
|
122
|
+
const { mutate, status } = useVendorsCreateVendorRegistrationMutation();
|
|
123
|
+
|
|
124
|
+
return (
|
|
125
|
+
<form
|
|
126
|
+
onSubmit={(e) => {
|
|
127
|
+
e.preventDefault();
|
|
128
|
+
|
|
129
|
+
// Read form data here...
|
|
130
|
+
|
|
131
|
+
mutate({
|
|
132
|
+
email: "user@example.com",
|
|
133
|
+
password: "Abcdef123!",
|
|
134
|
+
timezone: "America/Chicago",
|
|
135
|
+
affiliateId: 123,
|
|
136
|
+
vendorGroupId: 123,
|
|
137
|
+
managingCompanyId: 123,
|
|
138
|
+
});
|
|
139
|
+
}}
|
|
140
|
+
>
|
|
141
|
+
{/* Form fields go here... */}
|
|
142
|
+
<button type="submit" disabled={status === "pending"}>Submit</button>
|
|
143
|
+
</form>
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Mutation timeouts and retries
|
|
149
|
+
|
|
150
|
+
Since the underlying SDK handles request timeouts and retries, there are a few
|
|
151
|
+
more options provided by the mutation hooks to control these behaviors.
|
|
152
|
+
|
|
153
|
+
```tsx
|
|
154
|
+
import { useVendorsCreateVendorRegistrationMutation } from "@greensecurity/javascript-sdk/react-query/vendorsCreateVendorRegistration.js";
|
|
155
|
+
|
|
156
|
+
export function ExampleWithOptions() {
|
|
157
|
+
const { mutate, status } = useVendorsCreateVendorRegistrationMutation({
|
|
158
|
+
// TanStack Query options:
|
|
159
|
+
networkMode: "online",
|
|
160
|
+
gcTime: 5 * 60 * 1000, // 5 minutes
|
|
161
|
+
|
|
162
|
+
// Request options for the underlying API call:
|
|
163
|
+
timeoutMs: 1000,
|
|
164
|
+
retryCodes: ["5XX"],
|
|
165
|
+
retries: {
|
|
166
|
+
strategy: "backoff",
|
|
167
|
+
backoff: {
|
|
168
|
+
initialInterval: 500,
|
|
169
|
+
maxInterval: 10 * 1000, // 10 seconds
|
|
170
|
+
exponent: 1.5,
|
|
171
|
+
maxElapsedTime: 60 * 1000, // 1 minute
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
// Render the UI here...
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
## Cache invalidation
|
|
182
|
+
|
|
183
|
+
In many instances, triggering a mutation hook requires invalidating specific
|
|
184
|
+
query data currently residing in the TanStack Query's cache. Alongside every
|
|
185
|
+
query hook there are two functions that help invalidate cached data:
|
|
186
|
+
|
|
187
|
+
```tsx
|
|
188
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
189
|
+
import { invalidateVendorsListVendorJobTitles, invalidateAllVendorsListVendorJobTitles } from "@greensecurity/javascript-sdk/react-query/vendorsListVendorJobTitles.js";
|
|
190
|
+
// Replace this with a real mutation
|
|
191
|
+
import { useExampleMutation } from "@greensecurity/javascript-sdk/react-query/example.js";
|
|
192
|
+
|
|
193
|
+
export function Example() {
|
|
194
|
+
const { queryClient } = useQueryClient();
|
|
195
|
+
const { mutate, status } = useExampleMutation();
|
|
196
|
+
|
|
197
|
+
return (
|
|
198
|
+
<form
|
|
199
|
+
onSubmit={(e) => {
|
|
200
|
+
e.preventDefault();
|
|
201
|
+
|
|
202
|
+
const formData = new FormData(e.target);
|
|
203
|
+
|
|
204
|
+
mutate(formData, {
|
|
205
|
+
onSuccess: () => {
|
|
206
|
+
// Invalidate a single cache entry:
|
|
207
|
+
invalidateVendorsListVendorJobTitles(queryClient, /* ... arguments ... */);
|
|
208
|
+
// OR, invalidate all cache entries for the query targets:
|
|
209
|
+
invalidateAllVendorsListVendorJobTitles(queryClient);
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
}}
|
|
213
|
+
>
|
|
214
|
+
{/* Form fields go here... */}
|
|
215
|
+
|
|
216
|
+
<button type="submit" disabled={status === "pending"}>Submit</button>
|
|
217
|
+
</form>
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
## Integration with React Suspense
|
|
224
|
+
|
|
225
|
+
TanStack Query predates React Suspense and out of the box it does a great job at
|
|
226
|
+
exposing the lifecycle of asynchronous tasks. However, if you are already using
|
|
227
|
+
Suspense in your app, the default hooks will not trigger suspense boundaries.
|
|
228
|
+
This is why the library and, by extension, this SDK also provide equivalent
|
|
229
|
+
hooks that integrate neatly with React Suspense.
|
|
230
|
+
|
|
231
|
+
```tsx
|
|
232
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
233
|
+
import { ErrorBoundary } from "react-error-boundary";
|
|
234
|
+
|
|
235
|
+
import { GreenSecurityCore } from "@greensecurity/javascript-sdk";
|
|
236
|
+
import { GreenSecurityProvider } from "@greensecurity/javascript-sdk/react-query";
|
|
237
|
+
import { useVendorsListVendorJobTitlesSuspense } from "@greensecurity/javascript-sdk/react-query/vendorsListVendorJobTitles.js";
|
|
238
|
+
|
|
239
|
+
const queryClient = new QueryClient();
|
|
240
|
+
const greenSecurity = new GreenSecurityCore();
|
|
241
|
+
|
|
242
|
+
export function App() {
|
|
243
|
+
return (
|
|
244
|
+
<QueryClientProvider client={queryClient}>
|
|
245
|
+
<GreenSecurityProvider client={greenSecurity}>
|
|
246
|
+
<QueryErrorResetBoundary>
|
|
247
|
+
{({ reset }) => (
|
|
248
|
+
<ErrorBoundary
|
|
249
|
+
fallbackRender={({ error, resetErrorBoundary }) => (
|
|
250
|
+
<div>
|
|
251
|
+
There was an error!{' '}
|
|
252
|
+
<Button onClick={() => resetErrorBoundary()}>Try again</Button>
|
|
253
|
+
<pre>{error.message}</pre>
|
|
254
|
+
</div>
|
|
255
|
+
)}
|
|
256
|
+
onReset={reset}
|
|
257
|
+
>
|
|
258
|
+
<React.Suspense fallback={<h1>Loading...</h1>}>
|
|
259
|
+
<Example />
|
|
260
|
+
</React.Suspense>
|
|
261
|
+
</ErrorBoundary>
|
|
262
|
+
)}
|
|
263
|
+
</QueryErrorResetBoundary>
|
|
264
|
+
</GreenSecurityProvider>
|
|
265
|
+
</QueryClientProvider>
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
function Example() {
|
|
270
|
+
const { data } = useVendorsListVendorJobTitlesSuspense({
|
|
271
|
+
sort: "job",
|
|
272
|
+
desc: true,
|
|
273
|
+
itemsPerPage: 25,
|
|
274
|
+
jobLike: "job",
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
// Render the UI here...
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
## Server-rendering and React Server Components
|
|
283
|
+
|
|
284
|
+
Query hooks are also side-loaded with prefetch helper functions. These functions
|
|
285
|
+
can be used to fetch data from the API during server-rendering and in React
|
|
286
|
+
Server Components so that it can be available immediately on page load to any
|
|
287
|
+
components that use the corresponding hooks:
|
|
288
|
+
```tsx
|
|
289
|
+
import {
|
|
290
|
+
dehydrate,
|
|
291
|
+
HydrationBoundary,
|
|
292
|
+
QueryClient,
|
|
293
|
+
} from "@tanstack/react-query";
|
|
294
|
+
import { GreenSecurityCore } from "@greensecurity/javascript-sdk";
|
|
295
|
+
import { prefetchVendorsListVendorJobTitles } from "@greensecurity/javascript-sdk/react-query/vendorsListVendorJobTitles.js";
|
|
296
|
+
|
|
297
|
+
export default async function Page() {
|
|
298
|
+
const queryClient = new QueryClient();
|
|
299
|
+
const greenSecurity = new GreenSecurityCore();
|
|
300
|
+
|
|
301
|
+
await prefetchVendorsListVendorJobTitles(queryClient, greenSecurity, {
|
|
302
|
+
sort: "job",
|
|
303
|
+
desc: true,
|
|
304
|
+
itemsPerPage: 25,
|
|
305
|
+
jobLike: "job",
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
return (
|
|
309
|
+
// HydrationBoundary is a Client Component, so hydration will happen there.
|
|
310
|
+
<HydrationBoundary state={dehydrate(queryClient)}>
|
|
311
|
+
{/* Client components under this point will also have data on page load. */}
|
|
312
|
+
</HydrationBoundary>
|
|
313
|
+
);
|
|
314
|
+
}
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
[rq]: https://tanstack.com/query/v5/docs/framework/react/overview
|