Merge branches 'fix/i18n-locale-queries-forbidden-access' and 'main' of github.com:strapi/strapi into fix/i18n-locale-queries-forbidden-access

This commit is contained in:
Convly 2022-09-01 10:35:35 +02:00
commit ccf39e4f2f
20 changed files with 1586 additions and 1471 deletions

View File

@ -51,6 +51,7 @@ module.exports = {
'<rootDir>/packages/admin-test-utils/lib/setup/styled-components.js',
'<rootDir>/packages/admin-test-utils/lib/setup/strapi.js',
],
testEnvironment: 'jsdom',
transform: {
'^.+\\.js$': ['@swc/jest', { jsc: { parser: { jsx: true, dynamicImport: true } } }],
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':

View File

@ -87,9 +87,10 @@
"husky": "3.1.0",
"inquirer": "8.2.4",
"istanbul": "~0.4.2",
"jest": "26.6.3",
"jest-circus": "26.6.3",
"jest-cli": "26.6.3",
"jest": "29.0.0",
"jest-circus": "29.0.0",
"jest-cli": "29.0.0",
"jest-environment-jsdom": "29.0.0",
"jest-watch-typeahead": "0.6.5",
"lerna": "5.4.3",
"lint-staged": "10.5.4",

View File

@ -17,6 +17,7 @@ function SelectMany({
name,
isDisabled,
isLoading,
loadingMessage,
onInputChange,
onMenuClose,
onMenuOpen,
@ -61,6 +62,7 @@ function SelectMany({
}}
mainField={mainField}
isLoading={isLoading}
loadingMessage={loadingMessage}
isMulti
isSearchable
options={options}
@ -119,6 +121,7 @@ SelectMany.propTypes = {
displayNavigationLink: PropTypes.bool.isRequired,
isDisabled: PropTypes.bool.isRequired,
isLoading: PropTypes.bool.isRequired,
loadingMessage: PropTypes.string.isRequired,
mainField: PropTypes.shape({
name: PropTypes.string.isRequired,
schema: PropTypes.shape({

View File

@ -14,6 +14,7 @@ function SelectOne({
name,
isDisabled,
isLoading,
loadingMessage,
onChange,
onInputChange,
onMenuClose,
@ -37,6 +38,7 @@ function SelectOne({
isClearable
isDisabled={isDisabled}
isLoading={isLoading}
loadingMessage={loadingMessage}
mainField={mainField}
options={options}
onChange={onChange}
@ -70,6 +72,7 @@ SelectOne.propTypes = {
components: PropTypes.object,
isDisabled: PropTypes.bool.isRequired,
isLoading: PropTypes.bool.isRequired,
loadingMessage: PropTypes.string.isRequired,
mainField: PropTypes.shape({
name: PropTypes.string.isRequired,
schema: PropTypes.shape({

View File

@ -282,6 +282,12 @@ function SelectWrapper({
isDisabled={isDisabled}
isLoading={isLoading}
isClearable
loadingMessage={() =>
formatMessage({
id: getTrad('DynamicTable.relation-loading'),
defaultMessage: 'Relations are loading',
})
}
mainField={mainField}
move={moveRelation}
name={name}

View File

@ -63,7 +63,7 @@
"bcryptjs": "2.4.3",
"chalk": "^4.1.1",
"chokidar": "^3.5.1",
"codemirror": "^5.65.6",
"codemirror": "^5.65.8",
"cross-env": "^7.0.3",
"css-loader": "6.7.1",
"date-fns": "2.29.2",

File diff suppressed because it is too large Load Diff

View File

@ -12,16 +12,16 @@ describe('Configuration settings service', () => {
const settings = await settingsService.createDefaultSettings(schema);
expect(settings).toMatchInlineSnapshot(`
Object {
"bulkable": true,
"defaultSortBy": "id",
"defaultSortOrder": "ASC",
"filterable": true,
"mainField": "id",
"pageSize": 10,
"searchable": true,
}
`);
{
"bulkable": true,
"defaultSortBy": "id",
"defaultSortOrder": "ASC",
"filterable": true,
"mainField": "id",
"pageSize": 10,
"searchable": true,
}
`);
});
test('uses id as mainField by default', async () => {

View File

@ -1,12 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Content types service format ContentType Returns consistent schemas 1`] = `
Object {
{
"apiID": "my-name",
"plugin": "some-plugin",
"schema": Object {
"attributes": Object {
"title": Object {
"schema": {
"attributes": {
"title": {
"type": "string",
},
},
@ -15,8 +15,8 @@ Object {
"displayName": "My name",
"draftAndPublish": false,
"kind": "singleType",
"pluginOptions": Object {
"content-manager": Object {
"pluginOptions": {
"content-manager": {
"visible": true,
},
},

View File

@ -1,14 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Content Type Builder - Content types Collection Types Get collection type returns full schema and information 1`] = `
Object {
"data": Object {
{
"data": {
"apiID": "test-collection-type",
"schema": Object {
"attributes": Object {
"title": Object {
"pluginOptions": Object {
"i18n": Object {
"schema": {
"attributes": {
"title": {
"pluginOptions": {
"i18n": {
"localized": true,
},
},
@ -20,8 +20,8 @@ Object {
"displayName": "Test Collection Type",
"draftAndPublish": false,
"kind": "collectionType",
"pluginOptions": Object {
"i18n": Object {
"pluginOptions": {
"i18n": {
"localized": true,
},
},
@ -36,12 +36,12 @@ Object {
`;
exports[`Content Type Builder - Content types Collection Types Get collection type returns full schema and informations with draftAndPublish 1`] = `
Object {
"data": Object {
{
"data": {
"apiID": "ct-with-dp",
"schema": Object {
"attributes": Object {
"title": Object {
"schema": {
"attributes": {
"title": {
"type": "string",
},
},

View File

@ -1,14 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Content Type Builder - Content types Single Types Get single type returns full schema and information 1`] = `
Object {
"data": Object {
{
"data": {
"apiID": "test-single-type",
"schema": Object {
"attributes": Object {
"title": Object {
"pluginOptions": Object {
"i18n": Object {
"schema": {
"attributes": {
"title": {
"pluginOptions": {
"i18n": {
"localized": true,
},
},
@ -20,8 +20,8 @@ Object {
"displayName": "Test Single Type",
"draftAndPublish": false,
"kind": "singleType",
"pluginOptions": Object {
"i18n": Object {
"pluginOptions": {
"i18n": {
"localized": true,
},
},

View File

@ -17,7 +17,13 @@ const ReactSelect = ({ components, styles, error, ariaErrorMessage, ...props })
<Select
{...props}
menuPosition="fixed"
components={{ ClearIndicator, DropdownIndicator, IndicatorSeparator, ...components }}
components={{
ClearIndicator,
DropdownIndicator,
IndicatorSeparator,
LoadingIndicator: () => null,
...components,
}}
aria-errormessage={error && ariaErrorMessage}
aria-invalid={!!error}
styles={{ ...customStyles, ...styles }}

View File

@ -45,12 +45,12 @@ module.exports = (strapi) => {
environment: strapi.config.environment,
os: os.type(),
osPlatform: os.platform(),
osArch: os.arch(),
osRelease: os.release(),
nodeVersion: process.version,
nodeVersion: process.versions.node,
docker: process.env.DOCKER || isDocker(),
isCI: ciEnv.isCI,
version: strapi.config.get('info.strapi'),
strapiVersion: strapi.config.get('info.strapi'),
projectType: isEE ? 'Enterprise' : 'Community',
useTypescriptOnServer: isUsingTypeScriptSync(serverRootPath),
useTypescriptOnAdmin: isUsingTypeScriptSync(adminRootPath),

View File

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`SelectTree renders 1`] = `
Object {
{
"asFragment": [Function],
"baseElement": .c3 {
border: 0;

View File

@ -1,22 +1,22 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`flattenTree flattens the passed tree structure properly 1`] = `
Array [
Object {
[
{
"depth": 0,
"label": "Folder 1",
"parent": undefined,
"value": "f-1",
},
Object {
"children": Array [
Object {
{
"children": [
{
"label": "Folder 2-1",
"value": "f-2-1",
},
Object {
"children": Array [
Object {
{
"children": [
{
"label": "Folder 2-2-1",
"value": "f-2-2-1",
},
@ -30,15 +30,15 @@ Array [
"parent": undefined,
"value": "f-2",
},
Object {
{
"depth": 1,
"label": "Folder 2-1",
"parent": "f-2",
"value": "f-2-1",
},
Object {
"children": Array [
Object {
{
"children": [
{
"label": "Folder 2-2-1",
"value": "f-2-2-1",
},
@ -48,7 +48,7 @@ Array [
"parent": "f-2",
"value": "f-2-2",
},
Object {
{
"depth": 2,
"label": "Folder 2-2-1",
"parent": "f-2-2",

View File

@ -2,11 +2,6 @@
const metricsService = require('../metrics');
// TODO: the matcher exists in jest@28
const closeTo = (expected, precision = 2) => ({
asymmetricMatch: (actual) => Math.abs(expected - actual) < 10 ** -precision / 2,
});
describe('metrics', () => {
describe('computeMetrics', () => {
test.each([
@ -95,9 +90,9 @@ describe('metrics', () => {
expect(results).toMatchObject({
assetNumber,
folderNumber,
averageDepth: closeTo(averageDepth, 3),
averageDepth: expect.closeTo(averageDepth, 3),
maxDepth,
averageDeviationDepth: closeTo(averageDeviationDepth, 3),
averageDeviationDepth: expect.closeTo(averageDeviationDepth, 3),
});
});
});

View File

@ -58,12 +58,12 @@ const generateNewApp = (projectDirectory, cliArguments) => {
sentry.configureScope(function scope(sentryScope) {
const tags = {
os_arch: os.arch(),
os_type: os.type(),
os_platform: os.platform(),
os_release: os.release(),
strapi_version: scope.strapiVersion,
node_version: process.version,
os: os.type(),
osPlatform: os.platform(),
osArch: os.arch(),
osRelease: os.release(),
version: scope.strapiVersion,
nodeVersion: process.versions.node,
docker: scope.docker,
};

View File

@ -53,6 +53,21 @@ function captureStderr(name, error) {
return captureError(name);
}
const getProperties = (scope, error) => ({
error: typeof error === 'string' ? error : error && error.message,
os: os.type(),
osPlatform: os.platform(),
osArch: os.arch(),
osRelease: os.release(),
version: scope.strapiVersion,
nodeVersion: process.versions.node,
docker: scope.docker,
useYarn: scope.useYarn,
useTypescriptOnServer: scope.useTypescript,
useTypescriptOnAdmin: scope.useTypescript,
noRun: (scope.runQuickstartApp !== true).toString(),
});
function trackEvent(event, body) {
if (process.env.NODE_ENV === 'test') {
return;
@ -76,19 +91,7 @@ function trackEvent(event, body) {
function trackError({ scope, error }) {
const { uuid } = scope;
const properties = {
error: typeof error === 'string' ? error : error && error.message,
os: os.type(),
platform: os.platform(),
release: os.release(),
version: scope.strapiVersion,
nodeVersion: process.version,
docker: scope.docker,
useYarn: scope.useYarn,
useTypescriptOnServer: scope.useTypescript,
useTypescriptOnAdmin: scope.useTypescript,
};
const properties = getProperties(scope, error);
try {
return trackEvent('didNotCreateProject', {
@ -104,21 +107,7 @@ function trackError({ scope, error }) {
function trackUsage({ event, scope, error }) {
const { uuid } = scope;
const properties = {
error: typeof error === 'string' ? error : error && error.message,
os: os.type(),
os_arch: os.arch(),
os_platform: os.platform(),
os_release: os.release(),
node_version: process.version,
version: scope.strapiVersion,
docker: scope.docker,
useYarn: scope.useYarn.toString(),
useTypescriptOnServer: scope.useTypescript,
useTypescriptOnAdmin: scope.useTypescript,
noRun: (scope.runQuickstartApp !== true).toString(),
};
const properties = getProperties(scope, error);
try {
return trackEvent(event, {

1385
yarn.lock

File diff suppressed because it is too large Load Diff