data-primals-engine 1.2.3 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +91 -0
- package/README.md +50 -22
- package/client/src/App.jsx +0 -5
- package/client/src/App.scss +6 -0
- package/client/src/ConditionBuilder.scss +34 -1
- package/client/src/ConditionBuilder2.jsx +179 -53
- package/client/src/ContentView.jsx +0 -3
- package/client/src/CronBuilder.jsx +0 -1
- package/client/src/CronPartBuilder.jsx +0 -2
- package/client/src/DashboardView.jsx +0 -5
- package/client/src/DataEditor.jsx +8 -10
- package/client/src/DataImporter.jsx +469 -0
- package/client/src/DataLayout.jsx +0 -1
- package/client/src/DataTable.jsx +2 -368
- package/client/src/DataTable.scss +18 -1
- package/client/src/Field.jsx +85 -48
- package/client/src/FlexBuilder.jsx +1 -1
- package/client/src/ModelCreator.jsx +29 -25
- package/client/src/ModelCreator.scss +13 -0
- package/client/src/ModelCreatorField.jsx +1 -5
- package/client/src/RTE.jsx +1 -6
- package/client/src/RTETrans.jsx +0 -2
- package/client/src/RelationField.jsx +1 -1
- package/client/src/RelationValue.jsx +1 -2
- package/client/src/TourSpotlight.jsx +0 -2
- package/client/src/filter.js +87 -0
- package/client/src/hooks/data.js +1 -3
- package/client/src/hooks/useTutorials.jsx +0 -1
- package/client/src/translations.js +60 -26
- package/package.json +4 -3
- package/server.js +2 -2
- package/src/data.js +8 -0
- package/src/email.js +2 -2
- package/src/engine.js +59 -20
- package/src/index.js +1 -1
- package/src/middlewares/middleware-mongodb.js +0 -1
- package/src/modules/assistant.js +1 -3
- package/src/modules/bucket.js +3 -4
- package/src/modules/data/data.core.js +17 -0
- package/src/modules/{data.js → data/data.js} +4595 -5991
- package/src/modules/data/data.routes.js +1637 -0
- package/src/modules/data/index.js +1 -0
- package/src/modules/file.js +1 -1
- package/src/modules/mongodb.js +0 -1
- package/src/modules/user.js +1 -1
- package/src/modules/workflow.js +38 -38
- package/src/packs.js +4 -1
- package/test/data.backup.integration.test.js +4 -5
- package/test/data.integration.test.js +2 -6
- package/test/events.test.js +1 -1
- package/test/file.test.js +1 -4
- package/test/import_export.integration.test.js +22 -15
- package/test/model.integration.test.js +8 -10
- package/test/user.test.js +2 -2
- package/test/vm.test.js +1 -1
- package/test/workflow.integration.test.js +17 -14
- package/test/workflow.robustness.test.js +15 -10
- package/src/modules/test +0 -147
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
.model-creator {
|
|
2
2
|
flex: 1;
|
|
3
|
+
width: 100%;
|
|
3
4
|
max-width: 720px;
|
|
4
5
|
form {
|
|
5
6
|
padding: 0;
|
|
@@ -31,6 +32,9 @@
|
|
|
31
32
|
border-radius: 8px;
|
|
32
33
|
padding: 16px 8px;
|
|
33
34
|
@media only screen and (min-width: 768px) {
|
|
35
|
+
padding: 1rem; // Plus d'espace intérieur
|
|
36
|
+
}
|
|
37
|
+
@media only screen and (min-width: 1024px) {
|
|
34
38
|
padding: 1.5rem; // Plus d'espace intérieur
|
|
35
39
|
}
|
|
36
40
|
margin-bottom: 1.5rem; // Plus d'espace entre les champs
|
|
@@ -129,8 +133,17 @@
|
|
|
129
133
|
|
|
130
134
|
.model-form-container {
|
|
131
135
|
flex: 1; // Le formulaire prend le reste de la place
|
|
136
|
+
> .field {
|
|
137
|
+
box-sizing: border-box;
|
|
138
|
+
margin-bottom: 28px;
|
|
139
|
+
}
|
|
132
140
|
}
|
|
133
141
|
|
|
142
|
+
.actions.right {
|
|
143
|
+
margin-right: 0;
|
|
144
|
+
margin-left: auto;
|
|
145
|
+
width: fit-content;
|
|
146
|
+
}
|
|
134
147
|
// Styles pour la zone de prompt de l'IA
|
|
135
148
|
.ai-prompt-container {
|
|
136
149
|
background-color: #f8f9fa;
|
|
@@ -43,7 +43,6 @@ const ModelCreatorField = ({model, handleRenameField, handleRemoveField, handleU
|
|
|
43
43
|
const [showMore, setMoreVisible] = useState(false);
|
|
44
44
|
const hint = (description) => t(description, '') && <div className="hint-icon"><FaCircleInfo data-tooltip-id={`tooltipHint`} data-tooltip-content={description} /></div>
|
|
45
45
|
|
|
46
|
-
const [focusedField, setFocusedField] = useState({});
|
|
47
46
|
return (
|
|
48
47
|
<div className="field-edit">
|
|
49
48
|
|
|
@@ -73,9 +72,7 @@ const ModelCreatorField = ({model, handleRenameField, handleRemoveField, handleU
|
|
|
73
72
|
newFields[index].name = e.target.value;
|
|
74
73
|
setFields(newFields);
|
|
75
74
|
}}
|
|
76
|
-
help={
|
|
77
|
-
onFocus={() => setFocusedField(field)}
|
|
78
|
-
onBlur={() => setFocusedField(null)}
|
|
75
|
+
help={t('modelcreator.name.hint')}
|
|
79
76
|
required
|
|
80
77
|
/>
|
|
81
78
|
{!(!modelLocked && isLocalUser(me) && field.locked) && !field._isNewField && (
|
|
@@ -206,7 +203,6 @@ const ModelCreatorField = ({model, handleRenameField, handleRemoveField, handleU
|
|
|
206
203
|
initialSteps={field.calculation?.steps || []}
|
|
207
204
|
onCalculationChange={(calc) => {
|
|
208
205
|
const newFields = [...fields];
|
|
209
|
-
console.log({calc});
|
|
210
206
|
newFields[index].calculation = calc; // 'index' est l'index du champ calculé dans 'fields'
|
|
211
207
|
setFields(newFields);
|
|
212
208
|
}}
|
package/client/src/RTE.jsx
CHANGED
|
@@ -28,7 +28,7 @@ import css from 'highlight.js/lib/languages/css'
|
|
|
28
28
|
import js from 'highlight.js/lib/languages/javascript'
|
|
29
29
|
import ts from 'highlight.js/lib/languages/typescript'
|
|
30
30
|
import html from 'highlight.js/lib/languages/xml'
|
|
31
|
-
import {escapeHtml
|
|
31
|
+
import {escapeHtml} from "../../src/core";
|
|
32
32
|
// create a lowlight instance
|
|
33
33
|
const lowlight = createLowlight(all)
|
|
34
34
|
|
|
@@ -293,11 +293,6 @@ export const ExtendedImage = Image.extend({
|
|
|
293
293
|
}
|
|
294
294
|
})
|
|
295
295
|
|
|
296
|
-
const CodeBlockComponent = ({children, ...rest}) => {
|
|
297
|
-
console.log(rest);
|
|
298
|
-
return children;
|
|
299
|
-
};
|
|
300
|
-
|
|
301
296
|
const extensions = [
|
|
302
297
|
HardBreak,
|
|
303
298
|
CodeBlock,
|
package/client/src/RTETrans.jsx
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
// Dans C:/Dev/hackersonline-engine/client/src/RTETrans.jsx (Nouveau fichier)
|
|
2
1
|
import React, { useState, useEffect } from 'react';
|
|
3
2
|
import { useTranslation } from 'react-i18next';
|
|
4
3
|
import { RTE } from './RTE.jsx';
|
|
5
|
-
import {useModelContext} from "./contexts/ModelContext.jsx";
|
|
6
4
|
import {useQuery} from "react-query";
|
|
7
5
|
import {getUserId} from "../../src/data.js";
|
|
8
6
|
import {useAuthContext} from "./contexts/AuthContext.jsx";
|
|
@@ -3,7 +3,7 @@ import { useQuery, useQueryClient } from 'react-query';
|
|
|
3
3
|
import { useModelContext } from './contexts/ModelContext.jsx';
|
|
4
4
|
import { TextField } from './Field.jsx';
|
|
5
5
|
import { useAuthContext } from './contexts/AuthContext.jsx';
|
|
6
|
-
import { getDataAsString
|
|
6
|
+
import { getDataAsString } from '../../src/data.js';
|
|
7
7
|
import { FaEdit, FaTrash } from 'react-icons/fa';
|
|
8
8
|
import Button from './Button.jsx';
|
|
9
9
|
import { mainFieldsTypes } from "../../src/constants.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { useQuery } from 'react-query';
|
|
3
3
|
import { useModelContext } from './contexts/ModelContext.jsx';
|
|
4
|
-
import {getDataAsString, getUserId} from '
|
|
4
|
+
import {getDataAsString, getUserId} from '../../src/data.js';
|
|
5
5
|
import { Trans, useTranslation } from 'react-i18next';
|
|
6
6
|
import {Dialog, DialogProvider} from './Dialog.jsx';
|
|
7
7
|
import {FaMagnifyingGlass} from "react-icons/fa6";
|
|
@@ -133,7 +133,6 @@ const RelationValue = ({ field, data, align }) => {
|
|
|
133
133
|
} catch (e) {
|
|
134
134
|
console.log(e);
|
|
135
135
|
}
|
|
136
|
-
//console.log(model, rel, displayValue)
|
|
137
136
|
const bgColor = // Returns a bright color in RGB
|
|
138
137
|
randomColor({
|
|
139
138
|
seed: rel._hash+rel._id,
|
|
@@ -61,8 +61,6 @@ function TourSpotlight({ name, steps = [], isOpen, onComplete, onClose, initialS
|
|
|
61
61
|
useEffect(() => {
|
|
62
62
|
if (!isOpen || !name) return;
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
console.log({currentStep})
|
|
66
64
|
if (!currentStep?.selector) {
|
|
67
65
|
console.warn(`[TourSpotlight] Élément cible non défini pour le tour ${name}`);
|
|
68
66
|
return;
|
package/client/src/filter.js
CHANGED
|
@@ -62,6 +62,93 @@ export const MONGO_CALC_OPERATORS = {
|
|
|
62
62
|
$minute: { label: 'minute', multi: false, isDate: true },
|
|
63
63
|
$second: { label: 'second', multi: false, isDate: true },
|
|
64
64
|
$millisecond: { label: 'ms', multi: false, isDate: true },
|
|
65
|
+
// Date operators
|
|
66
|
+
$dateAdd: {
|
|
67
|
+
label: 'Add to date',
|
|
68
|
+
description: 'Adds a duration to a date',
|
|
69
|
+
isDate: true,
|
|
70
|
+
specialStructure: true,
|
|
71
|
+
args: [
|
|
72
|
+
{ name: 'startDate', label: 'Start Date', type: 'date' },
|
|
73
|
+
{ name: 'unit', label: 'Unit', type: 'select', options: ['year', 'month', 'day', 'hour', 'minute', 'second'] },
|
|
74
|
+
{ name: 'amount', label: 'Amount', type: 'number' },
|
|
75
|
+
{ name: 'timezone', label: 'Timezone', type: 'text', optional: true }
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
$dateSubtract: {
|
|
79
|
+
label: 'Subtract from date',
|
|
80
|
+
description: 'Subtracts a duration from a date',
|
|
81
|
+
isDate: true,
|
|
82
|
+
specialStructure: true,
|
|
83
|
+
args: [
|
|
84
|
+
{ name: 'startDate', label: 'Start Date', type: 'date' },
|
|
85
|
+
{ name: 'unit', label: 'Unit', type: 'select', options: ['year', 'month', 'day', 'hour', 'minute', 'second'] },
|
|
86
|
+
{ name: 'amount', label: 'Amount', type: 'number' },
|
|
87
|
+
{ name: 'timezone', label: 'Timezone', type: 'text', optional: true }
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
$dateDiff: {
|
|
91
|
+
label: 'Date Difference',
|
|
92
|
+
description: 'Calculates the difference between two dates in specified units',
|
|
93
|
+
isDate: true,
|
|
94
|
+
specialStructure: true,
|
|
95
|
+
args: [
|
|
96
|
+
{
|
|
97
|
+
name: 'startDate',
|
|
98
|
+
label: 'Start Date',
|
|
99
|
+
type: 'date',
|
|
100
|
+
description: 'The starting date (inclusive)'
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'endDate',
|
|
104
|
+
label: 'End Date',
|
|
105
|
+
type: 'date',
|
|
106
|
+
description: 'The ending date (exclusive)'
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'unit',
|
|
110
|
+
label: 'Unit',
|
|
111
|
+
type: 'select',
|
|
112
|
+
options: ['year', 'month', 'week', 'day', 'hour', 'minute', 'second'],
|
|
113
|
+
description: 'The unit for the result'
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'timezone',
|
|
117
|
+
label: 'Timezone',
|
|
118
|
+
type: 'text',
|
|
119
|
+
optional: true,
|
|
120
|
+
description: 'The timezone (e.g. "Europe/Paris")'
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
$dateToString: {
|
|
125
|
+
label: 'Format date as string',
|
|
126
|
+
description: 'Formats a date as a string',
|
|
127
|
+
isDate: true,
|
|
128
|
+
specialStructure: true,
|
|
129
|
+
args: [
|
|
130
|
+
{
|
|
131
|
+
name: 'date',
|
|
132
|
+
label: 'Date',
|
|
133
|
+
type: 'date'
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
name: 'format',
|
|
137
|
+
label: 'Format',
|
|
138
|
+
optional: true,
|
|
139
|
+
type: 'text'
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: 'timezone',
|
|
143
|
+
label: 'Timezone',
|
|
144
|
+
type: 'text',
|
|
145
|
+
optional: true,
|
|
146
|
+
description: 'The timezone (e.g. "Europe/Paris")'
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
},
|
|
150
|
+
|
|
151
|
+
// Converters
|
|
65
152
|
$toBool: { label: 'toBool', multi: false, converter: true },
|
|
66
153
|
$toString: { label: 'toString', multi: false, converter: true },
|
|
67
154
|
$toInt: { label: 'toInt', multi: false, converter: true },
|
package/client/src/hooks/data.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import {useQuery} from "react-query";
|
|
2
|
-
import {getObjectHash} from "data-primals-engine/core";
|
|
3
2
|
import {useAuthContext} from "../contexts/AuthContext.jsx";
|
|
4
|
-
import {
|
|
3
|
+
import {getUserId} from "../../../src/data";
|
|
5
4
|
import {useTranslation} from "react-i18next";
|
|
6
5
|
import {useEffect, useState} from "react";
|
|
7
|
-
import {useUI} from "../contexts/UIContext.jsx";
|
|
8
6
|
import {useNotificationContext} from "../NotificationProvider.jsx";
|
|
9
7
|
|
|
10
8
|
export const useData = (model, filter, options) => {
|
|
@@ -138,7 +138,6 @@ export const useTutorials = () => {
|
|
|
138
138
|
const tutorial = tutorials.find(t => t._id === currentActiveState.id);
|
|
139
139
|
if (!tutorial) break;
|
|
140
140
|
|
|
141
|
-
console.log({currentActiveState})
|
|
142
141
|
const stageConfig = tutorial.stages.find(s => s.stage === currentActiveState.stage);
|
|
143
142
|
if (!stageConfig) {
|
|
144
143
|
console.log('[Tutoriels] Fin du tutoriel, attribution des récompenses.');
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
export const websiteTranslations = {
|
|
3
3
|
fr: {
|
|
4
4
|
translation: {
|
|
5
|
-
|
|
5
|
+
"dataimporter.excelPreview":"Aperçu des données Excel",
|
|
6
|
+
"dataimporter.previewNote": "Note: Ceci est un aperçu des premières lignes. Les cellules vides sont affichées comme \"(vide)\".",
|
|
7
|
+
"dataimporter.nullValue": "(vide)",
|
|
6
8
|
"cb.searchOperator": "Rechercher un opérateur...",
|
|
7
9
|
"cb.changeOperator": "Changer d'opérateur",
|
|
8
10
|
"cb.deleteBlock": "Supprimer ce bloc",
|
|
@@ -196,7 +198,7 @@ export const websiteTranslations = {
|
|
|
196
198
|
"btns.clear": "Effacer",
|
|
197
199
|
"prez2.5": "Un backup quotidien gratuit et sécurisé, ainsi que l'intégration aux services de stockage Amazon S3.",
|
|
198
200
|
"prez4.4": "Transférez vos données aux formats JSON / CSV",
|
|
199
|
-
"dataimporter.
|
|
201
|
+
"dataimporter.columnType":"Colonne {{0}}",
|
|
200
202
|
"dataimporter.field":"Champ du modèle",
|
|
201
203
|
"dataimporter.column":"Colonne n°{{0}}",
|
|
202
204
|
"dataimporter.addColumn": "Ajouter une colonne",
|
|
@@ -421,7 +423,7 @@ export const websiteTranslations = {
|
|
|
421
423
|
"btns.import": "Importer",
|
|
422
424
|
"dataimporter.title": "Importer des données dans {{model}}",
|
|
423
425
|
"dataimporter.hasCsvHeaders": "Le fichier CSV contient-il une ligne d'en-têtes ?",
|
|
424
|
-
"dataimporter.info": "Importez votre fichier JSON ou CSV contenant les données obligatoires de votre modèle. Vos données seront copiées sur votre base de donnée personnelle. Le taux de transfert est de {{constante}}",
|
|
426
|
+
"dataimporter.info": "Importez votre fichier Excel, JSON ou CSV contenant les données obligatoires de votre modèle. Vos données seront copiées sur votre base de donnée personnelle. Le taux de transfert est de {{constante}}",
|
|
425
427
|
"cgu.h1": "Conditions Générales d'Utilisation (CGU)",
|
|
426
428
|
"cgu.h1.1": "1. Introduction",
|
|
427
429
|
"cgu.h1.2": "2. Description du Service",
|
|
@@ -530,6 +532,9 @@ export const websiteTranslations = {
|
|
|
530
532
|
},
|
|
531
533
|
en: {
|
|
532
534
|
translation: {
|
|
535
|
+
"dataimporter.excelPreview": "Excel Data Preview",
|
|
536
|
+
"dataimporter.previewNote": "Note: This is a preview of the first few rows. Empty cells are displayed as \"(empty)\".",
|
|
537
|
+
"dataimporter.nullValue": "(empty)",
|
|
533
538
|
"cb.searchOperator": "Search for an operator...",
|
|
534
539
|
"cb.changeOperator": "Change operator",
|
|
535
540
|
"cb.deleteBlock": "Delete this block",
|
|
@@ -1159,7 +1164,7 @@ export const websiteTranslations = {
|
|
|
1159
1164
|
"api.validate.sameType": "Attribute '{{0}}' must be the same type as attribute '{{1}}' ({{2}}).",
|
|
1160
1165
|
"api.validate.fieldFunction": "Attribute '{{0}}' must be a function.",
|
|
1161
1166
|
"api.model.deleteFailed": "The data model has been successfully deleted.",
|
|
1162
|
-
"dataimporter.
|
|
1167
|
+
"dataimporter.columnType":"Column {{0}}",
|
|
1163
1168
|
"dataimporter.field": "Template field",
|
|
1164
1169
|
"dataimporter.column": "Column number {{0}}",
|
|
1165
1170
|
"dataimporter.addColumn": "Add column",
|
|
@@ -1934,6 +1939,9 @@ export const websiteTranslations = {
|
|
|
1934
1939
|
},
|
|
1935
1940
|
es: {
|
|
1936
1941
|
translation: {
|
|
1942
|
+
"dataimporter.excelPreview": "Vista previa de datos de Excel",
|
|
1943
|
+
"dataimporter.previewNote": "Nota: Esta es una vista previa de las primeras filas. Las celdas vacías se muestran como \"(vacío)\".",
|
|
1944
|
+
"dataimporter.nullValue": "(vacío)",
|
|
1937
1945
|
"cb.searchOperator": "Buscar un operador...",
|
|
1938
1946
|
"cb.changeOperator": "Cambiar operador",
|
|
1939
1947
|
"cb.deleteBlock": "Eliminar este bloque",
|
|
@@ -2566,7 +2574,7 @@ export const websiteTranslations = {
|
|
|
2566
2574
|
"api.validate.sameType": "El atributo '{{0}}' debe ser del mismo tipo que el atributo '{{1}}' ({{2}}).",
|
|
2567
2575
|
"api.validate.fieldFunction": "El atributo '{{0}}' debe ser una función.",
|
|
2568
2576
|
"api.model.deleteFailed": "El modelo de datos se ha eliminado correctamente.",
|
|
2569
|
-
"dataimporter.
|
|
2577
|
+
"dataimporter.columnType": "Columna {{0}}",
|
|
2570
2578
|
"dataimporter.field": "Campo de plantilla",
|
|
2571
2579
|
"dataimporter.column": "Número de columna {{0}}",
|
|
2572
2580
|
"dataimporter.addColumn": "Añadir columna",
|
|
@@ -2886,7 +2894,7 @@ export const websiteTranslations = {
|
|
|
2886
2894
|
"btns.import": "Importar",
|
|
2887
2895
|
"dataimporter.title": "Importar datos a {{model}}",
|
|
2888
2896
|
"dataimporter.hasCsvHeaders": "¿El archivo CSV contiene una fila de encabezado?",
|
|
2889
|
-
"dataimporter.info": "
|
|
2897
|
+
"dataimporter.info": "Importe su archivo Excel, JSON o CSV con los datos necesarios para su plantilla. Sus datos se copiarán a su base de datos personal. La velocidad de transferencia es {{constante}}",
|
|
2890
2898
|
"links.demo": "Iniciar la demostración",
|
|
2891
2899
|
"filterstringfield.placeholder.regex": 'Expresión regular',
|
|
2892
2900
|
"cgu.h1": "Condiciones Generales de Uso (CGU)",
|
|
@@ -3343,6 +3351,9 @@ export const websiteTranslations = {
|
|
|
3343
3351
|
},
|
|
3344
3352
|
pt: {
|
|
3345
3353
|
translation: {
|
|
3354
|
+
"dataimporter.excelPreview": "Visualização de Dados do Excel",
|
|
3355
|
+
"dataimporter.previewNote": "Observação: Esta é uma visualização das primeiras linhas. Células vazias são exibidas como \"(vazio)\".",
|
|
3356
|
+
"dataimporter.nullValue": "(vazio)",
|
|
3346
3357
|
"cb.searchOperator": "Procurar um operador...",
|
|
3347
3358
|
"cb.changeOperator": "Alterar operador",
|
|
3348
3359
|
"cb.deleteBlock": "Apagar este bloco",
|
|
@@ -3975,10 +3986,9 @@ export const websiteTranslations = {
|
|
|
3975
3986
|
"api.validate.sameType": "O atributo '{{0}}' deve ser do mesmo tipo que o atributo '{{1}}' ({{2}}).",
|
|
3976
3987
|
"api.validate.fieldFunction": "O atributo '{{0}}' deve ser uma função.",
|
|
3977
3988
|
"api.model.deleteFailed": "O modelo de dados foi eliminado com sucesso.",
|
|
3978
|
-
"dataimporter.csvColumn": "Número da coluna CSV",
|
|
3979
3989
|
"dataimporter.field": "Campo de modelo",
|
|
3980
|
-
"dataimporter.
|
|
3981
|
-
"dataimporter.
|
|
3990
|
+
"dataimporter.column": "Número da coluna {{0}}",
|
|
3991
|
+
"dataimporter.addColumn": "Adicionar coluna",
|
|
3982
3992
|
"backup.prez": "Todos os dias, a partir das 00:00, é realizado um backup pelos serviços Primals para cada utilizador. Aqui pode definir a localização do seu bucket Amazon S3 que será utilizado para armazenar os seus backups ou deixá-lo em branco para utilizar o armazenamento padrão.",
|
|
3983
3993
|
"backup.s3config.title": "Configuração de Armazenamento S3",
|
|
3984
3994
|
"backup.s3config.bucketName": "Nome do Bucket S3",
|
|
@@ -4297,7 +4307,7 @@ export const websiteTranslations = {
|
|
|
4297
4307
|
"btns.import": "Importar",
|
|
4298
4308
|
"dataimporter.title": "Importar dados para {{model}}",
|
|
4299
4309
|
"dataimporter.hasCsvHeaders": "O ficheiro CSV contém uma linha de cabeçalho?",
|
|
4300
|
-
"dataimporter.info": "Importe
|
|
4310
|
+
"dataimporter.info": "Importe seu arquivo Excel, JSON ou CSV contendo os dados necessários para o seu modelo. Seus dados serão copiados para seu banco de dados pessoal. A taxa de transferência é {{constant}}",
|
|
4301
4311
|
"links.demo": "Iniciar a demonstração",
|
|
4302
4312
|
"filterstringfield.placeholder.regex": 'Expressão regular',
|
|
4303
4313
|
"cgu.h1": "Termos e Condições Gerais de Uso (TCGU)",
|
|
@@ -4748,6 +4758,9 @@ export const websiteTranslations = {
|
|
|
4748
4758
|
},
|
|
4749
4759
|
de: {
|
|
4750
4760
|
translation: {
|
|
4761
|
+
"dataimporter.excelPreview": "Excel-Datenvorschau",
|
|
4762
|
+
"dataimporter.previewNote": "Hinweis: Dies ist eine Vorschau der ersten Zeilen. Leere Zellen werden als \"(leer)\" angezeigt.",
|
|
4763
|
+
"dataimporter.nullValue": "(leer)",
|
|
4751
4764
|
"cb.searchOperator": "Suche nach einem Operator...", "cb.changeOperator": "Operator ändern", "cb.deleteBlock": "Diesen Block löschen", "cb.cancel": "Abbrechen", "cb.enterValue": "Wert eingeben", "cb.convertToExpression": "In Ausdruck konvertieren", "cb.deleteArgument": "Dieses Argument löschen", "cb.condition": "Bedingung", "cb.addArgument": "Argument hinzufügen", "cb.selectRelationField": "Beziehungsfeld auswählen", "cb.enterThisField": "$$this.field eingeben", "cb.enterValueOrField": "Wert oder $field eingeben", "cb.relationTooltip": "Beziehung mit {{relation}}",
|
|
4752
4765
|
|
|
4753
4766
|
"collapse": "Reduzieren",
|
|
@@ -5359,7 +5372,7 @@ export const websiteTranslations = {
|
|
|
5359
5372
|
"api.validate.sameType": "Attribut '{{0}}' muss vom gleichen Typ sein wie Attribut '{{1}}' ({{2}}).",
|
|
5360
5373
|
"api.validate.fieldFunction": "Attribut '{{0}}' muss eine Funktion sein.",
|
|
5361
5374
|
"api.model.deleteFailed": "Das Datenmodell wurde erfolgreich gelöscht.",
|
|
5362
|
-
"dataimporter.
|
|
5375
|
+
"dataimporter.columnType":"Spalte {{0}}",
|
|
5363
5376
|
"dataimporter.field": "Vorlagenfeld",
|
|
5364
5377
|
"dataimporter.column": "Spaltennummer {{0}}",
|
|
5365
5378
|
"dataimporter.addColumn": "Spalte hinzufügen",
|
|
@@ -5680,7 +5693,7 @@ export const websiteTranslations = {
|
|
|
5680
5693
|
"btns.import": "Importieren",
|
|
5681
5694
|
"dataimporter.title": "Daten in {{model}} importieren",
|
|
5682
5695
|
"dataimporter.hasCsvHeaders": "Enthält die CSV-Datei eine Kopfzeile?",
|
|
5683
|
-
"dataimporter.info": "Importieren Sie Ihre JSON- oder CSV-Datei mit den benötigten Daten für
|
|
5696
|
+
"dataimporter.info": "Importieren Sie Ihre Excel-, JSON- oder CSV-Datei mit den benötigten Daten für Ihre Vorlage. Ihre Daten werden in Ihre persönliche Datenbank kopiert. Die Übertragungsrate beträgt {{constante}}",
|
|
5684
5697
|
"links.demo": "Demo starten",
|
|
5685
5698
|
"filterstringfield.placeholder.regex": 'Regulärer Ausdruck',
|
|
5686
5699
|
"cgu.h1": "Nutzungsbedingungen (TOU)",
|
|
@@ -6136,6 +6149,9 @@ export const websiteTranslations = {
|
|
|
6136
6149
|
},
|
|
6137
6150
|
it: {
|
|
6138
6151
|
translation: {
|
|
6152
|
+
"dataimporter.excelPreview": "Anteprima dati Excel",
|
|
6153
|
+
"dataimporter.previewNote": "Nota: questa è un'anteprima delle prime righe. Le celle vuote vengono visualizzate come \"(vuoto)\".",
|
|
6154
|
+
"dataimporter.nullValue": "(vuoto)",
|
|
6139
6155
|
"cb.searchOperator": "Cerca un operatore...",
|
|
6140
6156
|
"cb.changeOperator": "Cambia operatore",
|
|
6141
6157
|
"cb.deleteBlock": "Elimina questo blocco",
|
|
@@ -6768,7 +6784,7 @@ export const websiteTranslations = {
|
|
|
6768
6784
|
"api.validate.sameType": "L'attributo '{{0}}' deve essere dello stesso tipo dell'attributo '{{1}}' ({{2}}).",
|
|
6769
6785
|
"api.validate.fieldFunction": "L'attributo '{{0}}' deve essere una funzione.",
|
|
6770
6786
|
"api.model.deleteFailed": "Il modello di dati è stato eliminato correttamente.",
|
|
6771
|
-
"dataimporter.
|
|
6787
|
+
"dataimporter.columnType":"Colonna {{0}}",
|
|
6772
6788
|
"dataimporter.field": "Campo modello",
|
|
6773
6789
|
"dataimporter.column": "Numero colonna {{0}}",
|
|
6774
6790
|
"dataimporter.addColumn": "Aggiungi colonna",
|
|
@@ -7086,7 +7102,7 @@ export const websiteTranslations = {
|
|
|
7086
7102
|
"btns.import": "Importa",
|
|
7087
7103
|
"dataimporter.title": "Importa dati in {{model}}",
|
|
7088
7104
|
"dataimporter.hasCsvHeaders": "Il file CSV contiene una riga di intestazione?",
|
|
7089
|
-
"dataimporter.info": "Importa il tuo file JSON o CSV contenente i dati
|
|
7105
|
+
"dataimporter.info": "Importa il tuo file Excel, JSON o CSV contenente i dati richiesti per il tuo modello. I tuoi dati verranno copiati nel tuo database personale. La velocità di trasferimento è {{constante}}",
|
|
7090
7106
|
"links.demo": "Avvia la demo",
|
|
7091
7107
|
"filterstringfield.placeholder.regex": 'Espressione regolare',
|
|
7092
7108
|
"cgu.h1": "Termini di Utilizzo (TOU)",
|
|
@@ -7537,6 +7553,9 @@ export const websiteTranslations = {
|
|
|
7537
7553
|
},
|
|
7538
7554
|
cs: {
|
|
7539
7555
|
translation: {
|
|
7556
|
+
"dataimporter.excelPreview": "Náhled dat v Excelu",
|
|
7557
|
+
"dataimporter.previewNote": "Poznámka: Toto je náhled prvních několika řádků. Prázdné buňky se zobrazují jako \"(prázdné)\".",
|
|
7558
|
+
"dataimporter.nullValue": "(prázdné)",
|
|
7540
7559
|
"cb.searchOperator": "Hledat operátor...",
|
|
7541
7560
|
"cb.changeOperator": "Změnit operátor",
|
|
7542
7561
|
"cb.deleteBlock": "Smazat tento blok",
|
|
@@ -8168,7 +8187,7 @@ export const websiteTranslations = {
|
|
|
8168
8187
|
"api.validate.sameType": "Atribut '{{0}}' musí být stejného typu jako atribut '{{1}}' ({{2}}).",
|
|
8169
8188
|
"api.validate.fieldFunction": "Atribut '{{0}}' musí být funkce.",
|
|
8170
8189
|
"api.model.deleteFailed": "Datový model byl úspěšně smazán.",
|
|
8171
|
-
"dataimporter.
|
|
8190
|
+
"dataimporter.columnType":"Sloupec {{0}}",
|
|
8172
8191
|
"dataimporter.field": "Pole šablony",
|
|
8173
8192
|
"dataimporter.column": "Číslo sloupce {{0}}",
|
|
8174
8193
|
"dataimporter.addColumn": "Přidat sloupec",
|
|
@@ -8482,7 +8501,7 @@ export const websiteTranslations = {
|
|
|
8482
8501
|
"btns.import": "Import",
|
|
8483
8502
|
"dataimporter.title": "Importovat data do {{model}}",
|
|
8484
8503
|
"dataimporter.hasCsvHeaders": "Obsahuje soubor CSV řádek záhlaví?",
|
|
8485
|
-
"dataimporter.info": "Importujte soubor JSON nebo CSV obsahující požadovaná data pro
|
|
8504
|
+
"dataimporter.info": "Importujte soubor Excel, JSON nebo CSV obsahující požadovaná data pro vaši šablonu. Vaše data budou zkopírována do vaší osobní databáze. Přenosová rychlost je {{constante}}",
|
|
8486
8505
|
"links.demo": "Spustit demo",
|
|
8487
8506
|
"filterstringfield.placeholder.regex": 'Regulární výraz',
|
|
8488
8507
|
"cgu.h1": "Podmínky použití (TOU)",
|
|
@@ -8933,6 +8952,9 @@ export const websiteTranslations = {
|
|
|
8933
8952
|
},
|
|
8934
8953
|
ru: {
|
|
8935
8954
|
translation: {
|
|
8955
|
+
"dataimporter.excelPreview": "Предварительный просмотр данных Excel",
|
|
8956
|
+
"dataimporter.previewNote": "Примечание: Это предварительный просмотр первых нескольких строк. Пустые ячейки отображаются как \"(пусто)\".",
|
|
8957
|
+
"dataimporter.nullValue": "(пусто)",
|
|
8936
8958
|
"cb.searchOperator": "Найти оператор...",
|
|
8937
8959
|
"cb.changeOperator": "Изменить оператор",
|
|
8938
8960
|
"cb.deleteBlock": "Удалить этот блок",
|
|
@@ -9565,7 +9587,7 @@ export const websiteTranslations = {
|
|
|
9565
9587
|
"api.validate.sameType": "Атрибут '{{0}}' должен быть того же типа, что и атрибут '{{1}}' ({{2}}).",
|
|
9566
9588
|
"api.validate.fieldFunction": "Атрибут '{{0}}' должен быть функцией.",
|
|
9567
9589
|
"api.model.deleteFailed": "Модель данных успешно удалена.",
|
|
9568
|
-
"dataimporter.
|
|
9590
|
+
"dataimporter.columnType":"Столбец {{0}}",
|
|
9569
9591
|
"dataimporter.field": "Поле шаблона",
|
|
9570
9592
|
"dataimporter.column": "Номер столбца {{0}}",
|
|
9571
9593
|
"dataimporter.addColumn": "Добавить столбец",
|
|
@@ -9886,7 +9908,7 @@ export const websiteTranslations = {
|
|
|
9886
9908
|
"btns.import": "Импорт",
|
|
9887
9909
|
"dataimporter.title": "Импортировать данные в {{model}}",
|
|
9888
9910
|
"dataimporter.hasCsvHeaders": "Содержит ли CSV-файл строку заголовка?",
|
|
9889
|
-
"dataimporter.info": "Импортируйте файл JSON или CSV, содержащий необходимые данные для
|
|
9911
|
+
"dataimporter.info": "Импортируйте файл Excel, JSON или CSV, содержащий необходимые данные для вашего шаблона. Ваши данные будут скопированы в вашу персональную базу данных. Скорость передачи данных составляет {{constante}}",
|
|
9890
9912
|
"links.demo": "Запустить демо",
|
|
9891
9913
|
"filterstringfield.placeholder.regex": 'Регулярное выражение',
|
|
9892
9914
|
"cgu.h1": "Условия использования (TOU)",
|
|
@@ -10339,6 +10361,9 @@ export const websiteTranslations = {
|
|
|
10339
10361
|
},
|
|
10340
10362
|
ar: {
|
|
10341
10363
|
translation: {
|
|
10364
|
+
"dataimporter.excelPreview": "معاينة بيانات إكسل",
|
|
10365
|
+
"dataimporter.previewNote": "ملاحظة: هذه معاينة للصفوف القليلة الأولى. تُعرض الخلايا الفارغة كـ \"(فارغة)\".",
|
|
10366
|
+
"dataimporter.nullValue": "(فارغة)",
|
|
10342
10367
|
"cb.searchOperator": "ابحث عن مُعامل...",
|
|
10343
10368
|
"cb.changeOperator": "غيّر المُعامل",
|
|
10344
10369
|
"cb.deleteBlock": "حذف هذه الكتلة",
|
|
@@ -10992,7 +11017,7 @@ export const websiteTranslations = {
|
|
|
10992
11017
|
"api.validate.sameType": "يجب أن تكون السمة '{{0}}' من نفس نوع السمة '{{1}}' ({{2}}).",
|
|
10993
11018
|
"api.validate.fieldFunction": "يجب أن تكون السمة '{{0}}' دالة.",
|
|
10994
11019
|
"api.model.deleteFailed": "تم حذف نموذج البيانات بنجاح.",
|
|
10995
|
-
"dataimporter.
|
|
11020
|
+
"dataimporter.columnType":"العمود {{0}}",
|
|
10996
11021
|
"dataimporter.field": "حقل القالب",
|
|
10997
11022
|
"dataimporter.column": "رقم العمود {{0}}",
|
|
10998
11023
|
"dataimporter.addColumn": "إضافة عمود",
|
|
@@ -11310,7 +11335,7 @@ export const websiteTranslations = {
|
|
|
11310
11335
|
"btns.import": "استيراد",
|
|
11311
11336
|
"dataimporter.title": "استيراد البيانات إلى {{model}}",
|
|
11312
11337
|
"dataimporter.hasCsvHeaders": "هل يحتوي ملف CSV على صف رأس؟",
|
|
11313
|
-
"dataimporter.info": "استورد ملف JSON أو CSV الذي يحتوي على البيانات المطلوبة
|
|
11338
|
+
"dataimporter.info": "استورد ملف Excel أو JSON أو CSV الذي يحتوي على البيانات المطلوبة لقالبك. سيتم نسخ بياناتك إلى قاعدة بياناتك الشخصية. معدل النقل ثابت ({{constante}}}).",
|
|
11314
11339
|
"links.demo": "ابدأ العرض التوضيحي",
|
|
11315
11340
|
"filterstringfield.placeholder.regex": 'تعبير عادي',
|
|
11316
11341
|
"cgu.h1": "الشروط العامة للاستخدام (GTU)",
|
|
@@ -11762,6 +11787,9 @@ export const websiteTranslations = {
|
|
|
11762
11787
|
},
|
|
11763
11788
|
sv: {
|
|
11764
11789
|
translation: {
|
|
11790
|
+
"dataimporter.excelPreview": "Förhandsgranskning av Excel-data",
|
|
11791
|
+
"dataimporter.previewNote": "Obs! Detta är en förhandsgranskning av de första raderna. Tomma celler visas som \"(tomma)\"",
|
|
11792
|
+
"dataimporter.nullValue": "(tomma)",
|
|
11765
11793
|
"cb.searchOperator": "Sök efter en operator...",
|
|
11766
11794
|
"cb.changeOperator": "Ändra operator",
|
|
11767
11795
|
"cb.deleteBlock": "Ta bort detta block",
|
|
@@ -12399,7 +12427,7 @@ export const websiteTranslations = {
|
|
|
12399
12427
|
"api.validate.sameType": "Attributet '{{0}}' måste vara av samma typ som attributet '{{1}}' ({{2}}).",
|
|
12400
12428
|
"api.validate.fieldFunction": "Attributet '{{0}}' måste vara en funktion.",
|
|
12401
12429
|
"api.model.deleteFailed": "Datamodellen har raderats.",
|
|
12402
|
-
"dataimporter.
|
|
12430
|
+
"dataimporter.kolumntyp": "Kolumn {{0}}",
|
|
12403
12431
|
"dataimporter.field": "Mallfält",
|
|
12404
12432
|
"dataimporter.column": "Kolumnnummer {{0}}",
|
|
12405
12433
|
"dataimporter.addColumn": "Lägg till kolumn",
|
|
@@ -12710,7 +12738,7 @@ export const websiteTranslations = {
|
|
|
12710
12738
|
"btns.import": "Importera",
|
|
12711
12739
|
"dataimporter.title": "Importera data till {{model}}",
|
|
12712
12740
|
"dataimporter.hasCsvHeaders": "Innehåller CSV-filen en rubrikrad?",
|
|
12713
|
-
"dataimporter.info": "Importera din JSON- eller CSV-fil som innehåller den data som krävs för din
|
|
12741
|
+
"dataimporter.info": "Importera din Excel-, JSON- eller CSV-fil som innehåller den data som krävs för din mall. Dina data kommer att kopieras till din personliga databas. Överföringshastigheten är {{constant}}",
|
|
12714
12742
|
"links.demo": "Starta demon",
|
|
12715
12743
|
"filterstringfield.placeholder.regex": 'Reguljärt uttryck',
|
|
12716
12744
|
"cgu.h1": "Användarvillkor (Användarvillkor)",
|
|
@@ -13158,6 +13186,9 @@ export const websiteTranslations = {
|
|
|
13158
13186
|
},
|
|
13159
13187
|
el: {
|
|
13160
13188
|
translation: {
|
|
13189
|
+
"dataimporter.excelPreview": "Προεπισκόπηση δεδομένων Excel",
|
|
13190
|
+
"dataimporter.previewNote": "Σημείωση: Αυτή είναι μια προεπισκόπηση των πρώτων γραμμών. Τα κενά κελιά εμφανίζονται ως \"(κενό)\".",
|
|
13191
|
+
"dataimporter.nullValue": "(κενό)",
|
|
13161
13192
|
"cb.searchOperator": "Αναζήτηση τελεστή...",
|
|
13162
13193
|
"cb.changeOperator": "Αλλαγή τελεστή",
|
|
13163
13194
|
"cb.deleteBlock": "Διαγραφή αυτού του μπλοκ",
|
|
@@ -13801,7 +13832,7 @@ export const websiteTranslations = {
|
|
|
13801
13832
|
"api.validate.sameType": "Το χαρακτηριστικό '{{0}}' πρέπει να είναι του ίδιου τύπου με το χαρακτηριστικό '{{1}}' ({{2}}).",
|
|
13802
13833
|
"api.validate.fieldFunction": "Το χαρακτηριστικό '{{0}}' πρέπει να είναι συνάρτηση.",
|
|
13803
13834
|
"api.model.deleteFailed": "Το μοντέλο δεδομένων διαγράφηκε με επιτυχία.",
|
|
13804
|
-
"dataimporter.
|
|
13835
|
+
"dataimporter.columnType":"Στήλη {{0}}",
|
|
13805
13836
|
"dataimporter.field": "Πεδίο προτύπου",
|
|
13806
13837
|
"dataimporter.column": "Αριθμός στήλης {{0}}",
|
|
13807
13838
|
"dataimporter.addColumn": "Προσθήκη στήλης",
|
|
@@ -14111,7 +14142,7 @@ export const websiteTranslations = {
|
|
|
14111
14142
|
"btns.import": "Εισαγωγή",
|
|
14112
14143
|
"dataimporter.title": "Εισαγωγή δεδομένων στο {{model}}",
|
|
14113
14144
|
"dataimporter.hasCsvHeaders": "Περιέχει το αρχείο CSV μια γραμμή κεφαλίδας;",
|
|
14114
|
-
"dataimporter.info": "Εισαγάγετε το αρχείο JSON που περιέχει τα απαιτούμενα δεδομένα για το
|
|
14145
|
+
"dataimporter.info": "Εισαγάγετε το αρχείο Excel, JSON ή CSV που περιέχει τα απαιτούμενα δεδομένα για το πρότυπό σας. Τα δεδομένα σας θα αντιγραφούν στην προσωπική σας βάση δεδομένων. Ο ρυθμός μεταφοράς είναι {{constante}}",
|
|
14115
14146
|
"links.demo": "Έναρξη της επίδειξης",
|
|
14116
14147
|
"filterstringfield.placeholder.regex": "Κανονική έκφραση",
|
|
14117
14148
|
"cgu.h1": "Γενικοί όροι χρήσης (GTU)",
|
|
@@ -14561,6 +14592,9 @@ export const websiteTranslations = {
|
|
|
14561
14592
|
},
|
|
14562
14593
|
fa: {
|
|
14563
14594
|
"translation": {
|
|
14595
|
+
"dataimporter.excelPreview": "پیشنمایش دادههای اکسل",
|
|
14596
|
+
"dataimporter.previewNote": "توجه: این پیشنمایشی از چند ردیف اول است. سلولهای خالی به صورت \"(empty)\" نمایش داده میشوند.",
|
|
14597
|
+
"dataimporter.nullValue": "(empty)",
|
|
14564
14598
|
"links.demo": "شروع نسخهٔ نمایشی",
|
|
14565
14599
|
"cb.searchOperator": "جستجوی یک عملگر...",
|
|
14566
14600
|
"cb.changeOperator": "تغییر عملگر",
|
|
@@ -15182,7 +15216,7 @@ export const websiteTranslations = {
|
|
|
15182
15216
|
"api.model.deleteFailed": "مدل داده با موفقیت حذف شد.",
|
|
15183
15217
|
"prez2.5": "پشتیبانگیری روزانه رایگان و ایمن، و همچنین ادغام با خدمات ذخیرهسازی Amazon S3.",
|
|
15184
15218
|
"prez4.4": "دادههای خود را در قالبهای JSON / CSV انتقال دهید",
|
|
15185
|
-
"dataimporter.
|
|
15219
|
+
"dataimporter.columnType":"ستون {{0}}",
|
|
15186
15220
|
"dataimporter.field":"فیلد مدل",
|
|
15187
15221
|
"dataimporter.column":"ستون شماره {{0}}",
|
|
15188
15222
|
"dataimporter.addColumn": "افزودن ستون",
|
|
@@ -15476,7 +15510,7 @@ export const websiteTranslations = {
|
|
|
15476
15510
|
"btns.import": "وارد کردن",
|
|
15477
15511
|
"dataimporter.title": "وارد کردن داده به {{model}}",
|
|
15478
15512
|
"dataimporter.hasCsvHeaders": "آیا فایل CSV شامل ردیف عنوان است؟",
|
|
15479
|
-
"dataimporter.info": "فایل JSON یا CSV
|
|
15513
|
+
"dataimporter.info": "فایل اکسل، JSON یا CSV حاوی دادههای مورد نیاز برای قالب خود را وارد کنید. دادههای شما در پایگاه داده شخصی شما کپی میشوند. سرعت انتقال {{constante}} است.",
|
|
15480
15514
|
"cgu.h1": "شرایط عمومی استفاده (CGU)",
|
|
15481
15515
|
"cgu.h1.1": "1. مقدمه",
|
|
15482
15516
|
"cgu.h1.2": "2. توضیح خدمات",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "data-primals-engine",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.5",
|
|
4
4
|
"description": "data-primals-engine is a package responsible from handling large amount of data using MongoDB in a practical and performant way. It can also get workflow models working (for automation), and fully supports internationalisation. It also has integrated AI assistant.",
|
|
5
5
|
"main": "src/engine.js",
|
|
6
6
|
"type": "module",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"exports": {
|
|
41
41
|
".": "./src/index.js",
|
|
42
|
-
"./modules/*": "./src/modules
|
|
42
|
+
"./modules/*": "./src/modules/*/index.js",
|
|
43
43
|
"./client": "./client/index.js",
|
|
44
44
|
"./*": "./src/*.js"
|
|
45
45
|
},
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@langchain/core": "^0.3.66",
|
|
53
|
+
"@langchain/deepseek": "^0.1.0",
|
|
53
54
|
"@langchain/google-genai": "^0.2.16",
|
|
54
55
|
"@langchain/openai": "^0.6.3",
|
|
55
56
|
"archiver": "^7.0.1",
|
|
@@ -62,7 +63,6 @@
|
|
|
62
63
|
"cookie-parser": "^1.4.7",
|
|
63
64
|
"cronstrue": "^3.2.0",
|
|
64
65
|
"csv-parse": "^6.1.0",
|
|
65
|
-
"data-primals-engine": "^1.0.14",
|
|
66
66
|
"date-fns": "^4.1.0",
|
|
67
67
|
"express-csrf-double-submit-cookie": "^2.0.0",
|
|
68
68
|
"express-formidable": "^1.2.0",
|
|
@@ -83,6 +83,7 @@
|
|
|
83
83
|
"randomcolor": "^0.6.2",
|
|
84
84
|
"react-i18next": "^15.6.1",
|
|
85
85
|
"react-markdown": "^10.1.0",
|
|
86
|
+
"read-excel-file": "^5.8.8",
|
|
86
87
|
"request-ip": "^3.3.0",
|
|
87
88
|
"sanitize-html": "^2.17.0",
|
|
88
89
|
"sirv": "^3.0.1",
|