提交 e1ce257d 编写于 作者: A Aurélien Georget

Revert codebase and apply limit, skip, start and sort parameters

上级 b0aaae9f
......@@ -18,8 +18,8 @@ about: Create a report to help us improve 🤔.
<!-- The latest version of Strapi. -->
**Informations**
- **Node.js version**:
- **npm version**:
- **Node.js version**: <!-- Please ensure you are using the Node LTS version (v10) -->
- **NPM version**:
- **Strapi version**: <!-- Please make sure you are on the latest version -->
- **Database**:
- **Operating system**:
......
......@@ -6,8 +6,8 @@ git:
language: node_js
node_js:
- "9"
- "10"
- "11"
before_install:
- export CHROME_BIN=chromium-browser
......
......@@ -16,7 +16,7 @@ This project and everyone participating in it is governed by the [Strapi Code of
Strapi is open-source under the [MIT license](https://github.com/strapi/strapi/blob/master/LICENSE.md). All the work done is available on GitHub.
The core team and the contributors send pull requests which go through the same validation process.
Every user can send a feature request using the [issues](https://github.com/strapi/strapi/issues/new?template=FEATURE_REQUEST.md) on GitHub. Feel free to upvote 👍 [existing feature request](https://github.com/strapi/strapi/issues?q=is%3Aopen+is%3Aissue+label%3A%22type%3A+feature+request+%F0%9F%99%8F%22)
Every user can send a feature request using the [issues](https://github.com/strapi/strapi/issues/new?template=FEATURE_REQUEST.md) on GitHub. Feel free to upvote 👍 [existing feature request](https://portal.productboard.com/strapi)
## Repository Organization
We made the choice to use a monorepo design such as [React](https://github.com/facebook/react/tree/master/packages), [Babel](https://github.com/babel/babel/tree/master/packages), [Meteor](https://github.com/meteor/meteor/tree/devel/packages) or [Ember](https://github.com/emberjs/ember.js/tree/master/packages) do. It allows the community to easily maintain the whole ecosystem up-to-date and consistent.
......
......@@ -44,10 +44,21 @@
#### 🖐 Requirements
Operating system:
* Ubuntu/Debian
* CentOS/RHEL
* MacOS
* Windows - [WSL Only](https://github.com/strapi/strapi/wiki/Frequently-Asked-Questions#windows)
* Docker - [Docker-Repo](https://github.com/strapi/strapi-docker)
**Please note that Strapi may work on other Operating Systems, but are not tested at this time.**
Node:
* NodeJS >= 10.x
* NPM >= 6.x
**Please note that right now Node 11 is not Officially supported, and the current Node LTS (v10) should be used.**
Database:
* MongoDB >= 3.x
* MySQL >= 5.6
......@@ -141,6 +152,12 @@ Follow our [migration guides](https://github.com/strapi/strapi/wiki) on the wiki
Check out our [roadmap](https://portal.productboard.com/strapi) to get informed by the latest feature released and the upcoming ones. You can also give us insights and vote for a specific feature.
## Sponsors
[Become a sponsor](https://opencollective.com/strapi#sponsor) and get your logo on our README on GitHub with a link to your site.
<a href="https://opencollective.com/strapi#contributors"><img src="https://opencollective.com/strapi/tiers/sponsor.svg"/></a>
## License
[MIT License](LICENSE.md) Copyright (c) 2015-2018 [Strapi Solutions](https://strapi.io/).
......@@ -13,7 +13,7 @@ Please make sure your computer/server meets the following requirements:
- The database of your choice:
- [MongoDB](https://www.mongodb.com/) >= 3.x: MongoDB is a powerful document store. Installation guide [here](https://www.mongodb.com/download-center?j#community).
- [MySQL](https://www.mysql.com/) >= 5.6: MySQL is an open-source relational database management system. Installation guide [here](https://dev.mysql.com/downloads/).
- [MariaDB](https://mariadb.org/) >= 10.1: MarialDB is a fork of MySQL and is guaranteed to stay open source. Installation guide [here](https://mariadb.org/download/).
- [MariaDB](https://mariadb.org/) >= 10.1: MariaDB is a fork of MySQL and is guaranteed to stay open source. Installation guide [here](https://mariadb.org/download/).
- [PostgreSQL](https://www.postgresql.org/) >= 10: PostgreSQL is an open-source object-relational database management system. Installation guide [here](https://www.postgresql.org/download/).
## Setup
......
......@@ -37,13 +37,7 @@ Find products having a price equal or greater than `3`.
`GET /products?price_gte=3`
#### Relations
You can also use filters into a relation attribute which will be applied to the first level of the request.
Find users having written a post named `Title`.
`GET /users?posts.name=Title`
Find posts written by a user having more than 12 years old.
`GET /posts?author.age_gt=12`
> Note: You can't use filter to have specific results inside relation, like "Find users and only their posts older than yesterday" as example. If you need it, you can modify or create your own service ou use [GraphQL](./graphql.md#query-api).
> Note: You can't use filter to have specific results inside relation, like "Find users and only their posts older than yesterday" as example. If you need it, you can modify or create your own service or use [GraphQL](./graphql.md#query-api).
> Warning: this filter isn't available for `upload` plugin
......
......@@ -18,7 +18,11 @@ Then, start your app and open your browser at [http://localhost:1337/graphql](ht
## Configurations
By default, the [Shadow CRUD](#shadow-crud) feature is enabled and the GraphQL is set to `/graphql`. You can edit these configurations in the following files.
By default, the [Shadow CRUD](#shadow-crud) feature is enabled and the GraphQL is set to `/graphql`. The Playground is enabled by default for both the development and staging environments, however it is disabled in production. By changing the config option `playgroundAlways` to true, you can enable it.
Security limits on maximum number of items in your response by default is limited to 100, however you can change this on the following config option `amountLimit`. This should only be changed after careful consideration of the drawbacks of a large query which can cause what would basically be a DDoS (Distributed Denial of Service). And may cause abnormal load on your Strapi server, as well as your database server.
You can edit these configurations in the following files.
**Path —** `./plugins/graphql/config/settings.json`.
......@@ -26,7 +30,9 @@ By default, the [Shadow CRUD](#shadow-crud) feature is enabled and the GraphQL i
{
"endpoint": "/graphql",
"shadowCRUD": true,
"depthLimit": 7
"playgroundAlways": false,
"depthLimit": 7,
"amountLimit": 100
}
```
......
{
"private": true,
"version": "3.0.0-alpha.14.5",
"version": "3.0.0-alpha.16",
"dependencies": {},
"devDependencies": {
"assert": "~1.3.0",
......@@ -59,8 +59,8 @@
"url": "https://github.com/strapi/strapi/issues"
},
"engines": {
"node": ">= 9.0.0",
"npm": ">= 5.0.0"
"node": ">= 10.0.0",
"npm": ">= 6.0.0"
},
"license": "MIT"
}
{
"Auth & Permissions": "認證 & 權限",
"Content Manager": "內容管理",
"Analytics": "分析器",
"Content Manager": "資料管理",
"Content Type Builder": "建立和更新資料結構",
"Email": "Email",
"New entry": "新入口",
"Email": "電子郵件",
"Files Upload": "檔案上傳",
"HomePage.notification.newsLetter.success": "成功訂閱電子報",
"New entry": "新增項目",
"Password": "密碼",
"Provider": "供應商",
"ResetPasswordToken": "重設密碼的 Token",
"Role": "權限",
"Provider": "提供者",
"ResetPasswordToken": "密碼重設令符",
"Role": "身份",
"Roles & Permissions": "身份與權限",
"Settings Manager": "管理設定",
"Username": "使用者名稱",
"Users": "Users",
"Users & Permissions": "使用者與權限",
"app.components.BlockLink.code": "範例",
"app.components.BlockLink.code.content": "透過社群所開發的專案學習",
"app.components.BlockLink.documentation": "閱讀文件",
"app.components.BlockLink.documentation.content": "了解其中的觀念、參考指南以及教學。",
"app.components.Button.cancel": "取消",
"app.components.Button.save": "儲存",
"app.components.ComingSoonPage.comingSoon": "即將推出",
"app.components.ComingSoonPage.featuresNotAvailable": "這個功能正在開發中",
"app.components.DownloadInfo.download": "正在下載...",
"app.components.DownloadInfo.text": "請稍等幾分鐘,謝謝您的耐心。",
"app.components.HomePage.create": "Create your first Content Type",
"app.components.HomePage.createBlock.content.first": "The ",
"app.components.HomePage.createBlock.content.second": " plugin will help you to define the data structure of your models. If you’re new here, we highly recommend you to follow our ",
"app.components.HomePage.createBlock.content.tutorial": " tutorial.",
"app.components.HomePage.welcome": "歡迎回來!",
"app.components.HomePage.welcomeBlock.content": "We are happy to have you as one of community member. We are constantly looking for feedback so feel free to send us DM on ",
"app.components.HomePage.welcomeBlock.content.issues": "issues",
"app.components.HomePage.welcomeBlock.content.raise": " or raise ",
"app.components.ImgPreview.hint": "將您要上傳的檔案拖拉到這個框框,或是瀏覽檔案",
"app.components.DownloadInfo.download": "下載中...",
"app.components.DownloadInfo.text": "請稍候幾分鐘,謝謝。",
"app.components.EmptyAttributes.title": "這裡還沒有任何項目",
"app.components.HomePage.button.blog": "到部落格上閱讀更多",
"app.components.HomePage.button.quickStart": "開始新手教學",
"app.components.HomePage.community": "探索開發社群",
"app.components.HomePage.community.content": "在不同的社群中與其他成員、貢獻者以及開發者討論。",
"app.components.HomePage.create": "建立您的第一個資料結構",
"app.components.HomePage.createBlock.content.first": " ",
"app.components.HomePage.createBlock.content.second": " 這個擴充功能可以幫助您定義自己的資料結構。如果您是第一次使用,我們推薦您先閱讀 ",
"app.components.HomePage.createBlock.content.tutorial": " 教學。",
"app.components.HomePage.cta": "送出",
"app.components.HomePage.newsLetter": "訂閱電子報以獲得 Strapi 的最新訊息",
"app.components.HomePage.support": "支持我們",
"app.components.HomePage.support.content": "藉由購買T恤,可以讓我們繼續開發這個專案並給您更佳的使用者體驗!",
"app.components.HomePage.support.link": "立刻購買",
"app.components.HomePage.welcome": "歡迎加入!",
"app.components.HomePage.welcome.again": "歡迎回來! ",
"app.components.HomePage.welcomeBlock.content": "我們很高興您能成為我們社群的一份子。我們隨時歡迎您的意見,因此不要吝嗇於發訊息到 ",
"app.components.HomePage.welcomeBlock.content.again": "希望您在您的專案中有所進展... 隨時歡迎您來看看 Strapi 的新功能。我們正在盡最大的努力依照您的建議改進這個產品。",
"app.components.HomePage.welcomeBlock.content.issues": "問題。",
"app.components.HomePage.welcomeBlock.content.raise": "或是回報",
"app.components.ImgPreview.hint": "將您要上傳的檔案拖曳到此區域,或是瀏覽檔案",
"app.components.ImgPreview.hint.browse": "瀏覽",
"app.components.InputFile.newFile": "增加新檔案 {browse}",
"app.components.InputFileDetails.open": "Open in a new tab",
"app.components.InputFile.newFile": "增加新檔案",
"app.components.InputFileDetails.open": "在新分頁中開啟",
"app.components.InputFileDetails.originalName": "原始名稱:",
"app.components.InputFileDetails.remove": "移除檔案",
"app.components.InputFileDetails.size": "大小:",
"app.components.InstallPluginPage.InputSearch.label": " ",
"app.components.InstallPluginPage.InputSearch.placeholder": "搜尋擴充功能... (範例: 使用者認證)",
"app.components.InstallPluginPage.InputSearch.placeholder": "搜尋擴充功能... (範例: authentication)",
"app.components.InstallPluginPage.description": "輕鬆擴充您的應用程式",
"app.components.InstallPluginPage.helmet": "市集 - 擴充功能",
"app.components.InstallPluginPage.plugin.support-us.description": "透過購買 Strapi T-shirt 來支持我們。這些資金將幫助我們繼續努力打造更好的產品和使用者體驗",
"app.components.InstallPluginPage.plugin.support-us.description": "透過購買 Strapi T-shirt 來支持我們。這些資金將幫助我們繼續努力打造更好的產品和使用者體驗",
"app.components.InstallPluginPage.title": "市集 - 擴充功能",
"app.components.InstallPluginPopup.downloads": "下載",
"app.components.InstallPluginPopup.navLink.avis": "avis",
"app.components.InstallPluginPopup.navLink.avis": "視圖",
"app.components.InstallPluginPopup.navLink.changelog": "更新紀錄",
"app.components.InstallPluginPopup.navLink.description": "說明",
"app.components.InstallPluginPopup.navLink.faq": "常見問題",
......@@ -50,14 +76,14 @@
"app.components.ListPluginsPage.helmet.title": "擴充功能列表",
"app.components.ListPluginsPage.title": "擴充功能",
"app.components.NotFoundPage.back": "回到主頁",
"app.components.NotFoundPage.description": "沒有結果",
"app.components.NotFoundPage.description": "找不到此頁面",
"app.components.Official": "官方",
"app.components.PluginCard.Button.label.download": "下載",
"app.components.PluginCard.Button.label.install": "已安裝",
"app.components.PluginCard.Button.label.install": "已安裝",
"app.components.PluginCard.Button.label.support": "幫助我們",
"app.components.PluginCard.compatible": "相容您的應用程式",
"app.components.PluginCard.compatible": "與您的專案相容",
"app.components.PluginCard.compatibleCommunity": "相容社群",
"app.components.PluginCard.more-details": "更多細節",
"app.components.PluginCard.more-details": "顯示更多",
"app.components.PluginCard.price.free": "免費",
"app.components.listPlugins.button": "安裝新的擴充功能",
"app.components.listPlugins.title.none": "目前沒有安裝任何擴充功能",
......@@ -67,46 +93,49 @@
"app.utils.SelectOption.defaultMessage": " ",
"app.utils.defaultMessage": " ",
"app.utils.placeholder.defaultMessage": " ",
"components.AutoReloadBlocker.description": "打開此檔案來安裝功能",
"components.AutoReloadBlocker.header": "需要這個擴充功能才能重新整理",
"components.AutoReloadBlocker.description": "開啟以下的檔案來啟動此功能",
"components.AutoReloadBlocker.header": "這個擴充功能需要自動重新整理功能才能載入",
"components.ErrorBoundary.title": "有錯誤發生...",
"components.Input.error.attribute.key.taken": "這個數值已經存在了",
"components.Input.error.attribute.sameKeyAndName": "不能等於",
"components.Input.error.attribute.taken": "這個欄位名稱已經存在了",
"components.Input.error.contentTypeName.taken": "這個名稱已經存在了",
"components.Input.error.custom-error": "{errorMessage} ",
"components.Input.error.validation.email": "請輸入有效 Email",
"components.Input.error.validation.max": "這個數值太高了",
"components.Input.error.validation.maxLength": "這個數值太長了",
"components.Input.error.validation.min": "這個數值太低了",
"components.Input.error.validation.minLength": "這個數值太短了",
"components.Input.error.validation.minSupMax": "不能高過",
"components.Input.error.validation.regex": "此欄位沒有對應到 regex",
"components.Input.error.validation.required": "此欄位必填",
"components.Input.error.validation.email": "請輸入有效的電子郵件地址",
"components.Input.error.validation.json": "非法的JSON格式",
"components.Input.error.validation.max": "數值過高",
"components.Input.error.validation.maxLength": "長度過長",
"components.Input.error.validation.min": "數值過低",
"components.Input.error.validation.minLength": "長度不足",
"components.Input.error.validation.minSupMax": "不能高於最大值",
"components.Input.error.validation.regex": "此欄位無法與正規表達式批配",
"components.Input.error.validation.required": "必填欄位",
"components.ListRow.empty": "沒有資料可以顯示",
"components.OverlayBlocker.description": "您正在使用的功能需要重新啟動,請等重新啟動完成。",
"components.OverlayBlocker.title": "等候回應...",
"components.PageFooter.select": "個數(頁)",
"components.OverlayBlocker.description": "您正在使用的功能需要重新啟動,請等重新啟動完成。",
"components.OverlayBlocker.title": "等待重新啟動中...",
"components.PageFooter.select": "項目/頁",
"components.ProductionBlocker.description": "為了安全起見,我們需要在其他環境關閉這個擴充功能",
"components.ProductionBlocker.header": "這個擴充功能只能在開發環境中使用",
"components.Wysiwyg.ToggleMode.markdown": "Switch to markdown",
"components.Wysiwyg.ToggleMode.preview": "Switch to preview",
"components.Wysiwyg.collapse": "Collapse",
"components.Wysiwyg.selectOptions.H1": "Title H1",
"components.Wysiwyg.selectOptions.H2": "Title H2",
"components.Wysiwyg.selectOptions.H3": "Title H3",
"components.Wysiwyg.selectOptions.H4": "Title H4",
"components.Wysiwyg.selectOptions.H5": "Title H5",
"components.Wysiwyg.selectOptions.H6": "Title H6",
"components.Wysiwyg.selectOptions.title": "Add a title",
"components.WysiwygBottomControls.charactersIndicators": "characters",
"components.WysiwygBottomControls.fullscreen": "Expand",
"components.WysiwygBottomControls.uploadFiles": "Attach files by dragging & dropping, {browse}, or pasting from the clipboard.",
"components.WysiwygBottomControls.uploadFiles.browse": "selecting them",
"components.Wysiwyg.ToggleMode.markdown": "切換到編輯模式",
"components.Wysiwyg.ToggleMode.preview": "切換到預覽模式",
"components.Wysiwyg.collapse": "折疊",
"components.Wysiwyg.selectOptions.H1": "標題1",
"components.Wysiwyg.selectOptions.H2": "標題2",
"components.Wysiwyg.selectOptions.H3": "標題3",
"components.Wysiwyg.selectOptions.H4": "標題4",
"components.Wysiwyg.selectOptions.H5": "標題5",
"components.Wysiwyg.selectOptions.H6": "標題6",
"components.Wysiwyg.selectOptions.title": "新增標題",
"components.WysiwygBottomControls.charactersIndicators": "字元",
"components.WysiwygBottomControls.fullscreen": "展開",
"components.WysiwygBottomControls.uploadFiles": "拖曳檔案、從剪貼簿貼上或 {browse}.",
"components.WysiwygBottomControls.uploadFiles.browse": "選擇檔案",
"components.popUpWarning.button.cancel": "取消",
"components.popUpWarning.button.confirm": "確認",
"components.popUpWarning.message": "您確定要刪除這個嗎?",
"components.popUpWarning.message": "您確定要刪除此項目嗎?",
"components.popUpWarning.title": "請確認",
"notification.error": "有錯誤發生了",
"request.error.model.unknown": "這個資料不存在"
"notification.error": "發生錯誤",
"notification.error.layout": "無法取得佈局",
"request.error.model.unknown": "不存在的資料",
"app.utils.delete": "刪除"
}
\ No newline at end of file
{
"name": "strapi-admin",
"version": "3.0.0-alpha.14.5",
"version": "3.0.0-alpha.16",
"description": "Strapi Admin",
"repository": {
"type": "git",
......@@ -31,8 +31,8 @@
},
"devDependencies": {
"sanitize.css": "^4.1.0",
"strapi-helper-plugin": "3.0.0-alpha.14.5",
"strapi-utils": "3.0.0-alpha.14.5"
"strapi-helper-plugin": "3.0.0-alpha.16",
"strapi-utils": "3.0.0-alpha.16"
},
"author": {
"name": "Strapi",
......@@ -47,8 +47,8 @@
}
],
"engines": {
"node": ">= 9.0.0",
"npm": ">= 5.0.0"
"node": ">= 10.0.0",
"npm": ">= 6.0.0"
},
"license": "MIT"
}
\ No newline at end of file
{
"name": "strapi-generate-admin",
"version": "3.0.0-alpha.14.5",
"version": "3.0.0-alpha.16",
"description": "Generate the default admin panel for a Strapi application.",
"homepage": "http://strapi.io",
"keywords": [
......@@ -15,8 +15,8 @@
"dependencies": {
"fs-extra": "^4.0.1",
"lodash": "^4.17.5",
"strapi-admin": "3.0.0-alpha.14.5",
"strapi-utils": "3.0.0-alpha.14.5"
"strapi-admin": "3.0.0-alpha.16",
"strapi-utils": "3.0.0-alpha.16"
},
"author": {
"email": "hi@strapi.io",
......@@ -38,8 +38,8 @@
"url": "https://github.com/strapi/strapi/issues"
},
"engines": {
"node": ">= 9.0.0",
"npm": ">= 5.3.0"
"node": ">= 10.0.0",
"npm": ">= 6.0.0"
},
"license": "MIT"
}
\ No newline at end of file
{
"name": "strapi-generate-api",
"version": "3.0.0-alpha.14.5",
"version": "3.0.0-alpha.16",
"description": "Generate an API for a Strapi application.",
"homepage": "http://strapi.io",
"keywords": [
......@@ -39,8 +39,8 @@
"url": "https://github.com/strapi/strapi/issues"
},
"engines": {
"node": ">= 9.0.0",
"npm": ">= 5.3.0"
"node": ">= 10.0.0",
"npm": ">= 6.0.0"
},
"license": "MIT"
}
\ No newline at end of file
'use strict';
/* global <%= globalID %> */
/**
* <%= filename %> service
......@@ -10,6 +9,9 @@
// Public dependencies.
const _ = require('lodash');
// Strapi utilities.
const utils = require('strapi-hook-bookshelf/lib/utils/');
module.exports = {
/**
......@@ -19,8 +21,6 @@ module.exports = {
*/
fetchAll: (params) => {
// Get model hook
const hook = strapi.hook[<%= globalID %>.orm];
// Convert `params` object to filters compatible with Bookshelf.
const filters = strapi.utils.models.convertParams('<%= globalID.toLowerCase() %>', params);
// Select field to populate.
......@@ -29,18 +29,22 @@ module.exports = {
.map(ast => ast.alias);
return <%= globalID %>.query(function(qb) {
// Generate match stage.
hook.load().generateMatchStage(qb)(<%= globalID %>, filters);
if (_.has(filters, 'start')) qb.offset(filters.start);
if (_.has(filters, 'limit')) qb.limit(filters.limit);
if (!_.isEmpty(filters.sort)) {
if (filters.sort.key) {
qb.orderBy(filters.sort.key, filters.sort.order);
_.forEach(filters.where, (where, key) => {
if (_.isArray(where.value) && where.symbol !== 'IN') {
for (const value in where.value) {
qb[value ? 'where' : 'orWhere'](key, where.symbol, where.value[value])
}
} else {
qb.orderBy(filters.sort);
qb.where(key, where.symbol, where.value);
}
});
if (filters.sort) {
qb.orderBy(filters.sort.key, filters.sort.order);
}
qb.offset(filters.start);
qb.limit(filters.limit);
}).fetchAll({
withRelated: filters.populate || populate
});
......
'use strict';
/* global <%= globalID %> */
/**
* <%= filename %> service
......@@ -10,8 +9,6 @@
// Public dependencies.
const _ = require('lodash');
const { models: { mergeStages } } = require('strapi-utils');
module.exports = {
/**
......@@ -20,24 +17,22 @@ module.exports = {
* @return {Promise}
*/
fetchAll: (params, next, { populate } = {}) => {
fetchAll: (params) => {
// Convert `params` object to filters compatible with Mongo.
const filters = strapi.utils.models.convertParams('<%= globalID.toLowerCase() %>', params);
const hook = strapi.hook[<%= globalID %>.orm];
// Generate stages.
const populateStage = hook.load().generateLookupStage(<%= globalID %>, { whitelistedPopulate: populate }); // Nested-Population
const matchStage = hook.load().generateMatchStage(<%= globalID %>, filters); // Nested relation filter
const aggregateStages = mergeStages(filters.populate || populateStage, matchStage);
// Select field to populate.
const populate = <%= globalID %>.associations
.filter(ast => ast.autoPopulate !== false)
.map(ast => ast.alias)
.join(' ');
const result = <%= globalID %>.aggregate(aggregateStages)
return <%= globalID %>
.find()
.where(filters.where)
.sort(filters.sort)
.skip(filters.start)
.limit(filters.limit);
if (_.has(filters, 'start')) result.skip(filters.start);
if (_.has(filters, 'limit')) result.limit(filters.limit);
if (!_.isEmpty(filters.sort)) result.sort(filters.sort);
return result;
.limit(filters.limit)
.populate(populate);
},
/**
......
{
"name": "strapi-generate-controller",
"version": "3.0.0-alpha.14.5",
"version": "3.0.0-alpha.16",
"description": "Generate a controller for a Strapi API.",
"homepage": "http://strapi.io",
"keywords": [
......@@ -39,8 +39,8 @@
"url": "https://github.com/strapi/strapi/issues"
},
"engines": {
"node": ">= 9.0.0",
"npm": ">= 5.3.0"
"node": ">= 10.0.0",
"npm": ">= 6.0.0"
},
"license": "MIT"
}
\ No newline at end of file
{
"name": "strapi-generate-model",
"version": "3.0.0-alpha.14.5",
"version": "3.0.0-alpha.16",
"description": "Generate a model for a Strapi API.",
"homepage": "http://strapi.io",
"keywords": [
......@@ -39,8 +39,8 @@
"url": "https://github.com/strapi/strapi/issues"
},
"engines": {
"node": ">= 9.0.0",
"npm": ">= 5.3.0"
"node": ">= 10.0.0",
"npm": ">= 6.0.0"
},
"license": "MIT"
}
\ No newline at end of file
......@@ -56,7 +56,6 @@ module.exports = scope => {
'dependencies': Object.assign({}, {
'lodash': '^4.17.5',
'strapi': getDependencyVersion(cliPkg, 'strapi'),
'strapi-utils': getDependencyVersion(cliPkg, 'strapi'),
[scope.client.connector]: getDependencyVersion(cliPkg, 'strapi'),
}, additionalsDependencies, {
[scope.client.module]: scope.client.version
......@@ -76,8 +75,8 @@ module.exports = scope => {
'uuid': uuid()
},
'engines': {
'node': '>= 9.0.0',
'npm': '>= 5.0.0'
"node": ">= 10.0.0",
"npm": ">= 6.0.0"
},
'license': scope.license || 'MIT'
});
......
{
"name": "strapi-generate-new",
"version": "3.0.0-alpha.14.5",
"version": "3.0.0-alpha.16",
"description": "Generate a new Strapi application.",
"homepage": "http://strapi.io",
"keywords": [
......@@ -19,7 +19,7 @@
"listr": "^0.14.1",
"lodash": "^4.17.5",
"ora": "^2.1.0",
"strapi-utils": "3.0.0-alpha.14.5",
"strapi-utils": "3.0.0-alpha.16",
"uuid": "^3.1.0"
},
"scripts": {
......@@ -45,8 +45,8 @@
"url": "https://github.com/strapi/strapi/issues"
},
"engines": {
"node": ">= 9.0.0",
"npm": ">= 5.3.0"
"node": ">= 10.0.0",
"npm": ">= 6.0.0"
},
"license": "MIT"