@appsemble/utils 0.20.13 → 0.20.14
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/README.md +4 -4
- package/api/components/index.js +6 -32
- package/api/components/index.js.map +1 -1
- package/api/components/index.ts +5 -5
- package/api/components/parameters/$filter.js +1 -4
- package/api/components/parameters/$filter.js.map +1 -1
- package/api/components/parameters/$orderby.js +1 -4
- package/api/components/parameters/$orderby.js.map +1 -1
- package/api/components/parameters/$select.js +1 -4
- package/api/components/parameters/$select.js.map +1 -1
- package/api/components/parameters/$team.js +3 -6
- package/api/components/parameters/$team.js.map +1 -1
- package/api/components/parameters/$team.ts +1 -1
- package/api/components/parameters/$top.js +1 -4
- package/api/components/parameters/$top.js.map +1 -1
- package/api/components/parameters/appId.js +1 -4
- package/api/components/parameters/appId.js.map +1 -1
- package/api/components/parameters/appOAuth2SecretId.js +1 -4
- package/api/components/parameters/appOAuth2SecretId.js.map +1 -1
- package/api/components/parameters/appSamlSecretId.js +1 -4
- package/api/components/parameters/appSamlSecretId.js.map +1 -1
- package/api/components/parameters/assetId.js +1 -4
- package/api/components/parameters/assetId.js.map +1 -1
- package/api/components/parameters/blockId.js +3 -6
- package/api/components/parameters/blockId.js.map +1 -1
- package/api/components/parameters/blockId.ts +1 -1
- package/api/components/parameters/blockVersion.js +1 -4
- package/api/components/parameters/blockVersion.js.map +1 -1
- package/api/components/parameters/endpoint.js +1 -4
- package/api/components/parameters/endpoint.js.map +1 -1
- package/api/components/parameters/index.d.ts +18 -18
- package/api/components/parameters/index.js +18 -34
- package/api/components/parameters/index.js.map +1 -1
- package/api/components/parameters/index.ts +18 -18
- package/api/components/parameters/language.js +1 -4
- package/api/components/parameters/language.js.map +1 -1
- package/api/components/parameters/organizationId.js +1 -4
- package/api/components/parameters/organizationId.js.map +1 -1
- package/api/components/parameters/resourceId.js +1 -4
- package/api/components/parameters/resourceId.js.map +1 -1
- package/api/components/parameters/resourceType.js +1 -4
- package/api/components/parameters/resourceType.js.map +1 -1
- package/api/components/parameters/screenshotId.js +1 -4
- package/api/components/parameters/screenshotId.js.map +1 -1
- package/api/components/parameters/view.js +1 -4
- package/api/components/parameters/view.js.map +1 -1
- package/api/components/requestBodies/index.d.ts +3 -3
- package/api/components/requestBodies/index.js +3 -19
- package/api/components/requestBodies/index.js.map +1 -1
- package/api/components/requestBodies/index.ts +3 -3
- package/api/components/requestBodies/oauth2Consent.js +1 -4
- package/api/components/requestBodies/oauth2Consent.js.map +1 -1
- package/api/components/requestBodies/resource.js +1 -4
- package/api/components/requestBodies/resource.js.map +1 -1
- package/api/components/requestBodies/user.js +1 -4
- package/api/components/requestBodies/user.js.map +1 -1
- package/api/components/responses/app.js +1 -4
- package/api/components/responses/app.js.map +1 -1
- package/api/components/responses/blockVersion.js +1 -4
- package/api/components/responses/blockVersion.js.map +1 -1
- package/api/components/responses/default.js +1 -3
- package/api/components/responses/default.js.map +1 -1
- package/api/components/responses/index.d.ts +8 -8
- package/api/components/responses/index.js +8 -29
- package/api/components/responses/index.js.map +1 -1
- package/api/components/responses/index.ts +8 -8
- package/api/components/responses/invite.js +1 -4
- package/api/components/responses/invite.js.map +1 -1
- package/api/components/responses/oauth2AuthorizationCode.js +1 -4
- package/api/components/responses/oauth2AuthorizationCode.js.map +1 -1
- package/api/components/responses/organization.js +1 -4
- package/api/components/responses/organization.js.map +1 -1
- package/api/components/responses/resource.js +1 -4
- package/api/components/responses/resource.js.map +1 -1
- package/api/components/responses/subscriptions.js +1 -4
- package/api/components/responses/subscriptions.js.map +1 -1
- package/api/components/schemas/ActionDefinition.js +1 -4
- package/api/components/schemas/ActionDefinition.js.map +1 -1
- package/api/components/schemas/AnalyticsActionDefinition.js +3 -6
- package/api/components/schemas/AnalyticsActionDefinition.js.map +1 -1
- package/api/components/schemas/AnalyticsActionDefinition.ts +2 -2
- package/api/components/schemas/App.js +4 -7
- package/api/components/schemas/App.js.map +1 -1
- package/api/components/schemas/App.ts +1 -1
- package/api/components/schemas/AppAccount.js +1 -4
- package/api/components/schemas/AppAccount.js.map +1 -1
- package/api/components/schemas/AppDefinition.js +3 -6
- package/api/components/schemas/AppDefinition.js.map +1 -1
- package/api/components/schemas/AppDefinition.ts +1 -1
- package/api/components/schemas/AppLayoutDefinition.js +1 -4
- package/api/components/schemas/AppLayoutDefinition.js.map +1 -1
- package/api/components/schemas/AppMessages.js +1 -4
- package/api/components/schemas/AppMessages.js.map +1 -1
- package/api/components/schemas/AppOAuth2Secret.js +1 -4
- package/api/components/schemas/AppOAuth2Secret.js.map +1 -1
- package/api/components/schemas/AppsembleMessages.js +4 -7
- package/api/components/schemas/AppsembleMessages.js.map +1 -1
- package/api/components/schemas/AppsembleMessages.ts +1 -1
- package/api/components/schemas/Asset.js +4 -7
- package/api/components/schemas/Asset.js.map +1 -1
- package/api/components/schemas/Asset.ts +1 -1
- package/api/components/schemas/BaseActionDefinition.js +1 -4
- package/api/components/schemas/BaseActionDefinition.js.map +1 -1
- package/api/components/schemas/BaseJSONSchema.js +1 -4
- package/api/components/schemas/BaseJSONSchema.js.map +1 -1
- package/api/components/schemas/BasePageDefinition.js +1 -4
- package/api/components/schemas/BasePageDefinition.js.map +1 -1
- package/api/components/schemas/BlockDefinition.js +4 -7
- package/api/components/schemas/BlockDefinition.js.map +1 -1
- package/api/components/schemas/BlockDefinition.ts +1 -1
- package/api/components/schemas/BlockVersion.js +4 -7
- package/api/components/schemas/BlockVersion.js.map +1 -1
- package/api/components/schemas/BlockVersion.ts +1 -1
- package/api/components/schemas/ConditionActionDefinition.js +3 -6
- package/api/components/schemas/ConditionActionDefinition.js.map +1 -1
- package/api/components/schemas/ConditionActionDefinition.ts +2 -2
- package/api/components/schemas/CronDefinition.js +1 -4
- package/api/components/schemas/CronDefinition.js.map +1 -1
- package/api/components/schemas/CustomFontDefinition.js +1 -4
- package/api/components/schemas/CustomFontDefinition.js.map +1 -1
- package/api/components/schemas/DialogActionDefinition.js +3 -6
- package/api/components/schemas/DialogActionDefinition.js.map +1 -1
- package/api/components/schemas/DialogActionDefinition.ts +2 -2
- package/api/components/schemas/DialogErrorActionDefinition.js +3 -6
- package/api/components/schemas/DialogErrorActionDefinition.js.map +1 -1
- package/api/components/schemas/DialogErrorActionDefinition.ts +2 -2
- package/api/components/schemas/DialogOkActionDefinition.js +3 -6
- package/api/components/schemas/DialogOkActionDefinition.js.map +1 -1
- package/api/components/schemas/DialogOkActionDefinition.ts +2 -2
- package/api/components/schemas/DownloadActionDefinition.js +3 -6
- package/api/components/schemas/DownloadActionDefinition.js.map +1 -1
- package/api/components/schemas/DownloadActionDefinition.ts +2 -2
- package/api/components/schemas/EmailActionDefinition.js +3 -6
- package/api/components/schemas/EmailActionDefinition.js.map +1 -1
- package/api/components/schemas/EmailActionDefinition.ts +2 -2
- package/api/components/schemas/Error.js +1 -4
- package/api/components/schemas/Error.js.map +1 -1
- package/api/components/schemas/EventActionDefinition.js +3 -6
- package/api/components/schemas/EventActionDefinition.js.map +1 -1
- package/api/components/schemas/EventActionDefinition.ts +2 -2
- package/api/components/schemas/EventsDefinition.js +1 -4
- package/api/components/schemas/EventsDefinition.js.map +1 -1
- package/api/components/schemas/FlowBackActionDefinition.js +3 -6
- package/api/components/schemas/FlowBackActionDefinition.js.map +1 -1
- package/api/components/schemas/FlowBackActionDefinition.ts +2 -2
- package/api/components/schemas/FlowFinishActionDefinition.js +3 -6
- package/api/components/schemas/FlowFinishActionDefinition.js.map +1 -1
- package/api/components/schemas/FlowFinishActionDefinition.ts +2 -2
- package/api/components/schemas/FlowNextActionDefinition.js +3 -6
- package/api/components/schemas/FlowNextActionDefinition.js.map +1 -1
- package/api/components/schemas/FlowNextActionDefinition.ts +2 -2
- package/api/components/schemas/FlowPageActionsDefinition.js +1 -4
- package/api/components/schemas/FlowPageActionsDefinition.js.map +1 -1
- package/api/components/schemas/FlowPageDefinition.js +3 -6
- package/api/components/schemas/FlowPageDefinition.js.map +1 -1
- package/api/components/schemas/FlowPageDefinition.ts +2 -2
- package/api/components/schemas/FlowToActionDefinition.js +3 -6
- package/api/components/schemas/FlowToActionDefinition.js.map +1 -1
- package/api/components/schemas/FlowToActionDefinition.ts +2 -2
- package/api/components/schemas/GoogleFontDefinition.js +4 -7
- package/api/components/schemas/GoogleFontDefinition.js.map +1 -1
- package/api/components/schemas/GoogleFontDefinition.ts +1 -1
- package/api/components/schemas/Health.js +1 -4
- package/api/components/schemas/Health.js.map +1 -1
- package/api/components/schemas/JSONPointer.js +3 -6
- package/api/components/schemas/JSONPointer.js.map +1 -1
- package/api/components/schemas/JSONPointer.ts +2 -2
- package/api/components/schemas/JSONSchema.js +1 -4
- package/api/components/schemas/JSONSchema.js.map +1 -1
- package/api/components/schemas/JSONSchemaAnyOf.js +3 -6
- package/api/components/schemas/JSONSchemaAnyOf.js.map +1 -1
- package/api/components/schemas/JSONSchemaAnyOf.ts +2 -2
- package/api/components/schemas/JSONSchemaArray.js +3 -6
- package/api/components/schemas/JSONSchemaArray.js.map +1 -1
- package/api/components/schemas/JSONSchemaArray.ts +2 -2
- package/api/components/schemas/JSONSchemaBoolean.js +3 -6
- package/api/components/schemas/JSONSchemaBoolean.js.map +1 -1
- package/api/components/schemas/JSONSchemaBoolean.ts +2 -2
- package/api/components/schemas/JSONSchemaConst.js +3 -6
- package/api/components/schemas/JSONSchemaConst.js.map +1 -1
- package/api/components/schemas/JSONSchemaConst.ts +2 -2
- package/api/components/schemas/JSONSchemaEnum.js +3 -6
- package/api/components/schemas/JSONSchemaEnum.js.map +1 -1
- package/api/components/schemas/JSONSchemaEnum.ts +2 -2
- package/api/components/schemas/JSONSchemaInteger.js +3 -6
- package/api/components/schemas/JSONSchemaInteger.js.map +1 -1
- package/api/components/schemas/JSONSchemaInteger.ts +2 -2
- package/api/components/schemas/JSONSchemaMultiType.js +23 -26
- package/api/components/schemas/JSONSchemaMultiType.js.map +1 -1
- package/api/components/schemas/JSONSchemaMultiType.ts +6 -6
- package/api/components/schemas/JSONSchemaNot.js +3 -6
- package/api/components/schemas/JSONSchemaNot.js.map +1 -1
- package/api/components/schemas/JSONSchemaNot.ts +2 -2
- package/api/components/schemas/JSONSchemaNull.js +3 -6
- package/api/components/schemas/JSONSchemaNull.js.map +1 -1
- package/api/components/schemas/JSONSchemaNull.ts +2 -2
- package/api/components/schemas/JSONSchemaNumber.js +3 -6
- package/api/components/schemas/JSONSchemaNumber.js.map +1 -1
- package/api/components/schemas/JSONSchemaNumber.ts +2 -2
- package/api/components/schemas/JSONSchemaObject.js +3 -6
- package/api/components/schemas/JSONSchemaObject.js.map +1 -1
- package/api/components/schemas/JSONSchemaObject.ts +2 -2
- package/api/components/schemas/JSONSchemaOneOf.js +3 -6
- package/api/components/schemas/JSONSchemaOneOf.js.map +1 -1
- package/api/components/schemas/JSONSchemaOneOf.ts +2 -2
- package/api/components/schemas/JSONSchemaRemapper.js +3 -6
- package/api/components/schemas/JSONSchemaRemapper.js.map +1 -1
- package/api/components/schemas/JSONSchemaRemapper.ts +2 -2
- package/api/components/schemas/JSONSchemaRoot.js +3 -6
- package/api/components/schemas/JSONSchemaRoot.js.map +1 -1
- package/api/components/schemas/JSONSchemaRoot.ts +2 -2
- package/api/components/schemas/JSONSchemaString.js +3 -6
- package/api/components/schemas/JSONSchemaString.js.map +1 -1
- package/api/components/schemas/JSONSchemaString.ts +2 -2
- package/api/components/schemas/LinkActionDefinition.js +3 -6
- package/api/components/schemas/LinkActionDefinition.js.map +1 -1
- package/api/components/schemas/LinkActionDefinition.ts +2 -2
- package/api/components/schemas/LinkBackActionDefinition.js +3 -6
- package/api/components/schemas/LinkBackActionDefinition.js.map +1 -1
- package/api/components/schemas/LinkBackActionDefinition.ts +2 -2
- package/api/components/schemas/LinkNextActionDefinition.js +3 -6
- package/api/components/schemas/LinkNextActionDefinition.js.map +1 -1
- package/api/components/schemas/LinkNextActionDefinition.ts +2 -2
- package/api/components/schemas/LogActionDefinition.js +3 -6
- package/api/components/schemas/LogActionDefinition.js.map +1 -1
- package/api/components/schemas/LogActionDefinition.ts +2 -2
- package/api/components/schemas/Member.js +3 -6
- package/api/components/schemas/Member.js.map +1 -1
- package/api/components/schemas/Member.ts +1 -1
- package/api/components/schemas/MessageActionDefinition.js +3 -6
- package/api/components/schemas/MessageActionDefinition.js.map +1 -1
- package/api/components/schemas/MessageActionDefinition.ts +2 -2
- package/api/components/schemas/NoopActionDefinition.js +3 -6
- package/api/components/schemas/NoopActionDefinition.js.map +1 -1
- package/api/components/schemas/NoopActionDefinition.ts +2 -2
- package/api/components/schemas/NotificationHookDataDefinition.js +1 -4
- package/api/components/schemas/NotificationHookDataDefinition.js.map +1 -1
- package/api/components/schemas/NotificationHookDefinition.js +1 -4
- package/api/components/schemas/NotificationHookDefinition.js.map +1 -1
- package/api/components/schemas/OAuth2AuthorizationCode.js +1 -4
- package/api/components/schemas/OAuth2AuthorizationCode.js.map +1 -1
- package/api/components/schemas/OAuth2ClientCredentials.js +3 -6
- package/api/components/schemas/OAuth2ClientCredentials.js.map +1 -1
- package/api/components/schemas/OAuth2ClientCredentials.ts +1 -1
- package/api/components/schemas/ObjectRemapperDefinition.js +1 -4
- package/api/components/schemas/ObjectRemapperDefinition.js.map +1 -1
- package/api/components/schemas/Organization.js +3 -6
- package/api/components/schemas/Organization.js.map +1 -1
- package/api/components/schemas/Organization.ts +1 -1
- package/api/components/schemas/PageDefinition.js +3 -6
- package/api/components/schemas/PageDefinition.js.map +1 -1
- package/api/components/schemas/PageDefinition.ts +2 -2
- package/api/components/schemas/Rating.js +1 -4
- package/api/components/schemas/Rating.js.map +1 -1
- package/api/components/schemas/RemapperDefinition.js +1 -4
- package/api/components/schemas/RemapperDefinition.js.map +1 -1
- package/api/components/schemas/RequestActionDefinition.js +3 -6
- package/api/components/schemas/RequestActionDefinition.js.map +1 -1
- package/api/components/schemas/RequestActionDefinition.ts +2 -2
- package/api/components/schemas/Resource.js +1 -4
- package/api/components/schemas/Resource.js.map +1 -1
- package/api/components/schemas/ResourceCountActionDefinition.js +3 -6
- package/api/components/schemas/ResourceCountActionDefinition.js.map +1 -1
- package/api/components/schemas/ResourceCountActionDefinition.ts +2 -2
- package/api/components/schemas/ResourceCreateActionDefinition.js +3 -6
- package/api/components/schemas/ResourceCreateActionDefinition.js.map +1 -1
- package/api/components/schemas/ResourceCreateActionDefinition.ts +2 -2
- package/api/components/schemas/ResourceDefinition.js +1 -4
- package/api/components/schemas/ResourceDefinition.js.map +1 -1
- package/api/components/schemas/ResourceDeleteActionDefinition.js +3 -6
- package/api/components/schemas/ResourceDeleteActionDefinition.js.map +1 -1
- package/api/components/schemas/ResourceDeleteActionDefinition.ts +2 -2
- package/api/components/schemas/ResourceGetActionDefinition.js +3 -6
- package/api/components/schemas/ResourceGetActionDefinition.js.map +1 -1
- package/api/components/schemas/ResourceGetActionDefinition.ts +2 -2
- package/api/components/schemas/ResourceHistoryDefinition.js +1 -4
- package/api/components/schemas/ResourceHistoryDefinition.js.map +1 -1
- package/api/components/schemas/ResourceHooksDefinition.js +1 -4
- package/api/components/schemas/ResourceHooksDefinition.js.map +1 -1
- package/api/components/schemas/ResourceQueryActionDefinition.js +3 -6
- package/api/components/schemas/ResourceQueryActionDefinition.js.map +1 -1
- package/api/components/schemas/ResourceQueryActionDefinition.ts +2 -2
- package/api/components/schemas/ResourceSubscription.js +1 -4
- package/api/components/schemas/ResourceSubscription.js.map +1 -1
- package/api/components/schemas/ResourceSubscriptionStatusActionDefinition.js +3 -6
- package/api/components/schemas/ResourceSubscriptionStatusActionDefinition.js.map +1 -1
- package/api/components/schemas/ResourceSubscriptionStatusActionDefinition.ts +2 -2
- package/api/components/schemas/ResourceSubscriptionSubscribeActionDefinition.js +3 -6
- package/api/components/schemas/ResourceSubscriptionSubscribeActionDefinition.js.map +1 -1
- package/api/components/schemas/ResourceSubscriptionSubscribeActionDefinition.ts +2 -2
- package/api/components/schemas/ResourceSubscriptionToggleActionDefinition.js +3 -6
- package/api/components/schemas/ResourceSubscriptionToggleActionDefinition.js.map +1 -1
- package/api/components/schemas/ResourceSubscriptionToggleActionDefinition.ts +2 -2
- package/api/components/schemas/ResourceSubscriptionUnsubscribeActionDefinition.js +3 -6
- package/api/components/schemas/ResourceSubscriptionUnsubscribeActionDefinition.js.map +1 -1
- package/api/components/schemas/ResourceSubscriptionUnsubscribeActionDefinition.ts +2 -2
- package/api/components/schemas/ResourceUpdateActionDefinition.js +3 -6
- package/api/components/schemas/ResourceUpdateActionDefinition.js.map +1 -1
- package/api/components/schemas/ResourceUpdateActionDefinition.ts +2 -2
- package/api/components/schemas/ResourceViewDefinition.js +1 -4
- package/api/components/schemas/ResourceViewDefinition.js.map +1 -1
- package/api/components/schemas/SSOConfiguration.js +1 -4
- package/api/components/schemas/SSOConfiguration.js.map +1 -1
- package/api/components/schemas/SecurityDefaultDefinition.js +1 -4
- package/api/components/schemas/SecurityDefaultDefinition.js.map +1 -1
- package/api/components/schemas/SecurityDefinition.js +1 -4
- package/api/components/schemas/SecurityDefinition.js.map +1 -1
- package/api/components/schemas/SecurityRoleDefinition.js +1 -4
- package/api/components/schemas/SecurityRoleDefinition.js.map +1 -1
- package/api/components/schemas/ShareActionDefinition.js +3 -6
- package/api/components/schemas/ShareActionDefinition.js.map +1 -1
- package/api/components/schemas/ShareActionDefinition.ts +2 -2
- package/api/components/schemas/StaticActionDefinition.js +3 -6
- package/api/components/schemas/StaticActionDefinition.js.map +1 -1
- package/api/components/schemas/StaticActionDefinition.ts +2 -2
- package/api/components/schemas/StorageReadActionDefinition.js +3 -6
- package/api/components/schemas/StorageReadActionDefinition.js.map +1 -1
- package/api/components/schemas/StorageReadActionDefinition.ts +2 -2
- package/api/components/schemas/StorageWriteActionDefinition.js +3 -6
- package/api/components/schemas/StorageWriteActionDefinition.js.map +1 -1
- package/api/components/schemas/StorageWriteActionDefinition.ts +2 -2
- package/api/components/schemas/SubPage.js +1 -4
- package/api/components/schemas/SubPage.js.map +1 -1
- package/api/components/schemas/TabsPageDefinition.js +3 -6
- package/api/components/schemas/TabsPageDefinition.js.map +1 -1
- package/api/components/schemas/TabsPageDefinition.ts +2 -2
- package/api/components/schemas/TeamInviteActionDefinition.js +3 -6
- package/api/components/schemas/TeamInviteActionDefinition.js.map +1 -1
- package/api/components/schemas/TeamInviteActionDefinition.ts +2 -2
- package/api/components/schemas/TeamJoinActionDefinition.js +3 -6
- package/api/components/schemas/TeamJoinActionDefinition.js.map +1 -1
- package/api/components/schemas/TeamJoinActionDefinition.ts +2 -2
- package/api/components/schemas/TeamListActionDefinition.js +3 -6
- package/api/components/schemas/TeamListActionDefinition.js.map +1 -1
- package/api/components/schemas/TeamListActionDefinition.ts +2 -2
- package/api/components/schemas/TeamsDefinition.js +1 -4
- package/api/components/schemas/TeamsDefinition.js.map +1 -1
- package/api/components/schemas/Theme.js +19 -22
- package/api/components/schemas/Theme.js.map +1 -1
- package/api/components/schemas/Theme.ts +1 -1
- package/api/components/schemas/ThrowActionDefinition.js +3 -6
- package/api/components/schemas/ThrowActionDefinition.js.map +1 -1
- package/api/components/schemas/ThrowActionDefinition.ts +2 -2
- package/api/components/schemas/User.js +1 -4
- package/api/components/schemas/User.js.map +1 -1
- package/api/components/schemas/UserEmail.js +1 -4
- package/api/components/schemas/UserEmail.js.map +1 -1
- package/api/components/schemas/UserLoginActionDefinition.js +3 -6
- package/api/components/schemas/UserLoginActionDefinition.js.map +1 -1
- package/api/components/schemas/UserLoginActionDefinition.ts +2 -2
- package/api/components/schemas/UserRegisterActionDefinition.js +3 -6
- package/api/components/schemas/UserRegisterActionDefinition.js.map +1 -1
- package/api/components/schemas/UserRegisterActionDefinition.ts +2 -2
- package/api/components/schemas/UserUpdateActionDefinition.js +3 -6
- package/api/components/schemas/UserUpdateActionDefinition.js.map +1 -1
- package/api/components/schemas/UserUpdateActionDefinition.ts +2 -2
- package/api/components/schemas/index.d.ts +102 -102
- package/api/components/schemas/index.js +102 -118
- package/api/components/schemas/index.js.map +1 -1
- package/api/components/schemas/index.ts +102 -102
- package/api/components/schemas/utils.js +3 -7
- package/api/components/schemas/utils.js.map +1 -1
- package/api/components/schemas/utils.ts +1 -1
- package/api/components/securitySchemes/app.js +1 -4
- package/api/components/securitySchemes/app.js.map +1 -1
- package/api/components/securitySchemes/basic.js +1 -4
- package/api/components/securitySchemes/basic.js.map +1 -1
- package/api/components/securitySchemes/cli.js +1 -4
- package/api/components/securitySchemes/cli.js.map +1 -1
- package/api/components/securitySchemes/cli.test.js +3 -5
- package/api/components/securitySchemes/cli.test.js.map +1 -1
- package/api/components/securitySchemes/cli.test.ts +2 -2
- package/api/components/securitySchemes/index.d.ts +4 -4
- package/api/components/securitySchemes/index.js +4 -20
- package/api/components/securitySchemes/index.js.map +1 -1
- package/api/components/securitySchemes/index.ts +4 -4
- package/api/components/securitySchemes/studio.js +1 -4
- package/api/components/securitySchemes/studio.js.map +1 -1
- package/api/index.d.ts +1 -1
- package/api/index.js +8 -35
- package/api/index.js.map +1 -1
- package/api/index.test.js +19 -22
- package/api/index.test.js.map +1 -1
- package/api/index.test.ts +7 -8
- package/api/index.ts +4 -4
- package/api/paths/action.js +1 -4
- package/api/paths/action.js.map +1 -1
- package/api/paths/appMessages.js +1 -4
- package/api/paths/appMessages.js.map +1 -1
- package/api/paths/appOAuth2Secrets.js +1 -4
- package/api/paths/appOAuth2Secrets.js.map +1 -1
- package/api/paths/appSamlSecrets.js +1 -4
- package/api/paths/appSamlSecrets.js.map +1 -1
- package/api/paths/apps.js +9 -12
- package/api/paths/apps.js.map +1 -1
- package/api/paths/apps.ts +1 -1
- package/api/paths/appsembleMessages.js +1 -4
- package/api/paths/appsembleMessages.js.map +1 -1
- package/api/paths/assets.js +3 -6
- package/api/paths/assets.js.map +1 -1
- package/api/paths/assets.ts +1 -1
- package/api/paths/blocks.js +1 -4
- package/api/paths/blocks.js.map +1 -1
- package/api/paths/emails.js +1 -4
- package/api/paths/emails.js.map +1 -1
- package/api/paths/health.js +1 -4
- package/api/paths/health.js.map +1 -1
- package/api/paths/index.js +41 -44
- package/api/paths/index.js.map +1 -1
- package/api/paths/index.ts +20 -20
- package/api/paths/invite.js +1 -4
- package/api/paths/invite.js.map +1 -1
- package/api/paths/oauth2ClientCredentials.js +1 -4
- package/api/paths/oauth2ClientCredentials.js.map +1 -1
- package/api/paths/oauth2Login.js +1 -4
- package/api/paths/oauth2Login.js.map +1 -1
- package/api/paths/oauth2Provider.js +1 -4
- package/api/paths/oauth2Provider.js.map +1 -1
- package/api/paths/organizations.js +5 -8
- package/api/paths/organizations.js.map +1 -1
- package/api/paths/organizations.ts +1 -1
- package/api/paths/resourceHistory.js +1 -4
- package/api/paths/resourceHistory.js.map +1 -1
- package/api/paths/resources.js +1 -4
- package/api/paths/resources.js.map +1 -1
- package/api/paths/saml.js +1 -4
- package/api/paths/saml.js.map +1 -1
- package/api/paths/templates.js +1 -4
- package/api/paths/templates.js.map +1 -1
- package/api/paths/user.js +1 -4
- package/api/paths/user.js.map +1 -1
- package/api/tags/app.js +1 -4
- package/api/tags/app.js.map +1 -1
- package/api/tags/appMember.js +1 -4
- package/api/tags/appMember.js.map +1 -1
- package/api/tags/asset.js +1 -4
- package/api/tags/asset.js.map +1 -1
- package/api/tags/auth.js +1 -4
- package/api/tags/auth.js.map +1 -1
- package/api/tags/index.js +8 -11
- package/api/tags/index.js.map +1 -1
- package/api/tags/index.ts +7 -7
- package/api/tags/language.js +1 -4
- package/api/tags/language.js.map +1 -1
- package/api/tags/organization.js +1 -4
- package/api/tags/organization.js.map +1 -1
- package/api/tags/resource.js +1 -4
- package/api/tags/resource.js.map +1 -1
- package/api/tags/template.js +1 -4
- package/api/tags/template.js.map +1 -1
- package/api/tags/user.js +1 -4
- package/api/tags/user.js.map +1 -1
- package/appMessages.d.ts +1 -1
- package/appMessages.js +7 -12
- package/appMessages.js.map +1 -1
- package/appMessages.test.js +24 -26
- package/appMessages.test.js.map +1 -1
- package/appMessages.test.ts +2 -2
- package/appMessages.ts +2 -2
- package/appSecurity.js +3 -7
- package/appSecurity.js.map +1 -1
- package/appSecurity.test.js +9 -11
- package/appSecurity.test.js.map +1 -1
- package/appSecurity.test.ts +1 -1
- package/appSecurity.ts +1 -1
- package/blockUtils.js +9 -17
- package/blockUtils.js.map +1 -1
- package/blockUtils.test.js +12 -14
- package/blockUtils.test.js.map +1 -1
- package/blockUtils.test.ts +1 -1
- package/blockUtils.ts +2 -2
- package/checkAppRole.js +1 -5
- package/checkAppRole.js.map +1 -1
- package/compare.js +1 -4
- package/compare.js.map +1 -1
- package/constants/Permission.js +2 -5
- package/constants/Permission.js.map +1 -1
- package/constants/asciiLogo.js +1 -4
- package/constants/asciiLogo.js.map +1 -1
- package/constants/baseTheme.js +1 -4
- package/constants/baseTheme.js.map +1 -1
- package/constants/date.js +2 -5
- package/constants/date.js.map +1 -1
- package/constants/fonts.js +1 -4
- package/constants/fonts.js.map +1 -1
- package/constants/index.d.ts +9 -9
- package/constants/index.js +9 -25
- package/constants/index.js.map +1 -1
- package/constants/index.ts +9 -9
- package/constants/locale.js +1 -4
- package/constants/locale.js.map +1 -1
- package/constants/patterns.js +10 -13
- package/constants/patterns.js.map +1 -1
- package/constants/patterns.test.js +9 -11
- package/constants/patterns.test.js.map +1 -1
- package/constants/patterns.test.ts +6 -1
- package/constants/roles.d.ts +1 -1
- package/constants/roles.js +24 -27
- package/constants/roles.js.map +1 -1
- package/constants/roles.ts +1 -1
- package/constants/scopes.js +1 -4
- package/constants/scopes.js.map +1 -1
- package/convertToCsv.js +3 -7
- package/convertToCsv.js.map +1 -1
- package/convertToCsv.test.js +11 -13
- package/convertToCsv.test.js.map +1 -1
- package/convertToCsv.test.ts +1 -1
- package/convertToCsv.ts +1 -1
- package/formatRequestAction.js +1 -5
- package/formatRequestAction.js.map +1 -1
- package/has.js +1 -5
- package/has.js.map +1 -1
- package/has.test.js +5 -7
- package/has.test.js.map +1 -1
- package/has.test.ts +1 -1
- package/i18n.js +2 -7
- package/i18n.js.map +1 -1
- package/i18n.test.js +3 -5
- package/i18n.test.js.map +1 -1
- package/i18n.test.ts +1 -1
- package/ics.js +4 -12
- package/ics.js.map +1 -1
- package/index.d.ts +28 -27
- package/index.js +28 -43
- package/index.js.map +1 -1
- package/index.ts +28 -27
- package/intl-messageformat.d.ts +3 -0
- package/intl-messageformat.js +5 -0
- package/intl-messageformat.js.map +1 -0
- package/intl-messageformat.ts +6 -0
- package/iterApp.js +5 -13
- package/iterApp.js.map +1 -1
- package/iterApp.test.js +73 -71
- package/iterApp.test.js.map +1 -1
- package/iterApp.test.ts +49 -45
- package/jest.config.js +3 -1
- package/jsonschema.js +7 -16
- package/jsonschema.js.map +1 -1
- package/jsonschema.test.js +46 -48
- package/jsonschema.test.js.map +1 -1
- package/jsonschema.test.ts +9 -9
- package/jsonschema.ts +1 -1
- package/langmap.js +4 -11
- package/langmap.js.map +1 -1
- package/mapValues.js +1 -5
- package/mapValues.js.map +1 -1
- package/mapValues.test.js +2 -4
- package/mapValues.test.js.map +1 -1
- package/mapValues.test.ts +1 -1
- package/miscellaneous.js +3 -9
- package/miscellaneous.js.map +1 -1
- package/miscellaneous.test.js +10 -12
- package/miscellaneous.test.js.map +1 -1
- package/miscellaneous.test.ts +1 -1
- package/noop.js +1 -5
- package/noop.js.map +1 -1
- package/normalize.js +1 -5
- package/normalize.js.map +1 -1
- package/normalize.test.js +3 -5
- package/normalize.test.js.map +1 -1
- package/normalize.test.ts +1 -1
- package/objectCache.js +1 -5
- package/objectCache.js.map +1 -1
- package/objectCache.test.js +2 -4
- package/objectCache.test.js.map +1 -1
- package/objectCache.test.ts +1 -1
- package/package.json +4 -5
- package/pem.js +2 -7
- package/pem.js.map +1 -1
- package/prefix.js +1 -5
- package/prefix.js.map +1 -1
- package/prefix.test.js +3 -5
- package/prefix.test.js.map +1 -1
- package/prefix.test.ts +1 -1
- package/remap.js +24 -31
- package/remap.js.map +1 -1
- package/remap.test.js +10 -21
- package/remap.test.js.map +1 -1
- package/remap.test.ts +7 -20
- package/remap.ts +6 -6
- package/string.js +3 -9
- package/string.js.map +1 -1
- package/string.test.js +4 -6
- package/string.test.js.map +1 -1
- package/string.test.ts +1 -1
- package/theme.js +4 -9
- package/theme.js.map +1 -1
- package/theme.test.js +7 -9
- package/theme.test.js.map +1 -1
- package/theme.test.ts +3 -3
- package/theme.ts +1 -1
- package/tsconfig.json +0 -1
- package/types.js +1 -2
- package/validateStyle.js +4 -12
- package/validateStyle.js.map +1 -1
- package/validateStyle.test.js +3 -5
- package/validateStyle.test.js.map +1 -1
- package/validateStyle.test.ts +1 -1
- package/validation.d.ts +1 -1
- package/validation.js +34 -42
- package/validation.js.map +1 -1
- package/validation.test.js +138 -140
- package/validation.test.js.map +1 -1
- package/validation.test.ts +1 -1
- package/validation.ts +6 -6
package/validation.test.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const jsonschema_1 = require("jsonschema");
|
|
4
|
-
const validation_1 = require("./validation");
|
|
1
|
+
import { ValidationError } from 'jsonschema';
|
|
2
|
+
import { validateAppDefinition } from './validation.js';
|
|
5
3
|
function createTestApp() {
|
|
6
4
|
return {
|
|
7
5
|
name: 'Test app',
|
|
@@ -54,10 +52,10 @@ describe('validateAppDefinition', () => {
|
|
|
54
52
|
type: 'test',
|
|
55
53
|
version: '1.2.3',
|
|
56
54
|
});
|
|
57
|
-
const result = await
|
|
55
|
+
const result = await validateAppDefinition(app, () => []);
|
|
58
56
|
expect(result.valid).toBe(false);
|
|
59
57
|
expect(result.errors).toStrictEqual([
|
|
60
|
-
new
|
|
58
|
+
new ValidationError('is not a known block type', 'test', undefined, [
|
|
61
59
|
'pages',
|
|
62
60
|
0,
|
|
63
61
|
'blocks',
|
|
@@ -72,12 +70,12 @@ describe('validateAppDefinition', () => {
|
|
|
72
70
|
type: 'test',
|
|
73
71
|
version: '1.2.3',
|
|
74
72
|
});
|
|
75
|
-
const result = await
|
|
73
|
+
const result = await validateAppDefinition(app, () => [
|
|
76
74
|
{ name: '@appsemble/test', version: '0.0.0', files: [], languages: [] },
|
|
77
75
|
]);
|
|
78
76
|
expect(result.valid).toBe(false);
|
|
79
77
|
expect(result.errors).toStrictEqual([
|
|
80
|
-
new
|
|
78
|
+
new ValidationError('is not a known version for this block type', '1.2.3', undefined, [
|
|
81
79
|
'pages',
|
|
82
80
|
0,
|
|
83
81
|
'blocks',
|
|
@@ -93,7 +91,7 @@ describe('validateAppDefinition', () => {
|
|
|
93
91
|
version: '1.2.3',
|
|
94
92
|
parameters: {},
|
|
95
93
|
});
|
|
96
|
-
const result = await
|
|
94
|
+
const result = await validateAppDefinition(app, () => [
|
|
97
95
|
{
|
|
98
96
|
name: '@appsemble/test',
|
|
99
97
|
version: '1.2.3',
|
|
@@ -108,7 +106,7 @@ describe('validateAppDefinition', () => {
|
|
|
108
106
|
]);
|
|
109
107
|
expect(result.valid).toBe(false);
|
|
110
108
|
expect(result.errors).toStrictEqual([
|
|
111
|
-
new
|
|
109
|
+
new ValidationError('requires property "foo"', {}, undefined, [
|
|
112
110
|
'pages',
|
|
113
111
|
0,
|
|
114
112
|
'blocks',
|
|
@@ -123,7 +121,7 @@ describe('validateAppDefinition', () => {
|
|
|
123
121
|
type: 'test',
|
|
124
122
|
version: '1.2.3',
|
|
125
123
|
});
|
|
126
|
-
const result = await
|
|
124
|
+
const result = await validateAppDefinition(app, () => [
|
|
127
125
|
{
|
|
128
126
|
name: '@appsemble/test',
|
|
129
127
|
version: '1.2.3',
|
|
@@ -138,7 +136,7 @@ describe('validateAppDefinition', () => {
|
|
|
138
136
|
]);
|
|
139
137
|
expect(result.valid).toBe(false);
|
|
140
138
|
expect(result.errors).toStrictEqual([
|
|
141
|
-
new
|
|
139
|
+
new ValidationError('requires property "parameters"', { type: 'test', version: '1.2.3' }, undefined, ['pages', 0, 'blocks', 0]),
|
|
142
140
|
]);
|
|
143
141
|
});
|
|
144
142
|
it('should validate block parameters using the action format', async () => {
|
|
@@ -154,7 +152,7 @@ describe('validateAppDefinition', () => {
|
|
|
154
152
|
onClick: { type: 'noop' },
|
|
155
153
|
},
|
|
156
154
|
});
|
|
157
|
-
const result = await
|
|
155
|
+
const result = await validateAppDefinition(app, () => [
|
|
158
156
|
{
|
|
159
157
|
name: '@appsemble/test',
|
|
160
158
|
version: '1.2.3',
|
|
@@ -174,7 +172,7 @@ describe('validateAppDefinition', () => {
|
|
|
174
172
|
]);
|
|
175
173
|
expect(result.valid).toBe(false);
|
|
176
174
|
expect(result.errors).toStrictEqual([
|
|
177
|
-
new
|
|
175
|
+
new ValidationError('does not conform to the "action" format', 'invalid', undefined, [
|
|
178
176
|
'pages',
|
|
179
177
|
0,
|
|
180
178
|
'blocks',
|
|
@@ -198,7 +196,7 @@ describe('validateAppDefinition', () => {
|
|
|
198
196
|
listen: { myEvent: 'handleEvent' },
|
|
199
197
|
},
|
|
200
198
|
});
|
|
201
|
-
const result = await
|
|
199
|
+
const result = await validateAppDefinition(app, () => [
|
|
202
200
|
{
|
|
203
201
|
name: '@appsemble/test',
|
|
204
202
|
version: '1.2.3',
|
|
@@ -219,7 +217,7 @@ describe('validateAppDefinition', () => {
|
|
|
219
217
|
]);
|
|
220
218
|
expect(result.valid).toBe(false);
|
|
221
219
|
expect(result.errors).toStrictEqual([
|
|
222
|
-
new
|
|
220
|
+
new ValidationError('does not conform to the "event-emitter" format', 'invalid', undefined, [
|
|
223
221
|
'pages',
|
|
224
222
|
0,
|
|
225
223
|
'blocks',
|
|
@@ -243,7 +241,7 @@ describe('validateAppDefinition', () => {
|
|
|
243
241
|
listen: { myEvent: 'handleEvent' },
|
|
244
242
|
},
|
|
245
243
|
});
|
|
246
|
-
const result = await
|
|
244
|
+
const result = await validateAppDefinition(app, () => [
|
|
247
245
|
{
|
|
248
246
|
name: '@appsemble/test',
|
|
249
247
|
version: '1.2.3',
|
|
@@ -264,7 +262,7 @@ describe('validateAppDefinition', () => {
|
|
|
264
262
|
]);
|
|
265
263
|
expect(result.valid).toBe(false);
|
|
266
264
|
expect(result.errors).toStrictEqual([
|
|
267
|
-
new
|
|
265
|
+
new ValidationError('does not conform to the "event-listener" format', 'invalid', undefined, [
|
|
268
266
|
'pages',
|
|
269
267
|
0,
|
|
270
268
|
'blocks',
|
|
@@ -281,7 +279,7 @@ describe('validateAppDefinition', () => {
|
|
|
281
279
|
version: '1.2.3',
|
|
282
280
|
parameters: {},
|
|
283
281
|
});
|
|
284
|
-
const result = await
|
|
282
|
+
const result = await validateAppDefinition(app, () => [
|
|
285
283
|
{
|
|
286
284
|
name: '@appsemble/test',
|
|
287
285
|
version: '1.2.3',
|
|
@@ -291,7 +289,7 @@ describe('validateAppDefinition', () => {
|
|
|
291
289
|
]);
|
|
292
290
|
expect(result.valid).toBe(false);
|
|
293
291
|
expect(result.errors).toStrictEqual([
|
|
294
|
-
new
|
|
292
|
+
new ValidationError('is not allowed on this block type', {}, undefined, [
|
|
295
293
|
'pages',
|
|
296
294
|
0,
|
|
297
295
|
'blocks',
|
|
@@ -310,7 +308,7 @@ describe('validateAppDefinition', () => {
|
|
|
310
308
|
onSubmit: { type: 'noop' },
|
|
311
309
|
},
|
|
312
310
|
});
|
|
313
|
-
const result = await
|
|
311
|
+
const result = await validateAppDefinition(app, () => [
|
|
314
312
|
{
|
|
315
313
|
name: '@appsemble/test',
|
|
316
314
|
version: '1.2.3',
|
|
@@ -323,7 +321,7 @@ describe('validateAppDefinition', () => {
|
|
|
323
321
|
]);
|
|
324
322
|
expect(result.valid).toBe(false);
|
|
325
323
|
expect(result.errors).toStrictEqual([
|
|
326
|
-
new
|
|
324
|
+
new ValidationError('is an unknown action for this block', { type: 'noop' }, undefined, [
|
|
327
325
|
'pages',
|
|
328
326
|
0,
|
|
329
327
|
'blocks',
|
|
@@ -340,7 +338,7 @@ describe('validateAppDefinition', () => {
|
|
|
340
338
|
version: '1.2.3',
|
|
341
339
|
actions: {},
|
|
342
340
|
});
|
|
343
|
-
const result = await
|
|
341
|
+
const result = await validateAppDefinition(app, () => [
|
|
344
342
|
{
|
|
345
343
|
name: '@appsemble/test',
|
|
346
344
|
version: '1.2.3',
|
|
@@ -350,7 +348,7 @@ describe('validateAppDefinition', () => {
|
|
|
350
348
|
]);
|
|
351
349
|
expect(result.valid).toBe(false);
|
|
352
350
|
expect(result.errors).toStrictEqual([
|
|
353
|
-
new
|
|
351
|
+
new ValidationError('is not allowed on this block', {}, undefined, [
|
|
354
352
|
'pages',
|
|
355
353
|
0,
|
|
356
354
|
'blocks',
|
|
@@ -372,7 +370,7 @@ describe('validateAppDefinition', () => {
|
|
|
372
370
|
onClick: 'foo',
|
|
373
371
|
},
|
|
374
372
|
});
|
|
375
|
-
const result = await
|
|
373
|
+
const result = await validateAppDefinition(app, () => [
|
|
376
374
|
{
|
|
377
375
|
name: '@appsemble/test',
|
|
378
376
|
version: '1.2.3',
|
|
@@ -394,7 +392,7 @@ describe('validateAppDefinition', () => {
|
|
|
394
392
|
]);
|
|
395
393
|
expect(result.valid).toBe(false);
|
|
396
394
|
expect(result.errors).toStrictEqual([
|
|
397
|
-
new
|
|
395
|
+
new ValidationError('is unused', { type: 'noop' }, undefined, [
|
|
398
396
|
'pages',
|
|
399
397
|
0,
|
|
400
398
|
'blocks',
|
|
@@ -417,7 +415,7 @@ describe('validateAppDefinition', () => {
|
|
|
417
415
|
onClick: 'foo',
|
|
418
416
|
},
|
|
419
417
|
});
|
|
420
|
-
const result = await
|
|
418
|
+
const result = await validateAppDefinition(app, () => [
|
|
421
419
|
{
|
|
422
420
|
name: '@appsemble/test',
|
|
423
421
|
version: '1.2.3',
|
|
@@ -454,7 +452,7 @@ describe('validateAppDefinition', () => {
|
|
|
454
452
|
},
|
|
455
453
|
},
|
|
456
454
|
});
|
|
457
|
-
const result = await
|
|
455
|
+
const result = await validateAppDefinition(app, () => [
|
|
458
456
|
{
|
|
459
457
|
name: '@appsemble/test',
|
|
460
458
|
version: '1.2.3',
|
|
@@ -469,7 +467,7 @@ describe('validateAppDefinition', () => {
|
|
|
469
467
|
]);
|
|
470
468
|
expect(result.valid).toBe(false);
|
|
471
469
|
expect(result.errors).toStrictEqual([
|
|
472
|
-
new
|
|
470
|
+
new ValidationError('is an unknown event emitter', 'bar', undefined, [
|
|
473
471
|
'pages',
|
|
474
472
|
0,
|
|
475
473
|
'blocks',
|
|
@@ -494,7 +492,7 @@ describe('validateAppDefinition', () => {
|
|
|
494
492
|
},
|
|
495
493
|
},
|
|
496
494
|
});
|
|
497
|
-
const result = await
|
|
495
|
+
const result = await validateAppDefinition(app, () => [
|
|
498
496
|
{
|
|
499
497
|
name: '@appsemble/test',
|
|
500
498
|
version: '1.2.3',
|
|
@@ -523,7 +521,7 @@ describe('validateAppDefinition', () => {
|
|
|
523
521
|
},
|
|
524
522
|
},
|
|
525
523
|
});
|
|
526
|
-
const result = await
|
|
524
|
+
const result = await validateAppDefinition(app, () => [
|
|
527
525
|
{
|
|
528
526
|
name: '@appsemble/test',
|
|
529
527
|
version: '1.2.3',
|
|
@@ -538,7 +536,7 @@ describe('validateAppDefinition', () => {
|
|
|
538
536
|
]);
|
|
539
537
|
expect(result.valid).toBe(false);
|
|
540
538
|
expect(result.errors).toStrictEqual([
|
|
541
|
-
new
|
|
539
|
+
new ValidationError('is an unknown event listener', 'bar', undefined, [
|
|
542
540
|
'pages',
|
|
543
541
|
0,
|
|
544
542
|
'blocks',
|
|
@@ -563,7 +561,7 @@ describe('validateAppDefinition', () => {
|
|
|
563
561
|
},
|
|
564
562
|
},
|
|
565
563
|
});
|
|
566
|
-
const result = await
|
|
564
|
+
const result = await validateAppDefinition(app, () => [
|
|
567
565
|
{
|
|
568
566
|
name: '@appsemble/test',
|
|
569
567
|
version: '1.2.3',
|
|
@@ -589,7 +587,7 @@ describe('validateAppDefinition', () => {
|
|
|
589
587
|
},
|
|
590
588
|
},
|
|
591
589
|
});
|
|
592
|
-
const result = await
|
|
590
|
+
const result = await validateAppDefinition(app, () => [
|
|
593
591
|
{
|
|
594
592
|
name: '@appsemble/test',
|
|
595
593
|
version: '1.2.3',
|
|
@@ -603,7 +601,7 @@ describe('validateAppDefinition', () => {
|
|
|
603
601
|
]);
|
|
604
602
|
expect(result.valid).toBe(false);
|
|
605
603
|
expect(result.errors).toStrictEqual([
|
|
606
|
-
new
|
|
604
|
+
new ValidationError('does not match any event emitters', 'bar', undefined, [
|
|
607
605
|
'pages',
|
|
608
606
|
0,
|
|
609
607
|
'blocks',
|
|
@@ -625,7 +623,7 @@ describe('validateAppDefinition', () => {
|
|
|
625
623
|
},
|
|
626
624
|
},
|
|
627
625
|
});
|
|
628
|
-
const result = await
|
|
626
|
+
const result = await validateAppDefinition(app, () => [
|
|
629
627
|
{
|
|
630
628
|
name: '@appsemble/test',
|
|
631
629
|
version: '1.2.3',
|
|
@@ -639,7 +637,7 @@ describe('validateAppDefinition', () => {
|
|
|
639
637
|
]);
|
|
640
638
|
expect(result.valid).toBe(false);
|
|
641
639
|
expect(result.errors).toStrictEqual([
|
|
642
|
-
new
|
|
640
|
+
new ValidationError('does not match any event listeners', 'bar', undefined, [
|
|
643
641
|
'pages',
|
|
644
642
|
0,
|
|
645
643
|
'blocks',
|
|
@@ -663,7 +661,7 @@ describe('validateAppDefinition', () => {
|
|
|
663
661
|
},
|
|
664
662
|
},
|
|
665
663
|
});
|
|
666
|
-
const result = await
|
|
664
|
+
const result = await validateAppDefinition(app, () => [
|
|
667
665
|
{
|
|
668
666
|
name: '@appsemble/test',
|
|
669
667
|
version: '1.2.3',
|
|
@@ -677,7 +675,7 @@ describe('validateAppDefinition', () => {
|
|
|
677
675
|
]);
|
|
678
676
|
expect(result.valid).toBe(false);
|
|
679
677
|
expect(result.errors).toStrictEqual([
|
|
680
|
-
new
|
|
678
|
+
new ValidationError('does not match any event emitters', 'reply', undefined, [
|
|
681
679
|
'pages',
|
|
682
680
|
0,
|
|
683
681
|
'blocks',
|
|
@@ -686,7 +684,7 @@ describe('validateAppDefinition', () => {
|
|
|
686
684
|
'onClick',
|
|
687
685
|
'waitFor',
|
|
688
686
|
]),
|
|
689
|
-
new
|
|
687
|
+
new ValidationError('does not match any event listeners', 'sent', undefined, [
|
|
690
688
|
'pages',
|
|
691
689
|
0,
|
|
692
690
|
'blocks',
|
|
@@ -700,16 +698,16 @@ describe('validateAppDefinition', () => {
|
|
|
700
698
|
it('should not crash if security is undefined', async () => {
|
|
701
699
|
const app = createTestApp();
|
|
702
700
|
delete app.security;
|
|
703
|
-
const result = await
|
|
701
|
+
const result = await validateAppDefinition(app, () => []);
|
|
704
702
|
expect(result.valid).toBe(true);
|
|
705
703
|
});
|
|
706
704
|
it('should validate the default role exists', async () => {
|
|
707
705
|
const app = createTestApp();
|
|
708
706
|
app.security.default.role = 'Unknown';
|
|
709
|
-
const result = await
|
|
707
|
+
const result = await validateAppDefinition(app, () => []);
|
|
710
708
|
expect(result.valid).toBe(false);
|
|
711
709
|
expect(result.errors).toStrictEqual([
|
|
712
|
-
new
|
|
710
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
713
711
|
'security',
|
|
714
712
|
'default',
|
|
715
713
|
'role',
|
|
@@ -719,19 +717,19 @@ describe('validateAppDefinition', () => {
|
|
|
719
717
|
it('should validate the top level default roles exist', async () => {
|
|
720
718
|
const app = createTestApp();
|
|
721
719
|
app.roles = ['Unknown'];
|
|
722
|
-
const result = await
|
|
720
|
+
const result = await validateAppDefinition(app, () => []);
|
|
723
721
|
expect(result.valid).toBe(false);
|
|
724
722
|
expect(result.errors).toStrictEqual([
|
|
725
|
-
new
|
|
723
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, ['roles', 0]),
|
|
726
724
|
]);
|
|
727
725
|
});
|
|
728
726
|
it('should validate the resource roles exist', async () => {
|
|
729
727
|
const app = createTestApp();
|
|
730
728
|
app.resources.person.roles = ['Unknown'];
|
|
731
|
-
const result = await
|
|
729
|
+
const result = await validateAppDefinition(app, () => []);
|
|
732
730
|
expect(result.valid).toBe(false);
|
|
733
731
|
expect(result.errors).toStrictEqual([
|
|
734
|
-
new
|
|
732
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
735
733
|
'resources',
|
|
736
734
|
'person',
|
|
737
735
|
'roles',
|
|
@@ -747,45 +745,45 @@ describe('validateAppDefinition', () => {
|
|
|
747
745
|
app.resources.person.get = { roles: ['Unknown'] };
|
|
748
746
|
app.resources.person.query = { roles: ['Unknown'] };
|
|
749
747
|
app.resources.person.update = { roles: ['Unknown'] };
|
|
750
|
-
const result = await
|
|
748
|
+
const result = await validateAppDefinition(app, () => []);
|
|
751
749
|
expect(result.valid).toBe(false);
|
|
752
750
|
expect(result.errors).toStrictEqual([
|
|
753
|
-
new
|
|
751
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
754
752
|
'resources',
|
|
755
753
|
'person',
|
|
756
754
|
'count',
|
|
757
755
|
'roles',
|
|
758
756
|
0,
|
|
759
757
|
]),
|
|
760
|
-
new
|
|
758
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
761
759
|
'resources',
|
|
762
760
|
'person',
|
|
763
761
|
'create',
|
|
764
762
|
'roles',
|
|
765
763
|
0,
|
|
766
764
|
]),
|
|
767
|
-
new
|
|
765
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
768
766
|
'resources',
|
|
769
767
|
'person',
|
|
770
768
|
'delete',
|
|
771
769
|
'roles',
|
|
772
770
|
0,
|
|
773
771
|
]),
|
|
774
|
-
new
|
|
772
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
775
773
|
'resources',
|
|
776
774
|
'person',
|
|
777
775
|
'get',
|
|
778
776
|
'roles',
|
|
779
777
|
0,
|
|
780
778
|
]),
|
|
781
|
-
new
|
|
779
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
782
780
|
'resources',
|
|
783
781
|
'person',
|
|
784
782
|
'query',
|
|
785
783
|
'roles',
|
|
786
784
|
0,
|
|
787
785
|
]),
|
|
788
|
-
new
|
|
786
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
789
787
|
'resources',
|
|
790
788
|
'person',
|
|
791
789
|
'update',
|
|
@@ -797,10 +795,10 @@ describe('validateAppDefinition', () => {
|
|
|
797
795
|
it('should validate resources use schemas define a type', async () => {
|
|
798
796
|
const app = createTestApp();
|
|
799
797
|
app.resources.person.schema = { properties: {} };
|
|
800
|
-
const result = await
|
|
798
|
+
const result = await validateAppDefinition(app, () => []);
|
|
801
799
|
expect(result.valid).toBe(false);
|
|
802
800
|
expect(result.errors).toStrictEqual([
|
|
803
|
-
new
|
|
801
|
+
new ValidationError('must define type object', { properties: {} }, undefined, [
|
|
804
802
|
'resources',
|
|
805
803
|
'person',
|
|
806
804
|
'schema',
|
|
@@ -810,10 +808,10 @@ describe('validateAppDefinition', () => {
|
|
|
810
808
|
it('should validate resources use schemas define a type of object', async () => {
|
|
811
809
|
const app = createTestApp();
|
|
812
810
|
app.resources.person.schema = { type: 'string', properties: {} };
|
|
813
|
-
const result = await
|
|
811
|
+
const result = await validateAppDefinition(app, () => []);
|
|
814
812
|
expect(result.valid).toBe(false);
|
|
815
813
|
expect(result.errors).toStrictEqual([
|
|
816
|
-
new
|
|
814
|
+
new ValidationError('must define type object', 'string', undefined, [
|
|
817
815
|
'resources',
|
|
818
816
|
'person',
|
|
819
817
|
'schema',
|
|
@@ -827,10 +825,10 @@ describe('validateAppDefinition', () => {
|
|
|
827
825
|
type: 'object',
|
|
828
826
|
properties: { id: { type: 'string', description: '', title: '', format: 'email' } },
|
|
829
827
|
};
|
|
830
|
-
const result = await
|
|
828
|
+
const result = await validateAppDefinition(app, () => []);
|
|
831
829
|
expect(result.valid).toBe(false);
|
|
832
830
|
expect(result.errors).toStrictEqual([
|
|
833
|
-
new
|
|
831
|
+
new ValidationError('must be integer', 'string', undefined, [
|
|
834
832
|
'resources',
|
|
835
833
|
'person',
|
|
836
834
|
'schema',
|
|
@@ -838,7 +836,7 @@ describe('validateAppDefinition', () => {
|
|
|
838
836
|
'id',
|
|
839
837
|
'type',
|
|
840
838
|
]),
|
|
841
|
-
new
|
|
839
|
+
new ValidationError('does not support custom validators', 'email', undefined, [
|
|
842
840
|
'resources',
|
|
843
841
|
'person',
|
|
844
842
|
'schema',
|
|
@@ -857,10 +855,10 @@ describe('validateAppDefinition', () => {
|
|
|
857
855
|
$updated: { type: 'boolean', description: '', title: '', format: 'uuid' },
|
|
858
856
|
},
|
|
859
857
|
};
|
|
860
|
-
const result = await
|
|
858
|
+
const result = await validateAppDefinition(app, () => []);
|
|
861
859
|
expect(result.valid).toBe(false);
|
|
862
860
|
expect(result.errors).toStrictEqual([
|
|
863
|
-
new
|
|
861
|
+
new ValidationError('must be string', 'number', undefined, [
|
|
864
862
|
'resources',
|
|
865
863
|
'person',
|
|
866
864
|
'schema',
|
|
@@ -868,7 +866,7 @@ describe('validateAppDefinition', () => {
|
|
|
868
866
|
'$created',
|
|
869
867
|
'type',
|
|
870
868
|
]),
|
|
871
|
-
new
|
|
869
|
+
new ValidationError('must be date-time', 'email', undefined, [
|
|
872
870
|
'resources',
|
|
873
871
|
'person',
|
|
874
872
|
'schema',
|
|
@@ -876,7 +874,7 @@ describe('validateAppDefinition', () => {
|
|
|
876
874
|
'$created',
|
|
877
875
|
'format',
|
|
878
876
|
]),
|
|
879
|
-
new
|
|
877
|
+
new ValidationError('must be string', 'boolean', undefined, [
|
|
880
878
|
'resources',
|
|
881
879
|
'person',
|
|
882
880
|
'schema',
|
|
@@ -884,7 +882,7 @@ describe('validateAppDefinition', () => {
|
|
|
884
882
|
'$updated',
|
|
885
883
|
'type',
|
|
886
884
|
]),
|
|
887
|
-
new
|
|
885
|
+
new ValidationError('must be date-time', 'uuid', undefined, [
|
|
888
886
|
'resources',
|
|
889
887
|
'person',
|
|
890
888
|
'schema',
|
|
@@ -900,10 +898,10 @@ describe('validateAppDefinition', () => {
|
|
|
900
898
|
type: 'object',
|
|
901
899
|
properties: { $invalid: { type: 'string' } },
|
|
902
900
|
};
|
|
903
|
-
const result = await
|
|
901
|
+
const result = await validateAppDefinition(app, () => []);
|
|
904
902
|
expect(result.valid).toBe(false);
|
|
905
903
|
expect(result.errors).toStrictEqual([
|
|
906
|
-
new
|
|
904
|
+
new ValidationError('may not start with $', { type: 'string' }, undefined, [
|
|
907
905
|
'resources',
|
|
908
906
|
'person',
|
|
909
907
|
'schema',
|
|
@@ -915,10 +913,10 @@ describe('validateAppDefinition', () => {
|
|
|
915
913
|
it('should report missing properties in JSON schemas', async () => {
|
|
916
914
|
const app = createTestApp();
|
|
917
915
|
app.resources.person.schema = { type: 'object' };
|
|
918
|
-
const result = await
|
|
916
|
+
const result = await validateAppDefinition(app, () => []);
|
|
919
917
|
expect(result.valid).toBe(false);
|
|
920
918
|
expect(result.errors).toStrictEqual([
|
|
921
|
-
new
|
|
919
|
+
new ValidationError('is missing properties', { type: 'object' }, undefined, [
|
|
922
920
|
'resources',
|
|
923
921
|
'person',
|
|
924
922
|
'schema',
|
|
@@ -931,10 +929,10 @@ describe('validateAppDefinition', () => {
|
|
|
931
929
|
type: 'object',
|
|
932
930
|
properties: { foo: { type: 'object' } },
|
|
933
931
|
};
|
|
934
|
-
const result = await
|
|
932
|
+
const result = await validateAppDefinition(app, () => []);
|
|
935
933
|
expect(result.valid).toBe(false);
|
|
936
934
|
expect(result.errors).toStrictEqual([
|
|
937
|
-
new
|
|
935
|
+
new ValidationError('is missing properties', { type: 'object' }, undefined, [
|
|
938
936
|
'resources',
|
|
939
937
|
'person',
|
|
940
938
|
'schema',
|
|
@@ -950,17 +948,17 @@ describe('validateAppDefinition', () => {
|
|
|
950
948
|
required: ['bar'],
|
|
951
949
|
properties: { foo: { type: 'object', properties: {}, required: ['baz'] } },
|
|
952
950
|
};
|
|
953
|
-
const result = await
|
|
951
|
+
const result = await validateAppDefinition(app, () => []);
|
|
954
952
|
expect(result.valid).toBe(false);
|
|
955
953
|
expect(result.errors).toStrictEqual([
|
|
956
|
-
new
|
|
954
|
+
new ValidationError('is not defined in properties', 'bar', undefined, [
|
|
957
955
|
'resources',
|
|
958
956
|
'person',
|
|
959
957
|
'schema',
|
|
960
958
|
'required',
|
|
961
959
|
0,
|
|
962
960
|
]),
|
|
963
|
-
new
|
|
961
|
+
new ValidationError('is not defined in properties', 'baz', undefined, [
|
|
964
962
|
'resources',
|
|
965
963
|
'person',
|
|
966
964
|
'schema',
|
|
@@ -980,10 +978,10 @@ describe('validateAppDefinition', () => {
|
|
|
980
978
|
app.resources.person.get = { roles: ['$author'] };
|
|
981
979
|
app.resources.person.query = { roles: ['$author'] };
|
|
982
980
|
app.resources.person.update = { roles: ['$author'] };
|
|
983
|
-
const result = await
|
|
981
|
+
const result = await validateAppDefinition(app, () => []);
|
|
984
982
|
expect(result.valid).toBe(false);
|
|
985
983
|
expect(result.errors).toStrictEqual([
|
|
986
|
-
new
|
|
984
|
+
new ValidationError('does not exist in this app’s roles', '$author', undefined, [
|
|
987
985
|
'resources',
|
|
988
986
|
'person',
|
|
989
987
|
'create',
|
|
@@ -995,10 +993,10 @@ describe('validateAppDefinition', () => {
|
|
|
995
993
|
it('should validate page roles', async () => {
|
|
996
994
|
const app = createTestApp();
|
|
997
995
|
app.pages[0].roles = ['Unknown'];
|
|
998
|
-
const result = await
|
|
996
|
+
const result = await validateAppDefinition(app, () => []);
|
|
999
997
|
expect(result.valid).toBe(false);
|
|
1000
998
|
expect(result.errors).toStrictEqual([
|
|
1001
|
-
new
|
|
999
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
1002
1000
|
'pages',
|
|
1003
1001
|
0,
|
|
1004
1002
|
'roles',
|
|
@@ -1013,12 +1011,12 @@ describe('validateAppDefinition', () => {
|
|
|
1013
1011
|
version: '1.2.3',
|
|
1014
1012
|
roles: ['Unknown'],
|
|
1015
1013
|
});
|
|
1016
|
-
const result = await
|
|
1014
|
+
const result = await validateAppDefinition(app, () => [
|
|
1017
1015
|
{ name: '@appsemble/test', version: '1.2.3', files: [], languages: [] },
|
|
1018
1016
|
]);
|
|
1019
1017
|
expect(result.valid).toBe(false);
|
|
1020
1018
|
expect(result.errors).toStrictEqual([
|
|
1021
|
-
new
|
|
1019
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
1022
1020
|
'pages',
|
|
1023
1021
|
0,
|
|
1024
1022
|
'blocks',
|
|
@@ -1031,10 +1029,10 @@ describe('validateAppDefinition', () => {
|
|
|
1031
1029
|
it('should validate inherited roles', async () => {
|
|
1032
1030
|
const app = createTestApp();
|
|
1033
1031
|
app.security.roles.User.inherits = ['Unknown'];
|
|
1034
|
-
const result = await
|
|
1032
|
+
const result = await validateAppDefinition(app, () => []);
|
|
1035
1033
|
expect(result.valid).toBe(false);
|
|
1036
1034
|
expect(result.errors).toStrictEqual([
|
|
1037
|
-
new
|
|
1035
|
+
new ValidationError('does not exist in this app’s roles', 'Unknown', undefined, [
|
|
1038
1036
|
'security',
|
|
1039
1037
|
'roles',
|
|
1040
1038
|
'User',
|
|
@@ -1050,20 +1048,20 @@ describe('validateAppDefinition', () => {
|
|
|
1050
1048
|
app.security.roles.C = { inherits: ['E', 'A'] };
|
|
1051
1049
|
app.security.roles.D = { inherits: ['A'] };
|
|
1052
1050
|
app.security.roles.E = {};
|
|
1053
|
-
const result = await
|
|
1051
|
+
const result = await validateAppDefinition(app, () => []);
|
|
1054
1052
|
expect(result.valid).toBe(false);
|
|
1055
1053
|
expect(result.errors).toStrictEqual([
|
|
1056
|
-
new
|
|
1054
|
+
new ValidationError('cyclicly inherits itself', { inherits: ['B'] }, undefined, [
|
|
1057
1055
|
'security',
|
|
1058
1056
|
'roles',
|
|
1059
1057
|
'A',
|
|
1060
1058
|
]),
|
|
1061
|
-
new
|
|
1059
|
+
new ValidationError('cyclicly inherits itself', { inherits: ['C'] }, undefined, [
|
|
1062
1060
|
'security',
|
|
1063
1061
|
'roles',
|
|
1064
1062
|
'B',
|
|
1065
1063
|
]),
|
|
1066
|
-
new
|
|
1064
|
+
new ValidationError('cyclicly inherits itself', { inherits: ['E', 'A'] }, undefined, [
|
|
1067
1065
|
'security',
|
|
1068
1066
|
'roles',
|
|
1069
1067
|
'C',
|
|
@@ -1077,10 +1075,10 @@ describe('validateAppDefinition', () => {
|
|
|
1077
1075
|
to: ['Unknown'],
|
|
1078
1076
|
},
|
|
1079
1077
|
};
|
|
1080
|
-
const result = await
|
|
1078
|
+
const result = await validateAppDefinition(app, () => []);
|
|
1081
1079
|
expect(result.valid).toBe(false);
|
|
1082
1080
|
expect(result.errors).toStrictEqual([
|
|
1083
|
-
new
|
|
1081
|
+
new ValidationError('is an unknown role', 'Unknown', undefined, [
|
|
1084
1082
|
'resources',
|
|
1085
1083
|
'person',
|
|
1086
1084
|
'update',
|
|
@@ -1098,7 +1096,7 @@ describe('validateAppDefinition', () => {
|
|
|
1098
1096
|
to: ['$author'],
|
|
1099
1097
|
},
|
|
1100
1098
|
};
|
|
1101
|
-
const result = await
|
|
1099
|
+
const result = await validateAppDefinition(app, () => []);
|
|
1102
1100
|
expect(result.valid).toBe(true);
|
|
1103
1101
|
});
|
|
1104
1102
|
it('should report invalid resource references', async () => {
|
|
@@ -1108,10 +1106,10 @@ describe('validateAppDefinition', () => {
|
|
|
1108
1106
|
resource: 'non-existent',
|
|
1109
1107
|
},
|
|
1110
1108
|
};
|
|
1111
|
-
const result = await
|
|
1109
|
+
const result = await validateAppDefinition(app, () => []);
|
|
1112
1110
|
expect(result.valid).toBe(false);
|
|
1113
1111
|
expect(result.errors).toStrictEqual([
|
|
1114
|
-
new
|
|
1112
|
+
new ValidationError('is not an existing resource', 'non-existent', undefined, [
|
|
1115
1113
|
'resources',
|
|
1116
1114
|
'person',
|
|
1117
1115
|
'references',
|
|
@@ -1127,10 +1125,10 @@ describe('validateAppDefinition', () => {
|
|
|
1127
1125
|
resource: 'person',
|
|
1128
1126
|
},
|
|
1129
1127
|
};
|
|
1130
|
-
const result = await
|
|
1128
|
+
const result = await validateAppDefinition(app, () => []);
|
|
1131
1129
|
expect(result.valid).toBe(false);
|
|
1132
1130
|
expect(result.errors).toStrictEqual([
|
|
1133
|
-
new
|
|
1131
|
+
new ValidationError('does not exist on this resource', 'invalid', undefined, [
|
|
1134
1132
|
'resources',
|
|
1135
1133
|
'person',
|
|
1136
1134
|
'references',
|
|
@@ -1145,53 +1143,53 @@ describe('validateAppDefinition', () => {
|
|
|
1145
1143
|
resource: 'person',
|
|
1146
1144
|
},
|
|
1147
1145
|
};
|
|
1148
|
-
const result = await
|
|
1146
|
+
const result = await validateAppDefinition(app, () => []);
|
|
1149
1147
|
expect(result.valid).toBe(true);
|
|
1150
1148
|
});
|
|
1151
1149
|
it('should not crash if not resources exist', async () => {
|
|
1152
|
-
const result = await
|
|
1150
|
+
const result = await validateAppDefinition({ ...createTestApp(), resources: undefined }, () => []);
|
|
1153
1151
|
expect(result.valid).toBe(true);
|
|
1154
1152
|
});
|
|
1155
1153
|
it('should report an invalid default language', async () => {
|
|
1156
|
-
const result = await
|
|
1154
|
+
const result = await validateAppDefinition({ ...createTestApp(), defaultLanguage: 'Klingon' }, () => []);
|
|
1157
1155
|
expect(result.valid).toBe(false);
|
|
1158
1156
|
expect(result.errors).toStrictEqual([
|
|
1159
|
-
new
|
|
1157
|
+
new ValidationError('is not a valid language code', 'Klingon', undefined, [
|
|
1160
1158
|
'defaultLanguage',
|
|
1161
1159
|
]),
|
|
1162
1160
|
]);
|
|
1163
1161
|
});
|
|
1164
1162
|
it('should allow a valid default language', async () => {
|
|
1165
|
-
const result = await
|
|
1163
|
+
const result = await validateAppDefinition({ ...createTestApp(), defaultLanguage: 'kln' }, () => []);
|
|
1166
1164
|
expect(result.valid).toBe(true);
|
|
1167
1165
|
expect(result.errors).toStrictEqual([]);
|
|
1168
1166
|
});
|
|
1169
1167
|
it('should validate the default page exists', async () => {
|
|
1170
|
-
const result = await
|
|
1168
|
+
const result = await validateAppDefinition({ ...createTestApp(), defaultPage: 'Does not exist' }, () => []);
|
|
1171
1169
|
expect(result.valid).toBe(false);
|
|
1172
1170
|
expect(result.errors).toStrictEqual([
|
|
1173
|
-
new
|
|
1171
|
+
new ValidationError('does not refer to an existing page', 'Does not exist', undefined, [
|
|
1174
1172
|
'defaultPage',
|
|
1175
1173
|
]),
|
|
1176
1174
|
]);
|
|
1177
1175
|
});
|
|
1178
1176
|
it('should validate the default page doesn’t specify parameters', async () => {
|
|
1179
|
-
const result = await
|
|
1177
|
+
const result = await validateAppDefinition({ ...createTestApp(), defaultPage: 'Page with parameters' }, () => []);
|
|
1180
1178
|
expect(result.valid).toBe(false);
|
|
1181
1179
|
expect(result.errors).toStrictEqual([
|
|
1182
|
-
new
|
|
1180
|
+
new ValidationError('may not specifiy parameters', 'Page with parameters', undefined, [
|
|
1183
1181
|
'defaultPage',
|
|
1184
1182
|
]),
|
|
1185
1183
|
]);
|
|
1186
1184
|
});
|
|
1187
1185
|
it('should report invalid cronjob schedule syntax', async () => {
|
|
1188
|
-
const result = await
|
|
1186
|
+
const result = await validateAppDefinition({
|
|
1189
1187
|
...createTestApp(),
|
|
1190
1188
|
cron: { foo: { schedule: 'invalid cronjob test', action: { type: 'noop' } } },
|
|
1191
1189
|
}, () => []);
|
|
1192
1190
|
expect(result.valid).toBe(false);
|
|
1193
1191
|
expect(result.errors).toStrictEqual([
|
|
1194
|
-
new
|
|
1192
|
+
new ValidationError('contains an invalid expression', 'invalid cronjob test', undefined, [
|
|
1195
1193
|
'cron',
|
|
1196
1194
|
'foo',
|
|
1197
1195
|
'schedule',
|
|
@@ -1199,12 +1197,12 @@ describe('validateAppDefinition', () => {
|
|
|
1199
1197
|
]);
|
|
1200
1198
|
});
|
|
1201
1199
|
it('should allow valid cronjob schedule syntax', async () => {
|
|
1202
|
-
const result = await
|
|
1200
|
+
const result = await validateAppDefinition({ ...createTestApp(), cron: { foo: { schedule: '5 4 * * *', action: { type: 'noop' } } } }, () => []);
|
|
1203
1201
|
expect(result.valid).toBe(true);
|
|
1204
1202
|
expect(result.errors).toStrictEqual([]);
|
|
1205
1203
|
});
|
|
1206
1204
|
it('should not crash if cron is not a valid object', async () => {
|
|
1207
|
-
const result = await
|
|
1205
|
+
const result = await validateAppDefinition(
|
|
1208
1206
|
// @ts-expect-error This tests invalid user input.
|
|
1209
1207
|
{ ...createTestApp(), cron: { foo: null, bar: { schedule: 12 } } }, () => []);
|
|
1210
1208
|
expect(result.valid).toBe(true);
|
|
@@ -1222,7 +1220,7 @@ describe('validateAppDefinition', () => {
|
|
|
1222
1220
|
},
|
|
1223
1221
|
},
|
|
1224
1222
|
});
|
|
1225
|
-
const result = await
|
|
1223
|
+
const result = await validateAppDefinition(app, () => [
|
|
1226
1224
|
{
|
|
1227
1225
|
name: '@appsemble/test',
|
|
1228
1226
|
version: '1.2.3',
|
|
@@ -1235,7 +1233,7 @@ describe('validateAppDefinition', () => {
|
|
|
1235
1233
|
]);
|
|
1236
1234
|
expect(result.valid).toBe(false);
|
|
1237
1235
|
expect(result.errors).toStrictEqual([
|
|
1238
|
-
new
|
|
1236
|
+
new ValidationError('refers to a page that doesn’t exist', 'Doesn’t exist', undefined, [
|
|
1239
1237
|
'pages',
|
|
1240
1238
|
0,
|
|
1241
1239
|
'blocks',
|
|
@@ -1258,7 +1256,7 @@ describe('validateAppDefinition', () => {
|
|
|
1258
1256
|
},
|
|
1259
1257
|
},
|
|
1260
1258
|
});
|
|
1261
|
-
const result = await
|
|
1259
|
+
const result = await validateAppDefinition(app, () => [
|
|
1262
1260
|
{
|
|
1263
1261
|
name: '@appsemble/test',
|
|
1264
1262
|
version: '1.2.3',
|
|
@@ -1271,7 +1269,7 @@ describe('validateAppDefinition', () => {
|
|
|
1271
1269
|
]);
|
|
1272
1270
|
expect(result.valid).toBe(false);
|
|
1273
1271
|
expect(result.errors).toStrictEqual([
|
|
1274
|
-
new
|
|
1272
|
+
new ValidationError('refers to a sub page on a page that isn’t of type ‘tabs’ or ‘flow’', 'Bla', undefined, ['pages', 0, 'blocks', 0, 'actions', 'onWhatever', 'to', 1]),
|
|
1275
1273
|
]);
|
|
1276
1274
|
});
|
|
1277
1275
|
it('should report an error if a link action contains a link to a tab that doesn’t exist', async () => {
|
|
@@ -1286,7 +1284,7 @@ describe('validateAppDefinition', () => {
|
|
|
1286
1284
|
},
|
|
1287
1285
|
},
|
|
1288
1286
|
});
|
|
1289
|
-
const result = await
|
|
1287
|
+
const result = await validateAppDefinition(app, () => [
|
|
1290
1288
|
{
|
|
1291
1289
|
name: '@appsemble/test',
|
|
1292
1290
|
version: '1.2.3',
|
|
@@ -1299,7 +1297,7 @@ describe('validateAppDefinition', () => {
|
|
|
1299
1297
|
]);
|
|
1300
1298
|
expect(result.valid).toBe(false);
|
|
1301
1299
|
expect(result.errors).toStrictEqual([
|
|
1302
|
-
new
|
|
1300
|
+
new ValidationError('refers to a tab that doesn’t exist', 'Bla', undefined, [
|
|
1303
1301
|
'pages',
|
|
1304
1302
|
0,
|
|
1305
1303
|
'blocks',
|
|
@@ -1347,7 +1345,7 @@ describe('validateAppDefinition', () => {
|
|
|
1347
1345
|
},
|
|
1348
1346
|
},
|
|
1349
1347
|
});
|
|
1350
|
-
const result = await
|
|
1348
|
+
const result = await validateAppDefinition(app, () => [
|
|
1351
1349
|
{
|
|
1352
1350
|
name: '@appsemble/test',
|
|
1353
1351
|
version: '1.2.3',
|
|
@@ -1360,9 +1358,9 @@ describe('validateAppDefinition', () => {
|
|
|
1360
1358
|
]);
|
|
1361
1359
|
expect(result.valid).toBe(false);
|
|
1362
1360
|
expect(result.errors).toStrictEqual([
|
|
1363
|
-
new
|
|
1364
|
-
new
|
|
1365
|
-
new
|
|
1361
|
+
new ValidationError('refers to a user action but the app doesn’t have a security definition', 'user.login', undefined, ['pages', 0, 'blocks', 0, 'actions', 'onWhatever', 'type']),
|
|
1362
|
+
new ValidationError('refers to a user action but the app doesn’t have a security definition', 'user.register', undefined, ['pages', 0, 'blocks', 1, 'actions', 'onWhatever', 'type']),
|
|
1363
|
+
new ValidationError('refers to a user action but the app doesn’t have a security definition', 'user.update', undefined, ['pages', 0, 'blocks', 2, 'actions', 'onWhatever', 'type']),
|
|
1366
1364
|
]);
|
|
1367
1365
|
});
|
|
1368
1366
|
it('should report an error if flow actions are used on a non-flow page', async () => {
|
|
@@ -1376,7 +1374,7 @@ describe('validateAppDefinition', () => {
|
|
|
1376
1374
|
},
|
|
1377
1375
|
},
|
|
1378
1376
|
});
|
|
1379
|
-
const result = await
|
|
1377
|
+
const result = await validateAppDefinition(app, () => [
|
|
1380
1378
|
{
|
|
1381
1379
|
name: '@appsemble/test',
|
|
1382
1380
|
version: '1.2.3',
|
|
@@ -1389,7 +1387,7 @@ describe('validateAppDefinition', () => {
|
|
|
1389
1387
|
]);
|
|
1390
1388
|
expect(result.valid).toBe(false);
|
|
1391
1389
|
expect(result.errors).toStrictEqual([
|
|
1392
|
-
new
|
|
1390
|
+
new ValidationError('flow actions can only be used on pages with the type ‘flow’', 'flow.next', undefined, ['pages', 0, 'blocks', 0, 'actions', 'onWhatever', 'type']),
|
|
1393
1391
|
]);
|
|
1394
1392
|
});
|
|
1395
1393
|
it('should report an error if flow.back is used on the first step', async () => {
|
|
@@ -1403,7 +1401,7 @@ describe('validateAppDefinition', () => {
|
|
|
1403
1401
|
},
|
|
1404
1402
|
},
|
|
1405
1403
|
});
|
|
1406
|
-
const result = await
|
|
1404
|
+
const result = await validateAppDefinition(app, () => [
|
|
1407
1405
|
{
|
|
1408
1406
|
name: '@appsemble/test',
|
|
1409
1407
|
version: '1.2.3',
|
|
@@ -1416,7 +1414,7 @@ describe('validateAppDefinition', () => {
|
|
|
1416
1414
|
]);
|
|
1417
1415
|
expect(result.valid).toBe(false);
|
|
1418
1416
|
expect(result.errors).toStrictEqual([
|
|
1419
|
-
new
|
|
1417
|
+
new ValidationError('is not allowed on the first step in the flow', 'flow.back', undefined, [
|
|
1420
1418
|
'pages',
|
|
1421
1419
|
3,
|
|
1422
1420
|
'steps',
|
|
@@ -1441,7 +1439,7 @@ describe('validateAppDefinition', () => {
|
|
|
1441
1439
|
},
|
|
1442
1440
|
},
|
|
1443
1441
|
});
|
|
1444
|
-
const result = await
|
|
1442
|
+
const result = await validateAppDefinition(app, () => [
|
|
1445
1443
|
{
|
|
1446
1444
|
name: '@appsemble/test',
|
|
1447
1445
|
version: '1.2.3',
|
|
@@ -1454,7 +1452,7 @@ describe('validateAppDefinition', () => {
|
|
|
1454
1452
|
]);
|
|
1455
1453
|
expect(result.valid).toBe(false);
|
|
1456
1454
|
expect(result.errors).toStrictEqual([
|
|
1457
|
-
new
|
|
1455
|
+
new ValidationError('refers to a step that doesn’t exist', 'flow.to', undefined, [
|
|
1458
1456
|
'pages',
|
|
1459
1457
|
3,
|
|
1460
1458
|
'steps',
|
|
@@ -1478,7 +1476,7 @@ describe('validateAppDefinition', () => {
|
|
|
1478
1476
|
},
|
|
1479
1477
|
},
|
|
1480
1478
|
});
|
|
1481
|
-
const result = await
|
|
1479
|
+
const result = await validateAppDefinition(app, () => [
|
|
1482
1480
|
{
|
|
1483
1481
|
name: '@appsemble/test',
|
|
1484
1482
|
version: '1.2.3',
|
|
@@ -1491,7 +1489,7 @@ describe('validateAppDefinition', () => {
|
|
|
1491
1489
|
]);
|
|
1492
1490
|
expect(result.valid).toBe(false);
|
|
1493
1491
|
expect(result.errors).toStrictEqual([
|
|
1494
|
-
new
|
|
1492
|
+
new ValidationError('was defined on the last step but ‘onFlowFinish’ page action wasn’t defined', 'flow.next', undefined, ['pages', 3, 'steps', 1, 'blocks', 0, 'actions', 'onWhatever', 'type']),
|
|
1495
1493
|
]);
|
|
1496
1494
|
});
|
|
1497
1495
|
it('should report an error if flow.finish is called without onFlowFinish', async () => {
|
|
@@ -1505,7 +1503,7 @@ describe('validateAppDefinition', () => {
|
|
|
1505
1503
|
},
|
|
1506
1504
|
},
|
|
1507
1505
|
});
|
|
1508
|
-
const result = await
|
|
1506
|
+
const result = await validateAppDefinition(app, () => [
|
|
1509
1507
|
{
|
|
1510
1508
|
name: '@appsemble/test',
|
|
1511
1509
|
version: '1.2.3',
|
|
@@ -1518,7 +1516,7 @@ describe('validateAppDefinition', () => {
|
|
|
1518
1516
|
]);
|
|
1519
1517
|
expect(result.valid).toBe(false);
|
|
1520
1518
|
expect(result.errors).toStrictEqual([
|
|
1521
|
-
new
|
|
1519
|
+
new ValidationError('was defined but ‘onFlowFinish’ page action wasn’t defined', 'flow.finish', undefined, ['pages', 3, 'steps', 1, 'blocks', 0, 'actions', 'onWhatever', 'type']),
|
|
1522
1520
|
]);
|
|
1523
1521
|
});
|
|
1524
1522
|
it('should report an error if flow.cancel is called without onFlowCancel', async () => {
|
|
@@ -1532,7 +1530,7 @@ describe('validateAppDefinition', () => {
|
|
|
1532
1530
|
},
|
|
1533
1531
|
},
|
|
1534
1532
|
});
|
|
1535
|
-
const result = await
|
|
1533
|
+
const result = await validateAppDefinition(app, () => [
|
|
1536
1534
|
{
|
|
1537
1535
|
name: '@appsemble/test',
|
|
1538
1536
|
version: '1.2.3',
|
|
@@ -1545,7 +1543,7 @@ describe('validateAppDefinition', () => {
|
|
|
1545
1543
|
]);
|
|
1546
1544
|
expect(result.valid).toBe(false);
|
|
1547
1545
|
expect(result.errors).toStrictEqual([
|
|
1548
|
-
new
|
|
1546
|
+
new ValidationError('was defined but ‘onFlowCancel’ page action wasn’t defined', 'flow.cancel', undefined, ['pages', 3, 'steps', 1, 'blocks', 0, 'actions', 'onWhatever', 'type']),
|
|
1549
1547
|
]);
|
|
1550
1548
|
});
|
|
1551
1549
|
it('should report an error if a resource action refers to a non-existent resource', async () => {
|
|
@@ -1560,7 +1558,7 @@ describe('validateAppDefinition', () => {
|
|
|
1560
1558
|
},
|
|
1561
1559
|
},
|
|
1562
1560
|
});
|
|
1563
|
-
const result = await
|
|
1561
|
+
const result = await validateAppDefinition(app, () => [
|
|
1564
1562
|
{
|
|
1565
1563
|
name: '@appsemble/test',
|
|
1566
1564
|
version: '1.2.3',
|
|
@@ -1573,7 +1571,7 @@ describe('validateAppDefinition', () => {
|
|
|
1573
1571
|
]);
|
|
1574
1572
|
expect(result.valid).toBe(false);
|
|
1575
1573
|
expect(result.errors).toStrictEqual([
|
|
1576
|
-
new
|
|
1574
|
+
new ValidationError('refers to a resource that doesn’t exist', 'resource.get', undefined, [
|
|
1577
1575
|
'pages',
|
|
1578
1576
|
0,
|
|
1579
1577
|
'blocks',
|
|
@@ -1596,7 +1594,7 @@ describe('validateAppDefinition', () => {
|
|
|
1596
1594
|
},
|
|
1597
1595
|
},
|
|
1598
1596
|
});
|
|
1599
|
-
const result = await
|
|
1597
|
+
const result = await validateAppDefinition(app, () => [
|
|
1600
1598
|
{
|
|
1601
1599
|
name: '@appsemble/test',
|
|
1602
1600
|
version: '1.2.3',
|
|
@@ -1609,7 +1607,7 @@ describe('validateAppDefinition', () => {
|
|
|
1609
1607
|
]);
|
|
1610
1608
|
expect(result.valid).toBe(false);
|
|
1611
1609
|
expect(result.errors).toStrictEqual([
|
|
1612
|
-
new
|
|
1610
|
+
new ValidationError('refers to a resource action that is currently set to private', 'resource.get', undefined, ['pages', 0, 'blocks', 0, 'actions', 'onWhatever', 'resource']),
|
|
1613
1611
|
]);
|
|
1614
1612
|
});
|
|
1615
1613
|
it('should report an error if a resource action refers is private action without a security definition', async () => {
|
|
@@ -1625,7 +1623,7 @@ describe('validateAppDefinition', () => {
|
|
|
1625
1623
|
},
|
|
1626
1624
|
},
|
|
1627
1625
|
});
|
|
1628
|
-
const result = await
|
|
1626
|
+
const result = await validateAppDefinition(app, () => [
|
|
1629
1627
|
{
|
|
1630
1628
|
name: '@appsemble/test',
|
|
1631
1629
|
version: '1.2.3',
|
|
@@ -1638,26 +1636,26 @@ describe('validateAppDefinition', () => {
|
|
|
1638
1636
|
]);
|
|
1639
1637
|
expect(result.valid).toBe(false);
|
|
1640
1638
|
expect(result.errors).toStrictEqual([
|
|
1641
|
-
new
|
|
1639
|
+
new ValidationError('refers to a resource action that is accessible when logged in, but the app has no security definitions', 'resource.get', undefined, ['pages', 0, 'blocks', 0, 'actions', 'onWhatever', 'resource']),
|
|
1642
1640
|
]);
|
|
1643
1641
|
});
|
|
1644
1642
|
it('should ignore if an app is null', async () => {
|
|
1645
|
-
const result = await
|
|
1643
|
+
const result = await validateAppDefinition(null, () => []);
|
|
1646
1644
|
expect(result.valid).toBe(true);
|
|
1647
1645
|
expect(result.errors).toStrictEqual([]);
|
|
1648
1646
|
});
|
|
1649
1647
|
it('should if app pages are not an array', async () => {
|
|
1650
|
-
const result = await
|
|
1648
|
+
const result = await validateAppDefinition(null, () => []);
|
|
1651
1649
|
expect(result.valid).toBe(true);
|
|
1652
1650
|
expect(result.errors).toStrictEqual([]);
|
|
1653
1651
|
});
|
|
1654
1652
|
it('should report an error if app validation fails for an unexpected reason', async () => {
|
|
1655
|
-
const result = await
|
|
1653
|
+
const result = await validateAppDefinition(null, () => []);
|
|
1656
1654
|
expect(result.valid).toBe(true);
|
|
1657
1655
|
expect(result.errors).toStrictEqual([]);
|
|
1658
1656
|
});
|
|
1659
1657
|
it('should handle if an unexpected error occurs', async () => {
|
|
1660
|
-
const result = await
|
|
1658
|
+
const result = await validateAppDefinition({
|
|
1661
1659
|
get defaultPage() {
|
|
1662
1660
|
throw new Error('Boom!');
|
|
1663
1661
|
},
|
|
@@ -1665,7 +1663,7 @@ describe('validateAppDefinition', () => {
|
|
|
1665
1663
|
}, () => []);
|
|
1666
1664
|
expect(result.valid).toBe(false);
|
|
1667
1665
|
expect(result.errors).toStrictEqual([
|
|
1668
|
-
new
|
|
1666
|
+
new ValidationError('Unexpected error: Boom!', null, undefined, []),
|
|
1669
1667
|
]);
|
|
1670
1668
|
});
|
|
1671
1669
|
});
|