Commit 59fc9bc5 authored by Daniel Caillibaud's avatar Daniel Caillibaud

Merge branch 'modifPolyfill' into 'master'

Modif polyfill

See merge request !193
parents 9e9bfbcc 5a30d98a
// 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'
......
import sjt from 'sesajstools'
import {editable, listes, listesOrdonnees, typePerso} from '../../server/ressource/config'
const { hasProp } = sjt
/**
* Les listes sous forme de tableaux ordonnés avec label & value
......@@ -8,7 +10,7 @@ import {editable, listes, listesOrdonnees, typePerso} from '../../server/ressour
const formattedLists = {}
Object.entries(listes).forEach(([key, values]) => {
if (listesOrdonnees.hasOwnProperty(key)) {
if (hasProp(listesOrdonnees, key)) {
formattedLists[key] = listesOrdonnees[key].map(n => ({
label: values[n],
value: n
......
import {isEmpty} from 'lodash'
import sjt from 'sesajstools'
const { hasProp } = sjt
const requiredText = 'Ce champ est obligatoire'
......@@ -14,7 +16,7 @@ const validate = ({
})
jsonFields.forEach(key => {
if (values.hasOwnProperty(key)) {
if (hasProp(values, key)) {
const value = values[key]
if (typeof value === 'string') {
try {
......
......@@ -39,9 +39,9 @@
require('client-react/styles/display.scss')
const { hasProp, isFunction, isString, isUrlAbsolute, stringify } = require('sesajstools')
const dom = require('sesajstools/dom')
const log = require('sesajstools/utils/log')
const sjt = require('sesajstools')
const sjtUrl = require('sesajstools/http/url')
const xhr = require('sesajstools/http/xhr')
const {addSesatheques, getBaseUrl} = require('sesatheque-client/src/sesatheques')
......@@ -91,9 +91,9 @@ function addResultatCallback (ressource, options) {
// pour envoyer les résultats, on regarde si on nous fourni une url ou une fct ou un nom de message
// on prend en callback par ordre de priorité resultatCallback, urlResultatCallback, resultatMessageAction+
if (options.resultatCallback && sjt.isFunction(options.resultatCallback)) {
if (options.resultatCallback && isFunction(options.resultatCallback)) {
resultatListener = options.resultatCallback
} else if (options.urlResultatCallback && sjt.isUrlAbsolute(options.urlResultatCallback)) {
} else if (options.urlResultatCallback && isUrlAbsolute(options.urlResultatCallback)) {
// callback ajax
resultatListener = (resultat) => {
const url = options.urlResultatCallback
......@@ -111,7 +111,7 @@ function addResultatCallback (ressource, options) {
})
}
}
} else if (options && options.resultatMessageAction && sjt.isString(options.resultatMessageAction)) {
} else if (options && options.resultatMessageAction && isString(options.resultatMessageAction)) {
// callback message
resultatListener = (resultat) => sendResultatMessage(options, resultat)
} else if (isDebugMode) {
......@@ -156,7 +156,7 @@ function feedback (retour, divFeedback) {
page.addError(retour.error)
} else if ((retour && (retour.ok && retour.ok === true)) || (retour.success && retour.success === true)) {
feedbackOk(divFeedback)
} else if (retour && (retour.hasOwnProperty('ok') || retour.hasOwnProperty('success'))) {
} else if (retour && (hasProp(retour, 'ok') || hasProp(retour, 'success'))) {
feedbackKo(divFeedback)
page.addError("Une erreur est survenue dans l'enregistrement du résultat")
} else {
......@@ -187,7 +187,7 @@ function feedbackKo (divFeedback) {
*/
function getResultat (result, ressource, options) {
// on reçoit parfois des refs circulaires, faut nettoyer… ça clone au passage
result = JSON.parse(sjt.stringify(result))
result = JSON.parse(stringify(result))
const resultat = new Resultat(result)
// pour l'envoi au unload on ajoute ça
if (options.urlResultatCallback && result.deferSync) resultat.deferSync = result.deferSync
......@@ -231,7 +231,7 @@ function load (ressource, options, next) {
// On vire le titre si on nous le demande via les options ou un param dans l'url
if (
(options.hasOwnProperty('showTitle') && !options.showTitle) ||
(hasProp(options, 'showTitle') && !options.showTitle) ||
/\?.*showTitle=0/.test(wd.URL) ||
/\/apercevoir\//.test(wd.URL) ||
/\?(.+&)?layout=iframe/.test(wd.URL)
......
......@@ -29,7 +29,7 @@
* pour une explication en français)
*/
'use strict'
const { hasProp } = require('sesajstools')
var dom = require('sesajstools/dom')
var log = require('sesajstools/utils/log')
......@@ -220,7 +220,7 @@ try {
else if (config === 'full') config = fullConfig
// on ajoute ces boutons
for (var btn in config) {
if (config.hasOwnProperty(btn) && config[btn]) {
if (hasProp(config, btn) && config[btn]) {
addButton(mqButtons, btn)
}
}
......
......@@ -30,17 +30,7 @@
*/
'use strict'
// 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')
// les polyfill sont ajoutés par webpack (cf version 1.6.1 du 2019-08-26 pour l'inclusion directement ici)
const dom = require('sesajstools/dom')
const log = require('sesajstools/utils/log')
const sjtUrl = require('sesajstools/http/url')
......
......@@ -33,7 +33,7 @@
/* eslint-disable camelcase */
var dom = require('sesajstools/dom')
var sjt = require('sesajstools')
const { hasProp, isArray, isString } = require('sesajstools')
var log = require('sesajstools/utils/log')
var page = require('../../page/index')
......@@ -46,7 +46,7 @@ var swf = require('../../display/swf')
* @param params le contenu de ressource.parametres.xml, qui est du json !!
*/
function getXmlParam (params) {
if (!sjt.isArray(params.series)) {
if (!isArray(params.series)) {
throw new Error('Aucune série à traiter')
}
......@@ -296,7 +296,7 @@ function getOperations (serie) {
// determination du résultat de l'opération
// - attention, dans le cas d'un quotient, c'est la partie entière du quotient qui constitue le résultat
if (!nombres_generes[0].hasOwnProperty('valeur')) {
if (!hasProp(nombres_generes[0], 'valeur')) {
throw new Error("Le premier nombre généré n'a pas de valeur")
}
......@@ -417,7 +417,7 @@ function xmlGenerate (o) {
* @returns {number}
*/
function nettoie_nombre (nb) {
if (sjt.isString(nb)) return Number(nb.replace(/,/g, '.').replace(/\s/g, ''))
if (isString(nb)) return Number(nb.replace(/,/g, '.').replace(/\s/g, ''))
else return Number(nb)
}
......@@ -491,7 +491,7 @@ function genere_position_liste_liee (nombre) {
* @return {Integer} Le nombre généré dans
*/
function genere_intervalle (nombre) {
if (!nombre.hasOwnProperty('debut') || !nombre.hasOwnProperty('fin') || nombre.fin < nombre.debut) {
if (!hasProp(nombre, 'debut') || !hasProp(nombre, 'fin') || nombre.fin < nombre.debut) {
throw new Error("Paramètres d'intervalle incorrects")
}
return rand(nombre.debut, nombre.fin)
......
......@@ -30,6 +30,7 @@
*/
'use strict'
const { hasProp } = require('sesajstools')
/**
* Un retour d'une api http qui enregistre des Resultat (surtout pour documenter le format utilisé dans sesatheque|sesalab)
......@@ -43,7 +44,7 @@ function Feedback (values) {
* @type {boolean}
*/
this.ok = !!values.ok
if (values.hasOwnProperty('success')) {
if (hasProp(values, 'success')) {
/**
* Alternative à la propriété ok
* @type {boolean}
......
......@@ -30,9 +30,10 @@
*/
'use strict'
const _ = require('lodash')
const { hasProp } = require('sesajstools')
var FormChoice = require('./FormChoice')
var _ = require('lodash')
const FormChoice = require('./FormChoice')
/**
* Un champ de FormGroup
......@@ -179,7 +180,7 @@ FormField.prototype.addChoice = function addChoice (choice) {
if (this.id && !choice.id) choice.id = this.id + i
// et on ajoute les selected s'il y en a (comparaison avec cast en string)
if (
choice.hasOwnProperty('value') &&
hasProp(choice, 'value') &&
this.selectedValues &&
this.selectedValues.length &&
_.includes(this.selectedValues, String(choice.value))
......
/**
* This file is part of Sesatheque.
* Copyright 2014-2015, Association Sésamath
*
* Sesatheque is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License version 3
* as published by the Free Software Foundation.
*
* Sesatheque is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with SesaReactComponent (LICENCE.txt).
* @see http://www.gnu.org/licenses/agpl.txt
*
*
* Ce fichier fait partie de SesaReactComponent, créée par l'association Sésamath.
*
* Sesatheque est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant
* les termes de la GNU Affero General Public License version 3 telle que publiée par la
* Free Software Foundation.
* Sesatheque est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE,
* sans même la garantie tacite de QUALITÉ MARCHANDE ou d'ADÉQUATION à UN BUT PARTICULIER.
* Consultez la GNU Affero General Public License pour plus de détails.
* Vous devez avoir reçu une copie de la GNU General Public License en même temps que SesaQcm
* (cf LICENCE.txt et http://vvlibri.org/fr/Analyse/gnu-affero-general-public-license-v3-analyse
* pour une explication en français)
*/
'use strict'
// On ajoutait les @babel/polyfill dans app/client-react/index.js et app/client/page/index.js
// 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
import 'core-js/stable'
// lui est nécessaire si on utilise des générateurs (pas le cas) ou async/await (y'en a dans le plugin url)
import 'regenerator-runtime/runtime'
......@@ -36,6 +36,7 @@
const bodyParser = require('body-parser')
const express = require('express')
const moment = require('moment')
const { hasProp } = require('sesajstools')
const tools = require('./lib/tools')
const config = require('./config')
......@@ -48,7 +49,7 @@ const staticTtl = 3600 * 24
* Ajoute notre bodyParser après le middleware cookie
* @param rail
*/
function afterCookie (rail) {
function addBodyParsers (rail) {
if (config.$rail.noBodyParser) {
const dateRegExp = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z/
const bodyParserSettings = config.$rail.bodyParser || {
......@@ -57,7 +58,7 @@ function afterCookie (rail) {
if (!bodyParserSettings.limit) bodyParserSettings.limit = '10mb'
// ça c'est juste pour urlencoded, à priori on devrait pouvoir avoir des tableaux avec false
// mais ça plante par ex sur un post de form avec `categories[2]: true`
if (!bodyParserSettings.hasOwnProperty('extended')) bodyParserSettings.extended = true
if (!hasProp(bodyParserSettings, 'extended')) bodyParserSettings.extended = true
const jsonMiddleware = express.json(bodyParserSettings)
const urlencodedMiddleware = express.urlencoded(bodyParserSettings)
const textMiddleware = bodyParser.text(bodyParserSettings)
......@@ -69,13 +70,13 @@ function afterCookie (rail) {
} else {
log.error('Il manque le settings $rail.noBodyParser pour mettre nos propres parsers')
}
} // afterCookie
} // addBodyParsers
/**
* Ajoute sur le rail les requetes en console (en dev), CORS, expires, access.log et perf.log
* @param {Object} rail le rail express
*/
function afterSession (rail) {
function addCorsAndLog (rail) {
// ajout d'express en global sur lassi (utilisé dans les tests pour le passer à supertest)
lassi.express = rail
/**
......@@ -200,12 +201,12 @@ function afterSession (rail) {
next()
})
}
} // afterSession
} // addCorsAndLog
/**
* Hooks qui seront ajoutés sur le rail par app/server/index.js
*/
module.exports = {
afterCookie,
afterSession
addBodyParsers,
addCorsAndLog
}
......@@ -45,7 +45,7 @@ const sjt = require('sesajstools')
const {merge} = require('sesajstools/utils/object')
const log = require('sesajstools/utils/log')
const {afterCookie, afterSession} = require('./addMiddlewares')
const {addBodyParsers, addCorsAndLog} = require('./addMiddlewares')
const beforeTransport = require('./beforeTransport')
const boot = require('./boot')
const config = require('./config')
......@@ -91,8 +91,8 @@ function beforeBootsrap (lassi, mainComponent, allComponents) {
*/
lassi.on('afterRailUse', function (rail, name) {
// on peut ajouter les arguments , settings, middleware puis log(middleware) pour voir le code de chaque middleware
if (name === 'cookie') afterCookie(rail)
else if (name === 'session') afterSession(rail)
if (name === 'cookie') addBodyParsers(rail)
else if (name === 'session') addCorsAndLog(rail)
})
// le listener beforeTransport
......
......@@ -30,6 +30,7 @@
*/
'use strict'
const { hasProp } = require('sesajstools')
/**
* Une série de compteurs, chaque clé étant un compteur pouvant être incrémenté, décrémenté ou supprimé
......@@ -48,7 +49,7 @@ function CounterMulti () {
* @param key
*/
CounterMulti.prototype.inc = function (key) {
if (this.hasOwnProperty(key)) this[key]++
if (hasProp(this, key)) this[key]++
else {
this[key] = 1
this.length++
......@@ -60,7 +61,7 @@ CounterMulti.prototype.inc = function (key) {
* @param key
*/
CounterMulti.prototype.dec = function (key) {
if (this.hasOwnProperty(key)) this[key]--
if (hasProp(this, key)) this[key]--
else {
this[key] = -1
this.length++
......@@ -72,7 +73,7 @@ CounterMulti.prototype.dec = function (key) {
* @param key
*/
CounterMulti.prototype.delete = function (key) {
if (this.hasOwnProperty(key)) delete this[key]
if (hasProp(this, key)) delete this[key]
this.length--
}
......@@ -83,7 +84,7 @@ CounterMulti.prototype.delete = function (key) {
CounterMulti.prototype.total = function () {
var total = 0
for (var key in this) {
if (this.hasOwnProperty(key) && key !== 'length') total += this[key]
if (hasProp(this, key) && key !== 'length') total += this[key]
}
return total
}
......
......@@ -32,6 +32,7 @@
'use strict'
const moment = require('moment')
const util = require('util')
const { hasProp } = require('sesajstools')
/**
* Vérifie qu'une valeur est entière dans l'intervalle donné et recadre sinon (avec un message dans le log d'erreur)
......@@ -193,7 +194,7 @@ function linkQs (path, texte, args) {
if (args) {
var paires = []
for (var p in args) {
if (args.hasOwnProperty(p)) paires.push(p + '=' + encodeURIComponent(args[p]))
if (hasProp(args, p)) paires.push(p + '=' + encodeURIComponent(args[p]))
}
if (paires.length) path += '?' + paires.join('&')
}
......
......@@ -35,6 +35,8 @@
// (et on préfère son comportement sur les params multiples)
const querystring = require('querystring')
const {getNormalizedGrabOptions} = require('./normalize')
const { hasProp } = require('sesajstools')
const {baseUrl} = require('./config')
// fonctions privées
......@@ -51,7 +53,7 @@ const {baseUrl} = require('./config')
*/
function errorHandler (errorMessage, isStrict, value = '') {
if (typeof isStrict === 'object') {
isStrict = isStrict.hasOwnProperty('strict') ? !!isStrict.strict : true
isStrict = hasProp(isStrict, 'strict') ? !!isStrict.strict : true
}
if (isStrict) throw new Error(errorMessage)
console.error(new Error(errorMessage))
......@@ -185,7 +187,7 @@ function split (url) {
*/
function update (url, args, options) {
if (typeof options !== 'object') options = {}
const isStrict = options.hasOwnProperty('strict') ? options.strict : true
const isStrict = hasProp(options, 'strict') ? options.strict : true
// checks
if (!url) return errorHandler('Pas d’url fournie', isStrict)
if (typeof url !== 'string') return errorHandler('Url fournie invalide', isStrict)
......
......@@ -32,6 +32,7 @@
'use strict'
const flow = require('an-flow')
const { hasProp } = require('sesajstools')
/**
* Répond sur certaines requetes OPTIONS
......@@ -112,10 +113,10 @@ module.exports = function (component) {
// on peut passer aux autres propriétés du groupe
}).seq(function (groupe) {
// les booléens
if (data.hasOwnProperty('ouvert')) groupe.ouvert = Boolean(data.ouvert)
if (data.hasOwnProperty('public')) groupe.public = Boolean(data.public)
if (hasProp(data, 'ouvert')) groupe.ouvert = Boolean(data.ouvert)
if (hasProp(data, 'public')) groupe.public = Boolean(data.public)
// description
if (data.hasOwnProperty('description')) groupe.description = data.description
if (hasProp(data, 'description')) groupe.description = data.description
// et les gestionnaires à ajouter éventuellement, on shunt si les deux champs sont vides
// (si seul l'un des deux est vide ça tentera le chargement et renverra une erreur)
if (!data.newGestionnairePid && !data.newGestionnaireNom) return this(null, groupe)
......
......@@ -32,6 +32,7 @@
'use strict'
const dns = require('dns')
const ip = require('ip')
const { hasProp } = require('sesajstools')
const sjtObj = require('sesajstools/utils/object')
const config = require('../config')
......@@ -458,7 +459,7 @@ module.exports = function (component) {
*/
function getTokenValue (context, token) {
let value
if (context && token && context.session.tokens && context.session.tokens.hasOwnProperty(token)) {
if (context && token && context.session.tokens && hasProp(context.session.tokens, token)) {
value = context.session.tokens[token]
delete context.session.tokens[token]
}
......
......@@ -34,6 +34,7 @@
const _ = require('lodash')
const flow = require('an-flow')
const {merge} = require('sesajstools/utils/object')
const {hasProp} = require('sesajstools')
const {userError} = require('../../utils')
const {looksLikePid} = require('../../utils/validators')
......@@ -279,8 +280,9 @@ module.exports = function (component) {
function updateOrCreate (personne, next) {
function checkUpdate (personne, personneNew, next) {
let needUpdate = false
// eslint-disable-next-line no-unused-vars
for (const prop in personneNew) {
if (personneNew.hasOwnProperty(prop) && !_.isEqual(personne[prop], personneNew[prop])) {
if (hasProp(personneNew, prop) && !_.isEqual(personne[prop], personneNew[prop])) {
needUpdate = true
// pour groupesMembre on fusionne, histoire de pas écraser les groupes locaux
// par des groupes donnés par l'authentification
......
......@@ -30,10 +30,11 @@
*/
'use strict'
const {hasProp} = require('sesajstools')
const Ressource = require('../../constructors/Ressource')
const ressourceSchema = require('./EntityRessource.schema')
const properties = {...ressourceSchema.properties, dateArchivage: {instanceof: 'Date'}}
const required = [...ressourceSchema.required, 'dateArchivage']
const archiveSchema = {...ressourceSchema, properties, required}
......@@ -50,7 +51,7 @@ module.exports = function (component) {
*/
EntityArchive.construct(function (data) {
if (!data) throw Error('constructeur d’archive appelé sans ressource ni archive')
if (!data.rid || !data.hasOwnProperty('version')) throw Error('rid et version sont obligatoires pour archiver une ressource')
if (!data.rid || !hasProp(data, 'version')) throw Error('rid et version sont obligatoires pour archiver une ressource')
const ressource = new Ressource(data)
Object.assign(this, ressource)
......
......@@ -31,7 +31,7 @@
'use strict'
const uuid = require('an-uuid')
const {exists, getRidComponents} = require('sesatheque-client/dist/server/sesatheques')
const {stringify} = require('sesajstools')
const {hasProp, stringify} = require('sesajstools')
const htmlToText = require('html-to-text')
const tools = require('../lib/tools')
......@@ -66,7 +66,7 @@ module.exports = function (component) {
// mais après on ne peut plus ajouter de propriété dans afterStore, pas trouvé pourquoi…
// => TypeError: Cannot assign to read only property 'rid' of object '#<Entity>'
if (!this.hasOwnProperty('rid')) {
if (!hasProp(this, 'rid')) {
Object.defineProperty(this, 'rid', {
writable: true,
enumerable: true,
......@@ -252,7 +252,7 @@ module.exports = function (component) {
// on génère la clé de lecture si elle manque, on la vire si elle n'est plus nécessaire
if (this.publie && !this.restriction) {
// public
if (this.hasOwnProperty('cle')) delete this.cle
if (hasProp(this, 'cle')) delete this.cle
} else {
// prive
if (!this.cle) this.cle = uuid()
......
......@@ -31,8 +31,10 @@
'use strict'
const {hasProp} = require('sesajstools')
const {getBaseUrl, getComponents} = require('sesatheque-client/dist/server/sesatheques')
const appConfig = require('../config')
const myBaseId = appConfig.application.baseId
const routes = appConfig.components.ressource.constantes.routes
......@@ -84,7 +86,7 @@ module.exports = function (component) {
*/
$routes.getAbs = function (action, ressource, context) {
let route
if (routes.hasOwnProperty(action)) {
if (hasProp(routes, action)) {
route = '/'
let id
let isPublic = true
......
......@@ -31,6 +31,7 @@
'use strict'
const flow = require('an-flow')
const {hasProp} = require('sesajstools')
const {getRidComponents} = require('sesatheque-client/dist/server/sesatheques')
const config = require('../../config')
......@@ -164,20 +165,20 @@ module.exports = {
*/
function cleanItem (item) {
let hasChanged = false
if (item.hasOwnProperty('restriction')) {
if (hasProp(item, 'restriction')) {
if (item.restriction) {
log.dataError(`item restreint dans l’arbre ${currentArbre}`, item)
hasChanged = true
item.restriction = 0
}
} else if (item.hasOwnProperty('public')) {
} else if (hasProp(item, 'public')) {
if (!item.public) {
log.dataError(`item privé dans l’arbre ${currentArbre}`, item)
hasChanged = true
item.public = true
}
}
if (item.hasOwnProperty('publie') && !item.publie) {
if (hasProp(item, 'publie') && !item.publie) {
log.dataError(`item privé dans l’arbre ${currentArbre}`, item)
hasChanged = true
item.publie = true
......
......@@ -32,6 +32,7 @@
const flow = require('an-flow')
const uuid = require('an-uuid')
const {hasProp} = require('sesajstools')
const updateNum = __filename.substring(__dirname.length + 1, __filename.length - 3)
const updateLog = require('an-log')('update' + updateNum)
......@@ -184,7 +185,7 @@ module.exports = {
}).seqEach(function (ressource) {
let needStore = false
const cleanExo = (exo) => {
if (exo.hasOwnProperty('$droits')) {
if (hasProp(exo, '$droits')) {
delete exo.$droits
needStore = true
}
......
......@@ -101,6 +101,7 @@
"an-uuid": "git://src.sesamath.net/an-uuid#1.0.6",
"body-parser": "^1.18.2",
"connected-react-router": "5.0.1",
"core-js": "^3.2.1",
"elementtree": "^0.1.7",
"express": "^4.16.2",
"glob": "^7.1.4",
......@@ -130,7 +131,7 @@
"redux": "4.0.1",
"redux-form": "7.4.2",
"redux-thunk": "2.3.0",
"regenerator-runtime": "^0.13.2",
"regenerator-runtime": "^0.13.3",
"request": "^2.88.0",
"roboto-fontface": "^0.10.0",
"sesajstools": "git+https://framagit.org/Sesamath/sesajstools.git",
......@@ -157,7 +158,6 @@
"chai-as-promised": "^7.1.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",
......@@ -203,7 +203,7 @@
"@sesatheque-plugins/j3p": "git+https://framagit.org/Sesamath/sesatheque-plugin-j3p.git#1.1.4",
"@sesatheque-plugins/mathgraph": "git+https://framagit.org/Sesamath/sesatheque-plugin-mathgraph.git#1.0.9",
"@sesatheque-plugins/qcm": "git+https://framagit.org/Sesamath/sesatheque-plugin-qcm.git#1.2.6",
"@sesatheque-plugins/url": "git+https://framagit.org/Sesamath/sesatheque-plugin-url.git#1.0.8"
"@sesatheque-plugins/url": "git+https://framagit.org/Sesamath/sesatheque-plugin-url.git#1.0.9"
},
"eslintConfig": {
"parser": "babel-eslint",
......
......@@ -10,6 +10,7 @@ dependencies:
an-uuid: src.sesamath.net/an-uuid/ed6af31c2d6f526d1108c0a7cfebfdcb9868ff29
body-parser: 1.19.0
connected-react-router: 5.0.1_670e3f5990800090610dd2dbdc34c8ec
core-js: 3.2.1
elementtree: 0.1.7
express: 4.17.1
glob: 7.1.4
......@@ -39,7 +40,6 @@ dependencies:
redux: 4.0.1
redux-form: 7.4.2_f114d899b0c931a12c8e6145cdc60cd3
redux-thunk: 2.3.0
regenerator-runtime: 0.13.3
request: 2.88.0
roboto-fontface: 0.10.0
sesajstools: framagit.org/Sesamath/sesajstools/ac6283ba39b63def7e316a1f1c813915656c401e
......@@ -65,7 +65,6 @@ devDependencies:
chai-as-promised: 7.1.1_chai@4.2.0
clean-webpack-plugin: 3.0.0_webpack@4.39.2
copy-webpack-plugin: 5.0.4_webpack@4.39.2
core-js: 3.2.1
css-loader: 3.2.0_webpack@4.39.2
enzyme: 3.10.0
enzyme-adapter-react-16: 1.14.0_b543d0f872e4d79795800943b57d0a25
......@@ -92,6 +91,7 @@ devDependencies:
postcss-loader: 3.0.0
pre-push: 0.1.1
react-styleguidist: 8.0.6_d76646be7bb7f914b0aa800ed08843c6
regenerator-runtime: 0.13.3
sass-loader: 7.3.1_webpack@4.39.2
sinon: 7.4.1
sinon-chai: 3.3.0_chai@4.2.0+sinon@7.4.1
......@@ -2903,7 +2903,6 @@ packages:
resolution:
integrity: sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
/core-js/3.2.1:
dev: true
requiresBuild: true
resolution:
integrity: sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==
......@@ -11377,7 +11376,7 @@ specifiers:
redux: 4.0.1
redux-form: 7.4.2
redux-thunk: 2.3.0
regenerator-runtime: ^0.13.2
regenerator-runtime: ^0.13.3
request: ^2.88.0
roboto-fontface: ^0.10.0
sass-loader: ^7.1.0
......
......@@ -42,7 +42,7 @@ if (nb === 0) print('Aucun doublon de clé')
// il faut aller remplir tous les rid vides…
// on doit récupérer notre baseId, mais on a pas de require… on va regarder en base
let cursor = db.EntityRessource.find()
const cursor = db.EntityRessource.find()
let baseId
while (cursor.hasNext() && !baseId) {
const r = cursor.next()
......
......@@ -7,7 +7,7 @@ db.EntityRessource.find({type: 'ec2'}).sort({dateCreation: 1}).forEach(r => {
else if (data.parametres.swf) msg = `swf ${data.parametres.swf}`
else msg = 'none ' + JSON.stringify(data.parametres)
} else {
msg = `noParameters`
msg = 'noParameters'