[core] configure cspell to check default modules only and fix typos (#3955)

When I saw PR #3951, I wondered why `cspell` didn't catch these typos
before. Unfortunately, the default modules were excluded from the check.
I have corrected this with these changes.

This even revealed a code error in
`modules/default/weather/providers/overrideWrapper.js`:

- before: `fetchEatherHourly`
- after: `fetchWeatherHourly`
This commit is contained in:
Kristjan ESPERANTO
2025-11-08 20:27:34 +01:00
committed by GitHub
parent 8e9ee8953a
commit 2b08288346
17 changed files with 127 additions and 26 deletions

View File

@@ -59,7 +59,7 @@
// notice, warning, error, success
// will add class ns-type-warning, ns-type-error or ns-type-success
type: "notice",
// if the user doesn´t close the notification then we remove it
// if the user doesn't close the notification then we remove it
// after the following time
ttl: 6000,
al_no: "ns-box",

View File

@@ -411,7 +411,7 @@ Module.register("calendar", {
timeWrapper.innerHTML = CalendarUtils.capFirst(eventStartDateMoment.format(this.config.dateFormat));
// Add end time if showEnd
if (this.config.showEnd) {
// and has a duation
// and has a duration
if (event.startDate !== event.endDate) {
timeWrapper.innerHTML += "-";
timeWrapper.innerHTML += CalendarUtils.capFirst(eventEndDateMoment.format(this.config.dateEndFormat));
@@ -493,7 +493,7 @@ Module.register("calendar", {
}
Log.info("[calendar] event fullday");
} else if (eventStartDateMoment.diff(now, "h") < this.config.getRelative) {
Log.info("[calendar] not full day but within getrelative size");
Log.info("[calendar] not full day but within getRelative size");
// If event is within getRelative hours, display 'in xxx' time format or moment.fromNow()
timeWrapper.innerHTML = `${CalendarUtils.capFirst(eventStartDateMoment.fromNow())}`;
}
@@ -721,7 +721,7 @@ Module.register("calendar", {
}
events = newEvents;
}
Log.info(`[calendar] slicing events total maxcount=${this.config.maximumEntries}`);
Log.info(`[calendar] slicing events total maxCount=${this.config.maximumEntries}`);
return events.slice(0, this.config.maximumEntries);
},
@@ -909,7 +909,7 @@ Module.register("calendar", {
/**
* Broadcasts the events to all other modules for reuse.
* The all events available in one array, sorted on startdate.
* The all events available in one array, sorted on startDate.
*/
broadcastEvents () {
const eventList = this.createEventList(false);

View File

@@ -121,7 +121,7 @@ const CalendarFetcherUtils = {
return JSON.stringify(d) !== "null";
});
// Dates are returned in UTC timezone but with localdatetime because tzid is null.
// Dates are returned in UTC timezone but with local datetime because tzid is null.
// So we map the date to a moment using the original timezone of the event.
return dates.map((d) => (event.start.tz ? moment.tz(d, "UTC").tz(event.start.tz, true) : moment.tz(d, "UTC").tz(CalendarFetcherUtils.getLocalTimezone(), true)));
},
@@ -202,7 +202,7 @@ const CalendarFetcherUtils = {
const geo = event.geo || false;
const description = event.description || false;
// TODO This should be a seperate function.
// TODO This should be a separate function.
if (event.rrule && typeof event.rrule !== "undefined" && !isFacebookBirthday) {
// Recurring event.
let moments = CalendarFetcherUtils.getMomentsFromRecurringEvent(event, pastLocalMoment, futureLocalMoment, durationMs);

View File

@@ -88,7 +88,7 @@ const CalendarUtils = {
* @param {string} title The title to transform.
* @param {object} titleReplace object definition of parts to be replaced in the title
* object definition:
* search: {string,required} RegEx in format //x or simple string to be searched. For (birthday) year calcluation, the element matching the year must be in a RegEx group
* search: {string,required} RegEx in format //x or simple string to be searched. For (birthday) year calculation, the element matching the year must be in a RegEx group
* replace: {string,required} Replacement string, may contain match group references (latter is required for year calculation)
* yearmatchgroup: {number,optional} match group for year element
* @returns {string} The transformed title.

View File

@@ -81,7 +81,7 @@ Module.register("compliments", {
minute_sync_delay);
},
// check to see if this entry could be a cron entry wich contains spaces
// check to see if this entry could be a cron entry which contains spaces
isCronEntry (entry) {
return entry.includes(" ");
},

View File

@@ -1,5 +1,5 @@
<!--
Use ` | safe` to allow html tages within the text string.
Use ` | safe` to allow html tags within the text string.
https://mozilla.github.io/nunjucks/templating.html#autoescaping
-->
<div>{{ text | safe }}</div>

View File

@@ -24,7 +24,7 @@
{% for name, status in updatesList %}
<div class="small bright">
{% if status.done %}
<i class="fas fa-check" style="color: lightgreen;"></i>
<i class="fas fa-check" style="color: LightGreen;"></i>
<span>
{% set updateTextLabel = "UPDATE_NOTIFICATION_DONE" %}
{{ updateTextLabel | translate({MODULE_NAME: name}) | safe }}

View File

@@ -1,7 +1,7 @@
/**
* A function to make HTTP requests via the server to avoid CORS-errors.
* @param {string} url the url to fetch from
* @param {string} type what contenttype to expect in the response, can be "json" or "xml"
* @param {string} type what content-type to expect in the response, can be "json" or "xml"
* @param {boolean} useCorsProxy A flag to indicate
* @param {Array.<{name: string, value:string}>} requestHeaders the HTTP headers to send
* @param {Array.<string>} expectedResponseHeaders the expected HTTP headers to receive

View File

@@ -101,7 +101,7 @@ WeatherProvider.register("envcanada", {
* city specified in the Weather module Config information
*/
fetchCommon (target) {
const forecastURL = this.getUrl(); // Get the approriate URL for the MSC Datamart Index page
const forecastURL = this.getUrl(); // Get the appropriate URL for the MSC Datamart Index page
Log.debug(`[weatherprovider.envcanada] ${target} Index url: ${forecastURL}`);
@@ -127,7 +127,7 @@ WeatherProvider.register("envcanada", {
const fileSuffix = `${this.config.siteCode}_en.xml`; // Build city filename
const nextFile = indexData.body.innerHTML.split(fileSuffix); // Find filename on Index page
if (nextFile.length > 1) { // Parse out the full unqiue file city filename
if (nextFile.length > 1) { // Parse out the full unique file city filename
// Find the last occurrence
forecastFile = nextFile[nextFile.length - 2].slice(-41) + fileSuffix;
forecastFileURL = forecastURL + forecastFile; // Create full URL to the city's weather data
@@ -325,7 +325,7 @@ WeatherProvider.register("envcanada", {
* off and Element 0 will contain Current Tonight. From there, the next 5 days will be contained in
* Elements 1/2, 3/4, 5/6, 7/8, and 9/10. As well, Element 11 will contain a forecast for a 6th day,
* but only for the Today portion (not Tonight). This module will create a 6-day forecast using
* Elements 0 to 11, and will ignore the additional Todat forecast in Element 11.
* Elements 0 to 11, and will ignore the additional Today forecast in Element 11.
*
* We need to determine if Element 0 is showing the forecast for Current Today or Current Tonight.
* This is required to understand how Min and Max temperature will be determined, and to understand
@@ -431,7 +431,7 @@ WeatherProvider.register("envcanada", {
/*
* The EC hourly forecast is held in a 24-element array - Elements 0 to 23 - with Element 0 holding
* the forecast for the next 'on the hour' timeslot. This means the array is a rolling 24 hours.
* the forecast for the next 'on the hour' time slot. This means the array is a rolling 24 hours.
*/
const hourGroup = ECdoc.querySelectorAll("siteData hourlyForecastGroup hourlyForecast");
@@ -464,7 +464,7 @@ WeatherProvider.register("envcanada", {
},
/*
* Determine Min and Max temp based on a supplied Forecast Element index and a boolen that denotes if
* Determine Min and Max temp based on a supplied Forecast Element index and a boolean that denotes if
* the next Forecast element should be considered - i.e. look at Today *and* Tonight vs.Tonight-only
*/
setMinMaxTemps (weather, foreGroup, today, fullDay, currentTemp) {

View File

@@ -296,7 +296,7 @@ WeatherProvider.register("openmeteo", {
return data.time.map((_, index) => Object.keys(data).reduce((row, key) => {
return {
...row,
// Parse time values as momentjs instances
// Parse time values as moment.js instances
[key]: ["time", "sunrise", "sunset"].includes(key) ? this.checkDST(data[key][index]) : data[key][index]
};
}, {}));

View File

@@ -427,7 +427,7 @@ WeatherProvider.register("openweathermap", {
} else if (this.firstEvent && this.firstEvent.location) {
params += `q=${this.firstEvent.location}`;
} else {
// TODO hide doesnt exist!
// TODO hide doesn't exist!
this.hide(this.config.animationSpeed, { lockString: this.identifier });
return;
}

View File

@@ -46,7 +46,7 @@ const OverrideWrapper = Class.extend({
this.baseProvider.fetchWeatherForecast();
},
fetchWeatherHourly () {
this.baseProvider.fetchEatherHourly();
this.baseProvider.fetchWeatherHourly();
},
weatherForecast () {
this.baseProvider.weatherForecast();
@@ -84,7 +84,7 @@ const OverrideWrapper = Class.extend({
},
/**
* Override to combine the overrideWeatherObejct provided in the
* Override to combine the overrideWeatherObject provided in the
* notificationReceived method with the currentOverrideWeatherObject provided by the
* api provider fetchData implementation.
* @param {WeatherObject} currentWeatherObject - the api provider weather object

View File

@@ -141,7 +141,7 @@ WeatherProvider.register("smhi", {
/*
* Determine the precipitation amount and category and update the
* weatherObject with it, the valuetype to use can be configured or uses
* weatherObject with it, the value type to use can be configured or uses
* median as default.
*/
let precipitationValue = this.paramValue(weatherData, this.config.precipitationValue);
@@ -173,7 +173,7 @@ WeatherProvider.register("smhi", {
* @param {object[]} allWeatherData Array of weatherdata
* @param {object} coordinates Coordinates of the locations of the weather
* @param {string} groupBy The interval to use for grouping the data (day, hour)
* @returns {WeatherObject[]} Array of weatherobjects
* @returns {WeatherObject[]} Array of weather objects
*/
convertWeatherDataGroupedBy (allWeatherData, coordinates, groupBy = "day") {
let currentWeather;

View File

@@ -27,7 +27,7 @@
* - Pressures are in Pascals (Pa)
* - Distances are in metres (m)
* - Probabilities and humidity are given as percentages (%)
* - Precipitation is measured in millimetres (mm) with rates per hour (mm/h)
* - Precipitation is measured in millimeters (mm) with rates per hour (mm/h)
*
* See the PDFs linked above for more information on the data their corresponding units.
*/

View File

@@ -107,7 +107,7 @@ const WeatherProvider = Class.extend({
/**
* A convenience function to make requests.
* @param {string} url the url to fetch from
* @param {string} type what contenttype to expect in the response, can be "json" or "xml"
* @param {string} type what content-type to expect in the response, can be "json" or "xml"
* @param {Array.<{name: string, value:string}>} requestHeaders the HTTP headers to send
* @param {Array.<string>} expectedResponseHeaders the expected HTTP headers to receive
* @returns {Promise} resolved when the fetch is done