Commit abbafaac authored by Daniel Caillibaud's avatar Daniel Caillibaud

Merge branch 'upgradeBabel74CoreJs3' into 'master'

màj babel 7.4 core-js 3

See merge request !192
parents 95f9b77a 015746fa
......@@ -2,7 +2,7 @@
* paramètres locaux pour npm test
*/
const path = require('path')
const sesatheques = require('sesatheque-client/src/sesatheques')
const {addSesatheque} = require('sesatheque-client/src/sesatheques')
const logDir = path.join(__dirname, '../logs.test')
const appName = 'testSesatheque'
const port = 3013
......@@ -12,7 +12,7 @@ const host = hostname + ':' + port
// on ajoute cette sesatheque
const baseId = 'bibliLocalTest'
const baseUrl = 'http://' + host + '/'
sesatheques.addSesatheque(baseId, baseUrl)
addSesatheque(baseId, baseUrl)
const getLoggerConf = suffix => ({
logLevel: 'error',
......
......@@ -17,6 +17,13 @@
margin: 0;
}
/* le texte est complètement collé sans ces margin… */
.relations li {
img, a {
margin: 0 0.5em;
}
}
.txtbold {
font-weight: bold;
}
......
// inclusion des polyfills:
import '@babel/polyfill'
// inclusion des polyfills
// cf rmq dans app/client/page/index.js
import 'core-js/stable'
import 'regenerator-runtime/runtime'
import 'whatwg-fetch'
import {createElement} from 'react'
......
......@@ -137,7 +137,7 @@ function addResultatCallback (ressource, options) {
function alertIfError (error) {
if (!error) return
console.error(error)
/* global bugsnagClient, alert */
/* global bugsnagClient */
if (typeof bugsnagClient !== 'undefined') bugsnagClient.notify(error)
alert(error)
}
......
......@@ -30,11 +30,16 @@
*/
'use strict'
// On ajoute les @babel/polyfill via ce fichier et non directement dans les entries de webpack.
// C'est le seul moyen pour qu'il soit pris en compte par babel-env-preset 'useBuiltIns' option
// qui va venir filtrer pour n'inclure que les polyfills nécessaires pour les browsers ciblés.
// Cf https://babeljs.io/docs/en/babel-preset-env#usebuiltins-entry
import '@babel/polyfill'
// On ajoutait les @babel/polyfill via ce fichier et non directement dans les entries de webpack.
// C'était le seul moyen pour qu'il soit pris en compte par babel-env-preset 'useBuiltIns' option
// (qui filtrait pour n'inclure que les polyfills nécessaires pour les browsers ciblés.)
// depuis babel 7.4, y'a plus de @babel/polyfill,
// on utilise directement core-js qui s'occupe d'ajouter les polyfill nécessaires,
// cf https://www.thebasement.be/updating-to-babel-7.4/
// https://babeljs.io/blog/2019/03/19/7.4.0
// avec useBuiltIns: "usage" faut pas ces deux lignes (seulement avec entry)
require('core-js/stable')
require('regenerator-runtime/runtime')
const dom = require('sesajstools/dom')
const log = require('sesajstools/utils/log')
......
......@@ -31,4 +31,4 @@
'use strict'
module.exports = require('sesatheque-client/src/constructors/Groupe')
module.exports = require('sesatheque-client/dist/server/constructors/Groupe').default
......@@ -30,4 +30,4 @@
*/
'use strict'
module.exports = require('sesatheque-client/src/constructors/Ref')
module.exports = require('sesatheque-client/dist/server/constructors/Ref').default
......@@ -31,4 +31,4 @@
'use strict'
module.exports = require('sesatheque-client/src/constructors/Ressource')
module.exports = require('sesatheque-client/dist/server/constructors/Ressource').default
......@@ -30,4 +30,4 @@
*/
'use strict'
module.exports = require('sesatheque-client/src/constructors/Resultat')
module.exports = require('sesatheque-client/dist/server/constructors/Resultat').default
......@@ -39,7 +39,7 @@ const log = require('sesajstools/utils/log')
const sjtObj = require('sesajstools/utils/object')
const sjtUrl = require('sesajstools/http/url')
const {addSesatheque, reBaseUrl} = require('sesatheque-client/dist/server/sesatheques')
const {addSesatheque, reBaseUrl} = require('sesatheque-client/dist/server/sesatheques').default
// la conf du composant ressource à part
const configRessource = require('./ressource/config')
const {version} = require('../../package')
......
......@@ -100,7 +100,7 @@ module.exports = function (component) {
} else if (typeof error === 'string') {
message = error
} else if (error instanceof Error) {
log.error(error)
console.error(error)
message = error.toString()
} else if (Array.isArray(error) && error.every(err => typeof err === 'string')) {
message = `Il y a ${error.length} erreurs :\n- ${error.join('\n- ')}`
......
......@@ -57,6 +57,8 @@ module.exports = function (component) {
context.status = 500
displayError(context, error)
} else if (ressource && isPublic(ressource)) {
// faut préciser les droits en lecture seule (on est sur /public/, donc pas de cookie)
ressource._droits = 'R'
displayRessource(context, ressource)
} else if (ressource) {
// elle n'était pas publique
......@@ -85,6 +87,7 @@ module.exports = function (component) {
context.status = 500
displayError(context, error)
} else if (ressource && (isPublic(ressource) || origine === 'cle')) {
ressource._droits = 'R'
displayRessource(context, ressource)
} else if (ressource) {
// elle n'était pas publique
......
......@@ -3,7 +3,7 @@
*/
const path = require('path')
const uuid = require('an-uuid')
const sesatheques = require('sesatheque-client/src/sesatheques')
const {addSesatheque} = require('sesatheque-client/src/sesatheques')
const logDir = path.join(__dirname, '../logs.test')
// sert de préfixe de log, dbName et redisPrefix
const appName = 'testSesatheque'
......@@ -12,7 +12,7 @@ const hostname = 'localhost'
const port = 3011
const host = `${hostname}:${port}`
const baseUrl = `http://${host}/`
sesatheques.addSesatheque(baseId, baseUrl)
addSesatheque(baseId, baseUrl)
const getLoggerConf = suffix => ({
logLevel: 'error',
......
......@@ -68,16 +68,11 @@
[
"@babel/preset-env",
{
"targets": {
"browsers": [
"ie 11",
"last 3 iOS versions",
"last 3 Safari versions",
"last 3 Android versions"
]
},
"useBuiltIns": "entry",
"forceAllTransforms": true
"useBuiltIns": "usage",
"corejs": {
"version": 3,
"proposals": true
}
}
],
"@babel/preset-react"
......@@ -85,10 +80,16 @@
"plugins": [
"@babel/plugin-syntax-dynamic-import",
"react-hot-loader/babel"
]
],
"sourceType": "unambiguous"
},
"browserslist": [
"ie 11",
"last 3 iOS versions",
"last 3 Safari versions",
"last 3 Android versions"
],
"dependencies": {
"@babel/polyfill": "^7.2.3",
"@bugsnag/browser": "^6.2.0",
"@bugsnag/js": "^6.2.0",
"@bugsnag/plugin-react": "^6.2.0",
......@@ -101,7 +102,6 @@
"body-parser": "^1.18.2",
"connected-react-router": "5.0.1",
"elementtree": "^0.1.7",
"eslint-import-resolver-node": "^0.3.2",
"express": "^4.16.2",
"glob": "^7.1.4",
"history": "^4.7.2",
......@@ -130,7 +130,7 @@
"redux": "4.0.1",
"redux-form": "7.4.2",
"redux-thunk": "2.3.0",
"regenerator-runtime": "0.12.1",
"regenerator-runtime": "^0.13.2",
"request": "^2.88.0",
"roboto-fontface": "^0.10.0",
"sesajstools": "git+https://framagit.org/Sesamath/sesajstools.git",
......@@ -140,57 +140,58 @@
"whatwg-fetch": "^3.0.0"
},
"devDependencies": {
"@babel/cli": "^7.2.3",
"@babel/core": "^7.2.2",
"@babel/plugin-proposal-object-rest-spread": "^7.0.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
"@babel/plugin-transform-modules-commonjs": "^7.1.0",
"@babel/plugin-transform-object-assign": "^7.0.0",
"@babel/preset-env": "^7.2.3",
"@babel/cli": "^7.4.4",
"@babel/core": "^7.4.5",
"@babel/plugin-proposal-object-rest-spread": "^7.4.4",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/plugin-transform-modules-commonjs": "^7.4.4",
"@babel/plugin-transform-object-assign": "^7.2.0",
"@babel/preset-env": "^7.4.5",
"@babel/preset-react": "^7.0.0",
"@babel/register": "^7.0.0",
"autoprefixer": "^9.4.3",
"babel-eslint": "^10.0.1",
"babel-loader": "^8.0.4",
"babel-plugin-module-resolver": "^3.1.1",
"@babel/register": "^7.4.4",
"autoprefixer": "^9.6.0",
"babel-eslint": "^10.0.2",
"babel-loader": "^8.0.6",
"babel-plugin-module-resolver": "^3.2.0",
"chai": "^4.1.2",
"chai-as-promised": "^7.1.1",
"clean-webpack-plugin": "^1.0.0",
"copy-webpack-plugin": "^5.0.4",
"core-js": "^2.6.5",
"css-loader": "^2.0.1",
"clean-webpack-plugin": "^3.0.0",
"copy-webpack-plugin": "^5.0.3",
"core-js": "^3.2.1",
"css-loader": "^3.0.0",
"enzyme": "^3.6.0",
"enzyme-adapter-react-16": "^1.5.0",
"es-check": "^4.0.0",
"eslint": "^5.6.0",
"es-check": "^5.0.0",
"eslint": "^6.0.1",
"eslint-config-standard": "^12.0.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^8.0.0",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-react": "^7.11.1",
"eslint-import-resolver-node": "^0.3.2",
"eslint-plugin-import": "^2.18.0",
"eslint-plugin-node": "^9.1.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-react": "^7.14.2",
"eslint-plugin-standard": "^4.0.0",
"faker": "^4.1.0",
"file-loader": "^3.0.1",
"file-loader": "^4.0.0",
"ignore-styles": "^5.0.1",
"ink-docstrap": "^1.3.0",
"jsdoc": "^3.5.5",
"jsdom": "^13.0.0",
"mocha": "^5.2.0",
"jsdom": "^15.1.1",
"mocha": "^6.2.0",
"node-fetch": "^2.2.0",
"node-sass": "^4.11.0",
"nodemon": "^1.18.4",
"null-loader": "^0.1.1",
"null-loader": "^3.0.0",
"postcss-loader": "^3.0.0",
"pre-push": "^0.1.1",
"react-styleguidist": "^8.0.1",
"sass-loader": "^7.1.0",
"sinon": "^7.0.0",
"sinon-chai": "^3.2.0",
"style-loader": "^0.23.1",
"supertest": "^3.3.0",
"style-loader": "^1.0.0",
"supertest": "^4.0.2",
"trace": "^3.1.0",
"uglifyjs-webpack-plugin": "^2.0.1",
"url-loader": "^1.1.2",
"url-loader": "^2.0.1",
"webpack": "^4.28.1",
"webpack-cli": "^3.1.2",
"webpack-dev-server": "^3.1.10",
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
......@@ -46,9 +46,9 @@ import app from '../app/server'
import config from '../app/server/config'
import anLog from 'an-log'
// si on a pas de link vers le module on peut pas aller dans src
// import sesatheques from 'sesatheque-client/src/sesatheques'
import sesatheques from 'sesatheque-client/dist/server/sesatheques'
import log from 'sesajstools/utils/log'
const {addSesatheque} = sesatheques
/**
* client supertest
......@@ -129,7 +129,7 @@ export default function boot () {
}
// on enregistre notre sesatheque de test
sesatheques.addSesatheque(config.application.baseId, config.application.baseUrl)
addSesatheque(config.application.baseId, config.application.baseUrl)
// on configure an-log d'après la conf
// les logs de l'appli sont dans le dossier configuré dans _private/test.js
// possibilité de modifier le logLevel là-bas
......
......@@ -34,11 +34,6 @@ const fs = require('fs')
const path = require('path')
/* eslint-env mocha */
// faut ajouter notre sesathèque coté client
const sesatheques = require('sesatheque-client/src/sesatheques')
const {baseId, baseUrl} = require('../app/server/config').application
sesatheques.addSesatheque(baseId, baseUrl)
// on peut mettre dans mocha.opts un
// --require babel-core/register
// mais il faut lui passer des options, on le fait ici et remplace la ligne précédente par
......@@ -47,6 +42,8 @@ sesatheques.addSesatheque(baseId, baseUrl)
// on veut exclure les node_modules sauf sesatheque-client/src
// faut retourner true pour que babel ignore le fichier
const babelIgnoreFilter = (file) => {
// en cas de pb "Unexpected token import", décommenter la ligne suivante pour trouver qui pose pb
// console.log(`babelize ${file} ?`)
if (/\/node_modules\//.test(file)) {
if (/\/app\/plugins/.test(file)) return false
return !/\/sesatheque-client\/src\//.test(file)
......
......@@ -25,7 +25,7 @@ sinon faudrait passer par https://webpack.github.io/docs/shimming-modules.html
// const fs = require('fs')
const path = require('path')
const autoprefixer = require('autoprefixer')
const CleanWebpackPlugin = require('clean-webpack-plugin')
const {CleanWebpackPlugin} = require('clean-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
// const webpack = require('webpack')
......@@ -224,15 +224,8 @@ const conf = {
loader: 'postcss-loader',
options: {
plugins: () => [
autoprefixer({
browsers: [
// attention à mettre la même liste que dans package.json:babel
'ie 11',
'last 3 iOS versions',
'last 3 Safari versions',
'last 3 Android versions'
]
})
// il prend sa liste de browsers dans package.json:browserslist
autoprefixer()
]
}
},
......@@ -243,7 +236,7 @@ const conf = {
},
plugins: [
// On vide le dossier de build
new CleanWebpackPlugin([buildDir]),
new CleanWebpackPlugin(),
// statique
new CopyWebpackPlugin([
// {from: './node_modules/sesaeditgraphe/dist'},
......@@ -315,47 +308,4 @@ if (isDevServer) {
}
}
// reste le pb des modules non résolus par webpack lorsque les modules ont été installés par pnpm
// Plutôt que d'ajouter les chemins ici (qui sont peut-être la source de plantages dans le bootstrap.js
// de webpack constatés sur des j3p avec des sections ancienexo_mep) on ajoute ces dépendances de
// @babel/polyfill (qu'il indique pourtant comme dépendances) comme étant aussi les notres
// "core-js": "^2.5.7"
// "regenerator-runtime": "^0.11.1"
// idem pour prop-types (qui est dans les dépendances des modules react et redux)
// "prop-types": "^15.6.2"
/*
try {
require.resolve('prop-types')
} catch (error) {
// on tente de le chercher dans les node_modules de react
const reactDir = path.dirname(require.resolve('react'))
const propTypesDir = path.resolve(reactDir, '..', '..', 'node_modules', 'prop-types')
if (fs.existsSync(path.resolve(propTypesDir, 'package.json'))) conf.resolve.alias['prop-types'] = propTypesDir
else throw Error(`require ne trouvera pas le module prop-types de react (ni node_modules/prop-types ni ${propTypesDir})`)
}
try {
require.resolve('core-js')
} catch (error) {
// on tente de le chercher dans les node_modules de @babel, un peu scabreux car @babel/polyfill résoud sur
// node_modules/.registry.npmjs.org/@babel/polyfill/7.0.0/node_modules/@babel/polyfill/lib/index.js
// mais core-js est dans
// node_modules/.registry.npmjs.org/@babel/polyfill/7.0.0/node_modules/core-js
const babelPolyfillDir = path.dirname(require.resolve('@babel/polyfill', '..'))
const coreJsDir = path.resolve(babelPolyfillDir, '..', '..', '..', 'core-js')
if (fs.existsSync(path.resolve(coreJsDir, 'package.json'))) conf.resolve.alias['core-js'] = coreJsDir
else throw Error(`require ne trouvera pas le module core-js de babel (ni node_modules/core-js ni ${coreJsDir})`)
}
try {
require.resolve('regenerator-runtime')
} catch (error) {
// idem core-js
const babelPolyfillDir = path.dirname(require.resolve('@babel/polyfill', '..'))
const regeneratorRuntimeDir = path.resolve(babelPolyfillDir, '..', '..', '..', 'regenerator-runtime')
if (fs.existsSync(path.resolve(regeneratorRuntimeDir, 'package.json'))) conf.resolve.alias['regenerator-runtime'] = regeneratorRuntimeDir
else throw Error(`require ne trouvera pas le module regenerator-runtime de babel (ni node_modules/regenerator-runtime ni ${regeneratorRuntimeDir})`)
}
/* */
module.exports = conf
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment