diff --git a/docs/3.0.0-beta.x/guides/graphql.md b/docs/3.0.0-beta.x/guides/graphql.md index 4fb20835a5..7662a826cd 100644 --- a/docs/3.0.0-beta.x/guides/graphql.md +++ b/docs/3.0.0-beta.x/guides/graphql.md @@ -492,7 +492,7 @@ module.exports = { Query: { post: { description: 'Return a single post', - policy: ['plugins.users-permissions.isAuthenticated', 'isOwner'], // Apply the 'isAuthenticated' policy of the `Users & Permissions` plugin, then the 'isOwner' policy before executing the resolver. + policies: ['plugins.users-permissions.isAuthenticated', 'isOwner'], // Apply the 'isAuthenticated' policy of the `Users & Permissions` plugin, then the 'isOwner' policy before executing the resolver. }, posts: { description: 'Return a list of posts', // Add a description to the query. @@ -504,7 +504,7 @@ module.exports = { }, postsByTags: { description: 'Return the posts published by the author', - resolverOf: 'Post.findByTags', // Will apply the same policy on the custom resolver than the controller's action `findByTags`. + resolverOf: 'Post.findByTags', // Will apply the same policy on the custom resolver as the controller's action `findByTags`. resolver: (obj, options, ctx) => { // ctx is the context of the Koa request. await strapi.controllers.posts.findByTags(ctx); @@ -516,7 +516,7 @@ module.exports = { Mutation: { attachPostToAuthor: { description: 'Attach a post to an author', - policy: ['plugins.users-permissions.isAuthenticated', 'isOwner'], + policies: ['plugins.users-permissions.isAuthenticated', 'isOwner'], resolver: 'Post.attachToAuthor' } } @@ -677,7 +677,7 @@ module.exports = { Query: { posts: { description: 'Return a list of posts', - policy: [ + policies: [ 'plugins.users-permissions.isAuthenticated', 'isOwner', 'global.logging', @@ -687,7 +687,10 @@ module.exports = { Mutation: { createPost: { description: 'Create a new post', - policy: ['plugins.users-permissions.isAuthenticated', 'global.logging'], + policies: [ + 'plugins.users-permissions.isAuthenticated', + 'global.logging', + ], }, }, }, @@ -782,7 +785,7 @@ module.exports = { Query: { posts: { description: 'Return a list of posts by author', - resolverOf: 'Post.find', // Will apply the same policy on the custom resolver than the controller's action `find` located in `Post.js`. + resolverOf: 'Post.find', // Will apply the same policy on the custom resolver as the controller's action `find` located in `Post.js`. resolver: (obj, options, context) => { // You can return a raw JSON object or a promise. diff --git a/examples/getstarted/package.json b/examples/getstarted/package.json index 1cbdfa756b..1a45973d5c 100644 --- a/examples/getstarted/package.json +++ b/examples/getstarted/package.json @@ -1,7 +1,7 @@ { "name": "getstarted", "private": true, - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "A Strapi application.", "scripts": { "develop": "strapi develop", @@ -15,23 +15,23 @@ "mysql": "^2.17.1", "pg": "^7.10.0", "sqlite3": "^4.0.6", - "strapi": "3.0.0-beta.16.2", - "strapi-admin": "3.0.0-beta.16.2", - "strapi-hook-bookshelf": "3.0.0-beta.16.2", - "strapi-hook-knex": "3.0.0-beta.16.2", - "strapi-hook-mongoose": "3.0.0-beta.16.2", - "strapi-middleware-views": "3.0.0-beta.16.2", - "strapi-plugin-content-manager": "3.0.0-beta.16.2", - "strapi-plugin-content-type-builder": "3.0.0-beta.16.2", - "strapi-plugin-documentation": "3.0.0-beta.16.2", - "strapi-plugin-email": "3.0.0-beta.16.2", - "strapi-plugin-graphql": "3.0.0-beta.16.2", - "strapi-plugin-settings-manager": "3.0.0-beta.16.2", - "strapi-plugin-upload": "3.0.0-beta.16.2", - "strapi-plugin-users-permissions": "3.0.0-beta.16.2", - "strapi-provider-email-mailgun": "3.0.0-beta.16.2", - "strapi-provider-upload-aws-s3": "3.0.0-beta.16.2", - "strapi-utils": "3.0.0-beta.16.2" + "strapi": "3.0.0-beta.16.3", + "strapi-admin": "3.0.0-beta.16.3", + "strapi-hook-bookshelf": "3.0.0-beta.16.3", + "strapi-hook-knex": "3.0.0-beta.16.3", + "strapi-hook-mongoose": "3.0.0-beta.16.3", + "strapi-middleware-views": "3.0.0-beta.16.3", + "strapi-plugin-content-manager": "3.0.0-beta.16.3", + "strapi-plugin-content-type-builder": "3.0.0-beta.16.3", + "strapi-plugin-documentation": "3.0.0-beta.16.3", + "strapi-plugin-email": "3.0.0-beta.16.3", + "strapi-plugin-graphql": "3.0.0-beta.16.3", + "strapi-plugin-settings-manager": "3.0.0-beta.16.3", + "strapi-plugin-upload": "3.0.0-beta.16.3", + "strapi-plugin-users-permissions": "3.0.0-beta.16.3", + "strapi-provider-email-mailgun": "3.0.0-beta.16.3", + "strapi-provider-upload-aws-s3": "3.0.0-beta.16.3", + "strapi-utils": "3.0.0-beta.16.3" }, "strapi": { "uuid": "getstarted" diff --git a/lerna.json b/lerna.json index 6b9df9049d..cbe9614eed 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "packages": [ "packages/*", "examples/*" diff --git a/packages/create-strapi-app/package.json b/packages/create-strapi-app/package.json index 6e692d60cc..0bb8139c2e 100644 --- a/packages/create-strapi-app/package.json +++ b/packages/create-strapi-app/package.json @@ -1,6 +1,6 @@ { "name": "create-strapi-app", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Generate a new Strapi application.", "license": "MIT", "homepage": "http://strapi.io", @@ -21,7 +21,7 @@ ], "dependencies": { "commander": "^2.20.0", - "strapi-generate-new": "3.0.0-beta.16.2" + "strapi-generate-new": "3.0.0-beta.16.3" }, "scripts": { "test": "echo \"no tests yet\"" diff --git a/packages/strapi-admin/package.json b/packages/strapi-admin/package.json index 76cf96bc18..66312da608 100644 --- a/packages/strapi-admin/package.json +++ b/packages/strapi-admin/package.json @@ -1,6 +1,6 @@ { "name": "strapi-admin", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Strapi Admin", "repository": { "type": "git", @@ -72,8 +72,8 @@ "sanitize.css": "^4.1.0", "sass-loader": "^7.1.0", "shelljs": "^0.7.8", - "strapi-helper-plugin": "3.0.0-beta.16.2", - "strapi-utils": "3.0.0-beta.16.2", + "strapi-helper-plugin": "3.0.0-beta.16.3", + "strapi-utils": "3.0.0-beta.16.3", "style-loader": "^0.23.1", "styled-components": "^4.2.0", "terser-webpack-plugin": "^1.2.3", diff --git a/packages/strapi-generate-api/package.json b/packages/strapi-generate-api/package.json index 96a7fdebc4..b7dd1a96dd 100644 --- a/packages/strapi-generate-api/package.json +++ b/packages/strapi-generate-api/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-api", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Generate an API for a Strapi application.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-controller/package.json b/packages/strapi-generate-controller/package.json index 9faec663ab..960b73acdd 100644 --- a/packages/strapi-generate-controller/package.json +++ b/packages/strapi-generate-controller/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-controller", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Generate a controller for a Strapi API.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-model/package.json b/packages/strapi-generate-model/package.json index 202b189b0a..4bd237b616 100644 --- a/packages/strapi-generate-model/package.json +++ b/packages/strapi-generate-model/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-model", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Generate a model for a Strapi API.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-new/package.json b/packages/strapi-generate-new/package.json index 8ea4ee037f..36e4b9a457 100644 --- a/packages/strapi-generate-new/package.json +++ b/packages/strapi-generate-new/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-new", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Generate a new Strapi application.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-plugin/package.json b/packages/strapi-generate-plugin/package.json index ab8d8e513c..4a8f4a23e8 100644 --- a/packages/strapi-generate-plugin/package.json +++ b/packages/strapi-generate-plugin/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-plugin", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Generate an plugin for a Strapi application.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-policy/package.json b/packages/strapi-generate-policy/package.json index ec717ab073..20720879d5 100644 --- a/packages/strapi-generate-policy/package.json +++ b/packages/strapi-generate-policy/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-policy", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Generate a policy for a Strapi API.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate-service/package.json b/packages/strapi-generate-service/package.json index ebe09bfb52..7e0f38132f 100644 --- a/packages/strapi-generate-service/package.json +++ b/packages/strapi-generate-service/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate-service", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Generate a service for a Strapi API.", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-generate/package.json b/packages/strapi-generate/package.json index 7772bb6fb2..cd126d596f 100644 --- a/packages/strapi-generate/package.json +++ b/packages/strapi-generate/package.json @@ -1,6 +1,6 @@ { "name": "strapi-generate", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Master of ceremonies for the Strapi generators.", "homepage": "http://strapi.io", "keywords": [ @@ -20,7 +20,7 @@ "fs-extra": "^8.0.1", "lodash": "^4.17.11", "reportback": "^2.0.2", - "strapi-utils": "3.0.0-beta.16.2" + "strapi-utils": "3.0.0-beta.16.3" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-helper-plugin/lib/src/components/InputDate/index.js b/packages/strapi-helper-plugin/lib/src/components/InputDate/index.js index c95386bdbf..1ffd31acf4 100644 --- a/packages/strapi-helper-plugin/lib/src/components/InputDate/index.js +++ b/packages/strapi-helper-plugin/lib/src/components/InputDate/index.js @@ -60,6 +60,7 @@ function InputDate(props) { target: { name: props.name, value: moment, + type: 'date', }, }) } diff --git a/packages/strapi-helper-plugin/lib/src/components/InputToggleWithErrors/index.js b/packages/strapi-helper-plugin/lib/src/components/InputToggleWithErrors/index.js index 1e7556256b..389c18bcb5 100644 --- a/packages/strapi-helper-plugin/lib/src/components/InputToggleWithErrors/index.js +++ b/packages/strapi-helper-plugin/lib/src/components/InputToggleWithErrors/index.js @@ -117,7 +117,7 @@ class InputToggleWithErrors extends React.Component { InputToggleWithErrors.defaultProps = { autoFocus: false, className: '', - customBootstrapClass: 'col-md-6', + customBootstrapClass: 'col-md-4', deactivateErrorHighlight: false, didCheckErrors: false, disabled: false, diff --git a/packages/strapi-helper-plugin/package.json b/packages/strapi-helper-plugin/package.json index 77de8d2313..145b5e7360 100644 --- a/packages/strapi-helper-plugin/package.json +++ b/packages/strapi-helper-plugin/package.json @@ -1,6 +1,6 @@ { "name": "strapi-helper-plugin", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Helper for Strapi plugins development", "files": [ "dist" diff --git a/packages/strapi-hook-bookshelf/lib/mount-models.js b/packages/strapi-hook-bookshelf/lib/mount-models.js index 184bb9890f..a08084f88c 100644 --- a/packages/strapi-hook-bookshelf/lib/mount-models.js +++ b/packages/strapi-hook-bookshelf/lib/mount-models.js @@ -887,17 +887,13 @@ module.exports = ({ models, target, plugin = false }, ctx) => { return Promise.all(updates); }; -const castValueFromType = (type, value, definition) => { +const castValueFromType = (type, value, /* definition */) => { // do not cast null values if (value === null) return null; switch (type) { - case 'json': { - if (definition.client === 'mysql' || definition.client === 'sqlite3') { - return JSON.stringify(value); - } - return value; - } + case 'json': + return JSON.stringify(value); // TODO: handle real date format 1970-01-01 // TODO: handle real time format 12:00:00 case 'time': diff --git a/packages/strapi-hook-bookshelf/package.json b/packages/strapi-hook-bookshelf/package.json index 2224dcd7fa..a4e3917193 100644 --- a/packages/strapi-hook-bookshelf/package.json +++ b/packages/strapi-hook-bookshelf/package.json @@ -1,6 +1,6 @@ { "name": "strapi-hook-bookshelf", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Bookshelf hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ @@ -22,8 +22,8 @@ "lodash": "^4.17.11", "pluralize": "^7.0.0", "rimraf": "^2.6.3", - "strapi-hook-knex": "3.0.0-beta.16.2", - "strapi-utils": "3.0.0-beta.16.2" + "strapi-hook-knex": "3.0.0-beta.16.3", + "strapi-utils": "3.0.0-beta.16.3" }, "strapi": { "dependencies": [ diff --git a/packages/strapi-hook-ejs/package.json b/packages/strapi-hook-ejs/package.json index cf88087659..4abee61da0 100644 --- a/packages/strapi-hook-ejs/package.json +++ b/packages/strapi-hook-ejs/package.json @@ -1,6 +1,6 @@ { "name": "strapi-hook-ejs", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "EJS hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-hook-knex/package.json b/packages/strapi-hook-knex/package.json index 5b215a8c2e..8f48ab4dfb 100644 --- a/packages/strapi-hook-knex/package.json +++ b/packages/strapi-hook-knex/package.json @@ -1,6 +1,6 @@ { "name": "strapi-hook-knex", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Knex hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-hook-mongoose/package.json b/packages/strapi-hook-mongoose/package.json index 0e6f0dc560..0b5ed7ec71 100644 --- a/packages/strapi-hook-mongoose/package.json +++ b/packages/strapi-hook-mongoose/package.json @@ -1,6 +1,6 @@ { "name": "strapi-hook-mongoose", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Mongoose hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ @@ -20,7 +20,7 @@ "mongoose-float": "^1.0.4", "mongoose-long": "^0.2.1", "pluralize": "^7.0.0", - "strapi-utils": "3.0.0-beta.16.2" + "strapi-utils": "3.0.0-beta.16.3" }, "author": { "email": "hi@strapi.io", diff --git a/packages/strapi-hook-redis/package.json b/packages/strapi-hook-redis/package.json index 184725ee36..b2e47a3f78 100644 --- a/packages/strapi-hook-redis/package.json +++ b/packages/strapi-hook-redis/package.json @@ -1,6 +1,6 @@ { "name": "strapi-hook-redis", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Redis hook for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ @@ -19,7 +19,7 @@ "lodash": "^4.17.11", "rimraf": "^2.6.3", "stack-trace": "0.0.10", - "strapi-utils": "3.0.0-beta.16.2" + "strapi-utils": "3.0.0-beta.16.3" }, "author": { "email": "hi@strapi.io", diff --git a/packages/strapi-middleware-views/package.json b/packages/strapi-middleware-views/package.json index fc5be03872..1c3a613d73 100644 --- a/packages/strapi-middleware-views/package.json +++ b/packages/strapi-middleware-views/package.json @@ -1,6 +1,6 @@ { "name": "strapi-middleware-views", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Views middleware to enable server-side rendering for the Strapi framework", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js index 1f6f96beaf..daec66ac9a 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js @@ -212,6 +212,22 @@ function EditView({ }); }; + const handleChange = ({ target: { name, value, type } }) => { + let inputValue = value; + + // Empty string is not a valid date, + // Set the date to null when it's empty + if (type === 'date' && value === '') { + inputValue = null; + } + + dispatch({ + type: 'ON_CHANGE', + keys: name.split('.'), + value: inputValue, + }); + }; + const handleSubmit = async e => { e.preventDefault(); const schema = createYupSchema(layout, { groups: groupLayoutsData }); @@ -278,7 +294,6 @@ function EditView({ strapi.notification.error(error); } } catch (err) { - console.log({ formErrors: err }); setIsSubmitting(false); const errors = get(err, 'inner', []).reduce((acc, curr) => { acc[ @@ -291,6 +306,7 @@ function EditView({ return acc; }, {}); + dispatch({ type: 'SET_ERRORS', errors, @@ -322,13 +338,7 @@ function EditView({ keys: name.split('.'), }); }} - onChange={({ target: { name, value } }) => { - dispatch({ - type: 'ON_CHANGE', - keys: name.split('.'), - value, - }); - }} + onChange={handleChange} onRemove={keys => { dispatch({ type: 'REMOVE_RELATION', @@ -448,13 +458,7 @@ function EditView({ keys: name.split('.'), }); }} - onChange={({ target: { name, value } }) => { - dispatch({ - type: 'ON_CHANGE', - keys: name.split('.'), - value, - }); - }} + onChange={handleChange} layout={get(groupLayoutsData, group.group, {})} pathname={pathname} removeField={(keys, shouldAddEmptyField) => { @@ -481,13 +485,7 @@ function EditView({ layout={layout} modifiedData={modifiedData} name={name} - onChange={({ target: { name, value } }) => { - dispatch({ - type: 'ON_CHANGE', - keys: name.split('.'), - value, - }); - }} + onChange={handleChange} /> ); })} diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/schema.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/schema.js index 85acca3c31..598298c225 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/schema.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/schema.js @@ -130,7 +130,7 @@ const createYupSchemaAttribute = (type, validations) => { .typeError(); } if (['date', 'datetime'].includes(type)) { - schema = yup.date().typeError(); + schema = yup.date(); } Object.keys(validations).forEach(validation => { diff --git a/packages/strapi-plugin-content-manager/controllers/validation/model-configuration.js b/packages/strapi-plugin-content-manager/controllers/validation/model-configuration.js index 85ec8dffbf..016b6ea2d6 100644 --- a/packages/strapi-plugin-content-manager/controllers/validation/model-configuration.js +++ b/packages/strapi-plugin-content-manager/controllers/validation/model-configuration.js @@ -45,12 +45,12 @@ const createSettingsSchema = (model, schema) => { // should be reset when the type changes mainField: yup .string() - .oneOf(validAttributes) + .oneOf(validAttributes.concat('id')) .default('id'), // should be reset when the type changes defaultSortBy: yup .string() - .oneOf(validAttributes) + .oneOf(validAttributes.concat('id')) .default('id'), defaultSortOrder: yup .string() diff --git a/packages/strapi-plugin-content-manager/package.json b/packages/strapi-plugin-content-manager/package.json index 308247cdb3..afc0da1bb2 100644 --- a/packages/strapi-plugin-content-manager/package.json +++ b/packages/strapi-plugin-content-manager/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-content-manager", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "A powerful UI to easily manage your data.", "strapi": { "name": "Content Manager", @@ -32,8 +32,8 @@ "redux-immutable": "^4.0.0", "reselect": "^3.0.1", "showdown": "^1.9.0", - "strapi-helper-plugin": "3.0.0-beta.16.2", - "strapi-utils": "3.0.0-beta.16.2", + "strapi-helper-plugin": "3.0.0-beta.16.3", + "strapi-utils": "3.0.0-beta.16.3", "styled-components": "^4.2.0", "yup": "^0.27.0" }, diff --git a/packages/strapi-plugin-content-manager/test/types/json.test.e2e.js b/packages/strapi-plugin-content-manager/test/types/json.test.e2e.js index 51d9680c52..21f81ac2d2 100644 --- a/packages/strapi-plugin-content-manager/test/types/json.test.e2e.js +++ b/packages/strapi-plugin-content-manager/test/types/json.test.e2e.js @@ -35,6 +35,27 @@ describe('Test type json', () => { }); }); + test('Create entry with array value input JSON', async () => { + const inputValue = [ + { + key: 'value', + }, + { + key: 'value', + }, + ]; + const res = await rq.post('/content-manager/explorer/withjson', { + body: { + field: inputValue, + }, + }); + + expect(res.statusCode).toBe(200); + expect(res.body).toMatchObject({ + field: inputValue, + }); + }); + test('Create entry with value input Formdata', async () => { const inputValue = { number: '12', diff --git a/packages/strapi-plugin-content-type-builder/package.json b/packages/strapi-plugin-content-type-builder/package.json index 2e9409d38b..06ad1b75d8 100644 --- a/packages/strapi-plugin-content-type-builder/package.json +++ b/packages/strapi-plugin-content-type-builder/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-content-type-builder", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Strapi plugin to create content type (API).", "strapi": { "name": "Content Type Builder", @@ -29,9 +29,9 @@ "redux": "^4.0.1", "redux-immutable": "^4.0.0", "reselect": "^3.0.1", - "strapi-generate": "3.0.0-beta.16.2", - "strapi-generate-api": "3.0.0-beta.16.2", - "strapi-helper-plugin": "3.0.0-beta.16.2", + "strapi-generate": "3.0.0-beta.16.3", + "strapi-generate-api": "3.0.0-beta.16.3", + "strapi-helper-plugin": "3.0.0-beta.16.3", "yup": "^0.27.0" }, "author": { diff --git a/packages/strapi-plugin-documentation/package.json b/packages/strapi-plugin-documentation/package.json index 17c9904138..93d5c4e0e9 100755 --- a/packages/strapi-plugin-documentation/package.json +++ b/packages/strapi-plugin-documentation/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-documentation", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "This is the description of the plugin.", "strapi": { "name": "Documentation", @@ -32,7 +32,7 @@ "redux": "^4.0.1", "redux-immutable": "^4.0.0", "reselect": "^4.0.0", - "strapi-helper-plugin": "3.0.0-beta.16.2", + "strapi-helper-plugin": "3.0.0-beta.16.3", "swagger-ui-dist": "3.22.1" }, "author": { diff --git a/packages/strapi-plugin-email/package.json b/packages/strapi-plugin-email/package.json index 974c53bc85..1af9b1ca4c 100644 --- a/packages/strapi-plugin-email/package.json +++ b/packages/strapi-plugin-email/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-email", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "This is the description of the plugin.", "strapi": { "name": "Email", @@ -12,13 +12,13 @@ "test": "echo \"no tests yet\"" }, "dependencies": { - "strapi-provider-email-sendmail": "3.0.0-beta.16.2", - "strapi-utils": "3.0.0-beta.16.2" + "strapi-provider-email-sendmail": "3.0.0-beta.16.3", + "strapi-utils": "3.0.0-beta.16.3" }, "devDependencies": { "react-copy-to-clipboard": "5.0.1", "rimraf": "^2.6.3", - "strapi-helper-plugin": "3.0.0-beta.16.2" + "strapi-helper-plugin": "3.0.0-beta.16.3" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-plugin-graphql/package.json b/packages/strapi-plugin-graphql/package.json index 1331714caf..282e58042b 100644 --- a/packages/strapi-plugin-graphql/package.json +++ b/packages/strapi-plugin-graphql/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-graphql", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "This is the description of the plugin.", "strapi": { "name": "graphql", @@ -23,7 +23,7 @@ "graphql-type-long": "^0.1.1", "koa-compose": "^4.1.0", "pluralize": "^7.0.0", - "strapi-utils": "3.0.0-beta.16.2" + "strapi-utils": "3.0.0-beta.16.3" }, "devDependencies": { "cross-env": "^5.2.0", diff --git a/packages/strapi-plugin-graphql/services/Mutation.js b/packages/strapi-plugin-graphql/services/Mutation.js index a9ca8c5990..bf5d5b30bf 100644 --- a/packages/strapi-plugin-graphql/services/Mutation.js +++ b/packages/strapi-plugin-graphql/services/Mutation.js @@ -19,11 +19,15 @@ module.exports = { * @return Promise or Error. */ - composeMutationResolver: function(_schema, plugin, name, action) { + composeMutationResolver: function({ _schema, plugin, name, action }) { // Extract custom resolver or type description. const { resolver: handler = {} } = _schema; - const queryName = `${action}${_.capitalize(name)}`; + let queryName = `${action}${_.capitalize(name)}`; + + if (_.has(handler, `Mutation.${action}`)) { + queryName = action; + } // Retrieve policies. const policies = _.get(handler, `Mutation.${queryName}.policies`, []); @@ -155,7 +159,7 @@ module.exports = { } if (strapi.plugins['users-permissions']) { - policies.push('plugins.users-permissions.permissions'); + policies.unshift('plugins.users-permissions.permissions'); } // Populate policies. diff --git a/packages/strapi-plugin-graphql/services/Query.js b/packages/strapi-plugin-graphql/services/Query.js index 2c70215086..26edffcd76 100644 --- a/packages/strapi-plugin-graphql/services/Query.js +++ b/packages/strapi-plugin-graphql/services/Query.js @@ -69,7 +69,7 @@ module.exports = { * @return Promise or Error. */ - composeQueryResolver: function(_schema, plugin, name, isSingular) { + composeQueryResolver: function({ _schema, plugin, name, isSingular }) { const params = { model: name, }; @@ -236,7 +236,7 @@ module.exports = { } if (strapi.plugins['users-permissions']) { - policies.push('plugins.users-permissions.permissions'); + policies.unshift('plugins.users-permissions.permissions'); } // Populate policies. diff --git a/packages/strapi-plugin-graphql/services/Resolvers.js b/packages/strapi-plugin-graphql/services/Resolvers.js index 6952d0b057..53ece2e335 100644 --- a/packages/strapi-plugin-graphql/services/Resolvers.js +++ b/packages/strapi-plugin-graphql/services/Resolvers.js @@ -326,11 +326,21 @@ const buildShadowCRUD = (models, plugin) => { const queries = { singular: _.get(resolver, `Query.${singularName}`) !== false - ? Query.composeQueryResolver(_schema, plugin, name, true) + ? Query.composeQueryResolver({ + _schema, + plugin, + name, + isSingular: true, + }) : null, plural: _.get(resolver, `Query.${pluralName}`) !== false - ? Query.composeQueryResolver(_schema, plugin, name, false) + ? Query.composeQueryResolver({ + _schema, + plugin, + name, + isSingular: false, + }) : null, }; @@ -376,15 +386,30 @@ const buildShadowCRUD = (models, plugin) => { const mutations = { create: _.get(resolver, `Mutation.create${capitalizedName}`) !== false - ? Mutation.composeMutationResolver(_schema, plugin, name, 'create') + ? Mutation.composeMutationResolver({ + _schema, + plugin, + name, + action: 'create', + }) : null, update: _.get(resolver, `Mutation.update${capitalizedName}`) !== false - ? Mutation.composeMutationResolver(_schema, plugin, name, 'update') + ? Mutation.composeMutationResolver({ + _schema, + plugin, + name, + action: 'update', + }) : null, delete: _.get(resolver, `Mutation.delete${capitalizedName}`) !== false - ? Mutation.composeMutationResolver(_schema, plugin, name, 'delete') + ? Mutation.composeMutationResolver({ + _schema, + plugin, + name, + action: 'delete', + }) : null, }; diff --git a/packages/strapi-plugin-graphql/services/Schema.js b/packages/strapi-plugin-graphql/services/Schema.js index c1217ca39d..b577bc4150 100644 --- a/packages/strapi-plugin-graphql/services/Schema.js +++ b/packages/strapi-plugin-graphql/services/Schema.js @@ -228,22 +228,22 @@ const schemaBuilder = { const [name, action] = acc[type][resolver].split('.'); const normalizedName = _.toLower(name); - acc[type][resolver] = Mutation.composeMutationResolver( - strapi.plugins.graphql.config._schema.graphql, + acc[type][resolver] = Mutation.composeMutationResolver({ + _schema: strapi.plugins.graphql.config._schema.graphql, plugin, - normalizedName, - action - ); + name: normalizedName, + action, + }); break; } case 'Query': default: - acc[type][resolver] = Query.composeQueryResolver( - strapi.plugins.graphql.config._schema.graphql, + acc[type][resolver] = Query.composeQueryResolver({ + _schema: strapi.plugins.graphql.config._schema.graphql, plugin, - resolver, - 'force' // Avoid singular/pluralize and force query name. - ); + name: resolver, + isSingular: 'force', // Avoid singular/pluralize and force query name. + }); break; } } diff --git a/packages/strapi-plugin-settings-manager/package.json b/packages/strapi-plugin-settings-manager/package.json index 1ed13452a9..74a6d058be 100644 --- a/packages/strapi-plugin-settings-manager/package.json +++ b/packages/strapi-plugin-settings-manager/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-settings-manager", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Strapi plugin to manage settings.", "strapi": { "name": "Settings Manager", @@ -27,7 +27,7 @@ "redux": "^4.0.1", "reselect": "^3.0.1", "shelljs": "^0.7.8", - "strapi-helper-plugin": "3.0.0-beta.16.2" + "strapi-helper-plugin": "3.0.0-beta.16.3" }, "author": { "name": "Strapi team", diff --git a/packages/strapi-plugin-upload/package.json b/packages/strapi-plugin-upload/package.json index 342092a431..83d9c9a964 100644 --- a/packages/strapi-plugin-upload/package.json +++ b/packages/strapi-plugin-upload/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-upload", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "This is the description of the plugin.", "strapi": { "name": "Files Upload", @@ -23,9 +23,9 @@ "react-router-dom": "^5.0.0", "react-transition-group": "^2.5.0", "reactstrap": "^5.0.0", - "strapi-helper-plugin": "3.0.0-beta.16.2", - "strapi-provider-upload-local": "3.0.0-beta.16.2", - "strapi-utils": "3.0.0-beta.16.2", + "strapi-helper-plugin": "3.0.0-beta.16.3", + "strapi-provider-upload-local": "3.0.0-beta.16.3", + "strapi-utils": "3.0.0-beta.16.3", "stream-to-array": "^2.3.0", "uuid": "^3.2.1" }, diff --git a/packages/strapi-plugin-users-permissions/package.json b/packages/strapi-plugin-users-permissions/package.json index 28c74b9f5b..5b41d10d0e 100644 --- a/packages/strapi-plugin-users-permissions/package.json +++ b/packages/strapi-plugin-users-permissions/package.json @@ -1,6 +1,6 @@ { "name": "strapi-plugin-users-permissions", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Protect your API with a full-authentication process based on JWT", "strapi": { "name": "Roles & Permissions", @@ -31,8 +31,8 @@ "reactstrap": "^5.0.0", "redux-saga": "^0.16.0", "request": "^2.83.0", - "strapi-helper-plugin": "3.0.0-beta.16.2", - "strapi-utils": "3.0.0-beta.16.2", + "strapi-helper-plugin": "3.0.0-beta.16.3", + "strapi-utils": "3.0.0-beta.16.3", "uuid": "^3.1.0" }, "devDependencies": { diff --git a/packages/strapi-provider-email-amazon-ses/package.json b/packages/strapi-provider-email-amazon-ses/package.json index a35aff354e..6ae321aad3 100644 --- a/packages/strapi-provider-email-amazon-ses/package.json +++ b/packages/strapi-provider-email-amazon-ses/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-email-amazon-ses", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Amazon SES provider for strapi email", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-email-mailgun/package.json b/packages/strapi-provider-email-mailgun/package.json index 42d97158a0..a1c772f323 100644 --- a/packages/strapi-provider-email-mailgun/package.json +++ b/packages/strapi-provider-email-mailgun/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-email-mailgun", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Mailgun provider for strapi email plugin", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-email-sendgrid/package.json b/packages/strapi-provider-email-sendgrid/package.json index 3cb492c493..4ff7a49109 100644 --- a/packages/strapi-provider-email-sendgrid/package.json +++ b/packages/strapi-provider-email-sendgrid/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-email-sendgrid", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Sendgrid provider for strapi email", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-email-sendmail/package.json b/packages/strapi-provider-email-sendmail/package.json index 3a6bcdfcf4..c635863f65 100644 --- a/packages/strapi-provider-email-sendmail/package.json +++ b/packages/strapi-provider-email-sendmail/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-email-sendmail", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Sendmail provider for strapi email", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-upload-aws-s3/package.json b/packages/strapi-provider-upload-aws-s3/package.json index 982cb48624..c032013920 100644 --- a/packages/strapi-provider-upload-aws-s3/package.json +++ b/packages/strapi-provider-upload-aws-s3/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-upload-aws-s3", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "AWS S3 provider for strapi upload", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-upload-cloudinary/package.json b/packages/strapi-provider-upload-cloudinary/package.json index f469bf152f..7f193eb39b 100644 --- a/packages/strapi-provider-upload-cloudinary/package.json +++ b/packages/strapi-provider-upload-cloudinary/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-upload-cloudinary", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Cloudinary provider for strapi upload", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-upload-local/package.json b/packages/strapi-provider-upload-local/package.json index bab0cdde9c..73e7a216fa 100644 --- a/packages/strapi-provider-upload-local/package.json +++ b/packages/strapi-provider-upload-local/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-upload-local", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Local provider for strapi upload", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi-provider-upload-rackspace/package.json b/packages/strapi-provider-upload-rackspace/package.json index dd6a81a498..ed54ea024a 100644 --- a/packages/strapi-provider-upload-rackspace/package.json +++ b/packages/strapi-provider-upload-rackspace/package.json @@ -1,6 +1,6 @@ { "name": "strapi-provider-upload-rackspace", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Rackspace provider for strapi upload", "main": "./lib", "keywords": [], diff --git a/packages/strapi-utils/package.json b/packages/strapi-utils/package.json index 0e9e58e18c..7355c79d80 100644 --- a/packages/strapi-utils/package.json +++ b/packages/strapi-utils/package.json @@ -1,6 +1,6 @@ { "name": "strapi-utils", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "Shared utilities for the Strapi packages", "homepage": "http://strapi.io", "keywords": [ diff --git a/packages/strapi/package.json b/packages/strapi/package.json index 224ac2c9b1..ebf8bf83a7 100644 --- a/packages/strapi/package.json +++ b/packages/strapi/package.json @@ -1,6 +1,6 @@ { "name": "strapi", - "version": "3.0.0-beta.16.2", + "version": "3.0.0-beta.16.3", "description": "An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MongoDB, MySQL, MariaDB, PostgreSQL, SQLite", "homepage": "http://strapi.io", "directories": { @@ -47,15 +47,15 @@ "resolve-cwd": "^3.0.0", "rimraf": "^2.6.2", "shelljs": "^0.8.3", - "strapi-generate": "3.0.0-beta.16.2", - "strapi-generate-api": "3.0.0-beta.16.2", - "strapi-generate-controller": "3.0.0-beta.16.2", - "strapi-generate-model": "3.0.0-beta.16.2", - "strapi-generate-new": "3.0.0-beta.16.2", - "strapi-generate-plugin": "3.0.0-beta.16.2", - "strapi-generate-policy": "3.0.0-beta.16.2", - "strapi-generate-service": "3.0.0-beta.16.2", - "strapi-utils": "3.0.0-beta.16.2" + "strapi-generate": "3.0.0-beta.16.3", + "strapi-generate-api": "3.0.0-beta.16.3", + "strapi-generate-controller": "3.0.0-beta.16.3", + "strapi-generate-model": "3.0.0-beta.16.3", + "strapi-generate-new": "3.0.0-beta.16.3", + "strapi-generate-plugin": "3.0.0-beta.16.3", + "strapi-generate-policy": "3.0.0-beta.16.3", + "strapi-generate-service": "3.0.0-beta.16.3", + "strapi-utils": "3.0.0-beta.16.3" }, "scripts": { "test": "jest --verbose",