@runnerpro/backend 1.6.33 → 1.7.2

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/lib/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sendWorkoutToWatch = exports.getDefaultWorkoutImage = exports.generateShareMap = exports.reduceSizeImage = exports.getLetter = exports.getNumberByLetter = exports.appendSheet = exports.writeSheet = exports.findCellByValue = exports.readSheet = exports.NOTION_DATABASES_ID = exports.notionEditPage = exports.notionAddPage = exports.notionGetDatabase = exports.notionGetUsers = exports.getCountNotificaciones = exports.chatExposed = exports.chatApi = exports.chat = exports.getExerciseTranslatedDescription = exports.useTranslation = exports.LANGUAGES = exports.translate = exports.CHANNEL_SLACK = exports.notifySlack = exports.fetchIA = exports.err = exports.sendMail = exports.pool = exports.toPgArray = exports.batchQuery = exports.query = exports.sleep = exports.sendNotification = void 0;
3
+ exports.getPlanificacionPrueba7dias = exports.sendWorkoutToWatch = exports.getDefaultWorkoutImage = exports.generateShareMap = exports.reduceSizeImage = exports.getLetter = exports.getNumberByLetter = exports.appendSheet = exports.writeSheet = exports.findCellByValue = exports.readSheet = exports.NOTION_DATABASES_ID = exports.notionEditPage = exports.notionAddPage = exports.notionGetDatabase = exports.notionGetUsers = exports.getCountNotificaciones = exports.chatExposed = exports.chatApi = exports.chat = exports.getExerciseTranslatedDescription = exports.useTranslation = exports.LANGUAGES = exports.translate = exports.CHANNEL_SLACK = exports.notifySlack = exports.fetchIA = exports.err = exports.sendMail = exports.pool = exports.toPgArray = exports.batchQuery = exports.query = exports.sleep = exports.sendNotification = void 0;
4
4
  const sendNotification_1 = require("./sendNotification");
5
5
  Object.defineProperty(exports, "sendNotification", { enumerable: true, get: function () { return sendNotification_1.sendNotification; } });
6
6
  const sleep_1 = require("./sleep");
@@ -50,3 +50,5 @@ const getDefaultWorkoutImage_1 = require("./image/getDefaultWorkoutImage");
50
50
  Object.defineProperty(exports, "getDefaultWorkoutImage", { enumerable: true, get: function () { return getDefaultWorkoutImage_1.getDefaultWorkoutImage; } });
51
51
  const sendToWatch_1 = require("./workout/sendToWatch");
52
52
  Object.defineProperty(exports, "sendWorkoutToWatch", { enumerable: true, get: function () { return sendToWatch_1.sendWorkoutToWatch; } });
53
+ const planificacionPrueba7dias_1 = require("./workout/planificacionPrueba7dias");
54
+ Object.defineProperty(exports, "getPlanificacionPrueba7dias", { enumerable: true, get: function () { return planificacionPrueba7dias_1.getPlanificacionPrueba7dias; } });
@@ -13,5 +13,6 @@ import { reduceSizeImage } from './image/reduceSizeImage';
13
13
  import { generateShareMap } from './image/generateShareMap';
14
14
  import { getDefaultWorkoutImage } from './image/getDefaultWorkoutImage';
15
15
  import { sendWorkoutToWatch } from './workout/sendToWatch';
16
- export { sendNotification, sleep, query, batchQuery, toPgArray, pool, sendMail, err, fetchIA, notifySlack, CHANNEL_SLACK, translate, LANGUAGES, useTranslation, getExerciseTranslatedDescription, chat, chatApi, chatExposed, getCountNotificaciones, notionGetUsers, notionGetDatabase, notionAddPage, notionEditPage, NOTION_DATABASES_ID, readSheet, findCellByValue, writeSheet, appendSheet, getNumberByLetter, getLetter, reduceSizeImage, generateShareMap, getDefaultWorkoutImage, sendWorkoutToWatch, };
16
+ import { getPlanificacionPrueba7dias } from './workout/planificacionPrueba7dias';
17
+ export { sendNotification, sleep, query, batchQuery, toPgArray, pool, sendMail, err, fetchIA, notifySlack, CHANNEL_SLACK, translate, LANGUAGES, useTranslation, getExerciseTranslatedDescription, chat, chatApi, chatExposed, getCountNotificaciones, notionGetUsers, notionGetDatabase, notionAddPage, notionEditPage, NOTION_DATABASES_ID, readSheet, findCellByValue, writeSheet, appendSheet, getNumberByLetter, getLetter, reduceSizeImage, generateShareMap, getDefaultWorkoutImage, sendWorkoutToWatch, getPlanificacionPrueba7dias, };
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AACvG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACjH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAClH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EACL,gBAAgB,EAChB,KAAK,EACL,KAAK,EACL,UAAU,EACV,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,OAAO,EACP,WAAW,EACX,aAAa,EACb,SAAS,EACT,SAAS,EACT,cAAc,EACd,gCAAgC,EAChC,IAAI,EACJ,OAAO,EACP,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,GACnB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AACvG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACjH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAClH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF,OAAO,EACL,gBAAgB,EAChB,KAAK,EACL,KAAK,EACL,UAAU,EACV,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,OAAO,EACP,WAAW,EACX,aAAa,EACb,SAAS,EACT,SAAS,EACT,cAAc,EACd,gCAAgC,EAChC,IAAI,EACJ,OAAO,EACP,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,2BAA2B,GAC5B,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const getPlanificacionPrueba7dias: (c: any, options?: any) => any[];
2
+ export { getPlanificacionPrueba7dias };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/workout/planificacionPrueba7dias/index.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,2BAA2B,qBAAgB,GAAG,UAgDnD,CAAC;AA4IF,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPlanificacionPrueba7dias = void 0;
4
+ const { getPlanificacionPrueba7diasEmpezarCorrer, changeGoalDistanceByNivelActualEmpezarCorrer, } = require('./empezarCorrer/getPlanificacionPrueba7diasEmpezarCorrer');
5
+ const { getPlanificacionPrueba7dias5k, changeGoalDistanceByNivelActual5k } = require('./5k/getPlanificacionPrueba7dias5k');
6
+ const { getPlanificacionPrueba7dias10k, changeGoalDistanceByNivelActual10k } = require('./10k/getPlanificacionPrueba7dias10k');
7
+ const { getPlanificacionPrueba7dias21k, changeGoalDistanceByNivelActual21k } = require('./21k/getPlanificacionPrueba7dias21k');
8
+ const { getPlanificacionPrueba7dias42k, changeGoalDistanceByNivelActual42k } = require('./42k/getPlanificacionPrueba7dias42k');
9
+ const { sendMail } = require('../../sendMail');
10
+ const moment = require('moment');
11
+ const { WORKOUT_TYPE } = require('@runnerpro/common');
12
+ const getPlanificacionPrueba7dias = (c, options = {}) => {
13
+ const { startDate } = options;
14
+ const diasDisponibles = [!!c.sunday, !!c.monday, !!c.tuesday, !!c.wednesday, !!c.thursday, !!c.friday, !!c.saturday];
15
+ const nDiasDisponibles = diasDisponibles.filter((d) => d).length;
16
+ let workouts = [];
17
+ changeGoalDistanceByNivelActual(c);
18
+ workouts = getWorkoutsByGoalDistance(c);
19
+ if (!workouts || workouts.length === 0) {
20
+ workouts = [];
21
+ sendMail({
22
+ to: ['david.jimenez@runnerpro.app'],
23
+ subject: 'Planificación de prueba 7 días - No hay entrenamientos',
24
+ body: JSON.stringify(c),
25
+ });
26
+ }
27
+ if ((Number(c.nivelEntrenamientoFuerza) === 1 || Number(c.incluirEntrenamientoFuerza) === 1) && nDiasDisponibles >= 4) {
28
+ workouts.splice(1, 0, addWorkoutFuerza());
29
+ }
30
+ if (nDiasDisponibles > workouts.length) {
31
+ const nDiasExtra = nDiasDisponibles - workouts.length;
32
+ for (let i = 0; i < nDiasExtra; i++) {
33
+ if (diasDisponibles[0] && diasDisponibles[1])
34
+ diasDisponibles[1] = false;
35
+ else if (diasDisponibles[1] && diasDisponibles[2])
36
+ diasDisponibles[2] = false;
37
+ else if (diasDisponibles[2] && diasDisponibles[3])
38
+ diasDisponibles[3] = false;
39
+ else if (diasDisponibles[3] && diasDisponibles[4])
40
+ diasDisponibles[4] = false;
41
+ else if (diasDisponibles[4] && diasDisponibles[5])
42
+ diasDisponibles[5] = false;
43
+ else if (diasDisponibles[5] && diasDisponibles[6])
44
+ diasDisponibles[6] = false;
45
+ else if (diasDisponibles[6] && diasDisponibles[0])
46
+ diasDisponibles[0] = false;
47
+ }
48
+ }
49
+ const planificacion = [];
50
+ // Add workouts to planificacion array based on diasDisponibles and taking into account today day of week and adding to workout the date
51
+ const today = startDate ? moment(startDate) : moment();
52
+ const todayDayOfWeek = today.day();
53
+ let todayIndex = todayDayOfWeek;
54
+ for (let i = 0; i < diasDisponibles.length; i++) {
55
+ if (diasDisponibles[todayIndex]) {
56
+ const workout = workouts.shift();
57
+ const date = moment(today).add(i, 'days').format('YYYY-MM-DD');
58
+ planificacion.push(Object.assign(Object.assign({}, workout), { date }));
59
+ }
60
+ todayIndex = (todayIndex + 1) % 7;
61
+ }
62
+ return planificacion;
63
+ };
64
+ exports.getPlanificacionPrueba7dias = getPlanificacionPrueba7dias;
65
+ const changeGoalDistanceByNivelActual = (c) => {
66
+ if (['Comenzar a correr', 'Correr después de lesión'].includes(c.objetivoPrincipal) || [-2].includes(Number(c.goalDistance)))
67
+ changeGoalDistanceByNivelActualEmpezarCorrer(c);
68
+ else if (Number(c.goalDistance) > 1 && Number(c.goalDistance) < 8000)
69
+ changeGoalDistanceByNivelActual5k(c);
70
+ else if ((Number(c.goalDistance) >= 8000 && Number(c.goalDistance) < 16000) ||
71
+ Number(c.goalDistance) === -1 ||
72
+ ['Entrenamiento general', 'Entrenamiento funcional'].includes(c.objetivoPrincipal) ||
73
+ c.goalDistanceTriatlon)
74
+ changeGoalDistanceByNivelActual10k(c);
75
+ else if (Number(c.goalDistance) >= 16000 && Number(c.goalDistance) < 30000)
76
+ changeGoalDistanceByNivelActual21k(c);
77
+ else if (Number(c.goalDistance) >= 30000)
78
+ changeGoalDistanceByNivelActual42k(c);
79
+ };
80
+ const getWorkoutsByGoalDistance = (c) => {
81
+ if (['Comenzar a correr', 'Correr después de lesión'].includes(c.objetivoPrincipal) || Number(c.goalDistance) === -2)
82
+ return getPlanificacionPrueba7diasEmpezarCorrer(c);
83
+ if (Number(c.goalDistance) === 5000)
84
+ return getPlanificacionPrueba7dias5k(c);
85
+ if (Number(c.goalDistance) === 10000)
86
+ return getPlanificacionPrueba7dias10k(c);
87
+ if (Number(c.goalDistance) === 21000)
88
+ return getPlanificacionPrueba7dias21k(c);
89
+ if (Number(c.goalDistance) === 42000)
90
+ return getPlanificacionPrueba7dias42k(c);
91
+ };
92
+ const addWorkoutFuerza = () => {
93
+ return {
94
+ type: WORKOUT_TYPE.FUERZA,
95
+ title: 'Fuerza Fullbody en casa',
96
+ description: 'Descanso tras cada serie y ejercicio de 60 segundos. Este entrenamiento utiliza el peso del cuerpo como resistencia. El objetivo es fortalecer diversos grupos musculares sin la necesidad de equipos externos. Asegúrate de mantener una postura adecuada en cada ejercicio y ajustar las repeticiones si es necesario para tu nivel. En los ejercicios isométricos en vez de repeticiones, son segundos de trabajo.\nEn los ejercicios unilaterales, las repeticiones son con cada pierna, y una serie son las repeticiones con las dos piernas.',
97
+ durationPlanned: 1800,
98
+ shortDescription: 'Entrenamiento fullbody sin material para evitar lesiones y mejorar el rendimiento',
99
+ exercise: [
100
+ {
101
+ idExercise: 'exnTFxvkOvQdPwfeX7Nf',
102
+ series: [
103
+ {
104
+ repetitions: 12,
105
+ },
106
+ {
107
+ repetitions: 12,
108
+ },
109
+ {
110
+ repetitions: 12,
111
+ },
112
+ {
113
+ repetitions: 12,
114
+ },
115
+ ],
116
+ },
117
+ {
118
+ idExercise: '26223e5a-8c5a-4f5b-bff8-5668d91e71d7',
119
+ series: [
120
+ {
121
+ repetitions: 10,
122
+ },
123
+ {
124
+ repetitions: 10,
125
+ },
126
+ {
127
+ repetitions: 10,
128
+ },
129
+ ],
130
+ },
131
+ {
132
+ idExercise: '9de7901f-8866-4ff2-83f1-413ae804306e',
133
+ series: [
134
+ {
135
+ repetitions: 15,
136
+ },
137
+ {
138
+ repetitions: 15,
139
+ },
140
+ {
141
+ repetitions: 15,
142
+ },
143
+ ],
144
+ },
145
+ {
146
+ idExercise: '486a1496-f51f-4a4b-90a4-c058d3cf4726',
147
+ series: [
148
+ {
149
+ repetitions: 8,
150
+ },
151
+ {
152
+ repetitions: 8,
153
+ },
154
+ ],
155
+ },
156
+ {
157
+ idExercise: '2bae837a-c5b1-4fc3-97a4-1f5522557744',
158
+ series: [
159
+ {
160
+ repetitions: 10,
161
+ },
162
+ {
163
+ repetitions: 10,
164
+ },
165
+ ],
166
+ },
167
+ {
168
+ idExercise: 'KRnlosggP8qIXzLI2Aj5',
169
+ series: [
170
+ {
171
+ repetitions: 25,
172
+ },
173
+ {
174
+ repetitions: 25,
175
+ },
176
+ ],
177
+ },
178
+ {
179
+ idExercise: '368cdd11-b2d2-4a79-add6-389a16998726',
180
+ series: [
181
+ {
182
+ repetitions: 10,
183
+ },
184
+ {
185
+ repetitions: 10,
186
+ },
187
+ {
188
+ repetitions: 10,
189
+ },
190
+ ],
191
+ },
192
+ ],
193
+ };
194
+ };
195
+ function camelize(str) {
196
+ return str
197
+ .toLowerCase()
198
+ .replace(/(?:^\w|[A-Z]|\b\w)/g, function (word, index) {
199
+ return index === 0 ? word.toLowerCase() : word.toUpperCase();
200
+ })
201
+ .replace(/\s+/g, '');
202
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runnerpro/backend",
3
- "version": "1.6.33",
3
+ "version": "1.7.2",
4
4
  "description": "A collection of common backend functions",
5
5
  "exports": {
6
6
  ".": "./lib/cjs/index.js"