This commit is contained in:
proddy
2025-03-22 10:32:03 +01:00
parent e418b7d8e7
commit eaa277fef0
281 changed files with 15297 additions and 21851 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,3 @@
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-4.5.3.cjs
yarnPath: .yarn/releases/yarn-4.7.0.cjs

View File

@@ -105,7 +105,7 @@ export default () => {
let message = 'message #' + count;
if (count % 6 === 1) {
message +=
' with a long message that will be wrapped, to see if it stays one a single line';
' that is a long message that will be wrapped, to test if it gets truncated';
}
const data = {
t: new Date().toISOString(),

View File

@@ -1,6 +1,6 @@
{
"name": "mock-api",
"version": "3.7.1",
"version": "3.7.2",
"description": "mock api for EMS-ESP",
"author": "proddy, emsesp.org",
"license": "MIT",
@@ -9,11 +9,11 @@
"format": "prettier -l -w '**/*.{ts,tsx,js,css,json,md}'"
},
"dependencies": {
"@msgpack/msgpack": "^2.8.0",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@msgpack/msgpack": "^3.1.1",
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
"formidable": "^3.5.2",
"itty-router": "^5.0.18",
"prettier": "^3.4.1"
"prettier": "^3.5.3"
},
"packageManager": "yarn@4.5.3"
"packageManager": "yarn@4.7.0"
}

View File

@@ -1,23 +1,8 @@
import { Encoder } from '@msgpack/msgpack';
import { AutoRouter, type ResponseHandler, error, status } from 'itty-router';
import { AutoRouter, status } from 'itty-router';
const encoder = new Encoder();
const logger: ResponseHandler = (response, request) => {
console.log(
response.status,
request.url,
request.method,
'at',
new Date().toLocaleString()
);
};
const router = AutoRouter({
port: 3080,
missing: () => error(404, 'Error, endpoint not found')
// finally: [logger]
});
const router = AutoRouter();
const REST_ENDPOINT_ROOT = '/rest/';
const API_ENDPOINT_ROOT = '/api/';
@@ -29,16 +14,117 @@ const headers = {
'Content-type': 'application/msgpack'
};
let VERSION_IS_UPGRADEABLE;
// EMS-ESP Application Settings
let settings = {
locale: 'en',
tx_mode: 1,
ems_bus_id: 11,
syslog_enabled: false,
syslog_level: 3,
trace_raw: false,
syslog_mark_interval: 0,
syslog_host: '192.168.1.8',
syslog_port: 514,
boiler_heatingoff: false,
remote_timeout: 24,
remote_timeout_en: false,
shower_timer: true,
shower_alert: false,
shower_alert_coldshot: 10,
shower_alert_trigger: 7,
shower_min_duration: 180,
rx_gpio: 4,
tx_gpio: 5,
dallas_gpio: 14,
dallas_parasite: false,
led_gpio: 2,
hide_led: true,
low_clock: false,
telnet_enabled: true,
notoken_api: false,
readonly_mode: false,
analog_enabled: true,
pbutton_gpio: 34,
solar_maxflow: 30,
board_profile: 'E32V2',
fahrenheit: false,
bool_format: 1,
bool_dashboard: 1,
enum_format: 1,
weblog_level: 6,
weblog_buffer: 50,
weblog_compact: true,
phy_type: 1,
eth_power: 15,
eth_phy_addr: 0,
eth_clock_mode: 1,
platform: 'ESP32',
modbus_enabled: false,
modbus_port: 502,
modbus_max_clients: 10,
modbus_timeout: 10000,
developer_mode: true
};
// EMS-ESP System Settings
let system_status = {
emsesp_version: 'XX.XX.XX', // defined later
bus_status: 0,
uptime: 77186,
bus_uptime: 77121,
num_devices: 2,
num_sensors: 1,
num_analogs: 1,
free_heap: 143,
ntp_status: 2,
ntp_time: '2021-04-01T14:25:42Z',
mqtt_status: true,
ap_status: false,
network_status: 3, // wifi connected
// network_status: 10, // ethernet connected
// network_status: 6, // wifi disconnected
wifi_rssi: -41,
esp_platform: 'ESP32S3',
build_flags: 'DEMO',
cpu_type: 'ESP32-S3',
cpu_rev: 0,
cpu_cores: 2,
cpu_freq_mhz: 240,
max_alloc_heap: 191,
arduino_version: 'ESP32 Arduino v2.0.17',
sdk_version: 'v4.4.7',
partition: 'app0',
flash_chip_size: 16384,
flash_chip_speed: 80000000,
app_used: 2258,
app_free: 3438,
fs_used: 24,
fs_free: 2024,
free_caps: 8376,
psram: true,
psram_size: 8189,
free_psram: 8166,
has_loader: true,
model: '',
// model: 'BBQKees Electronics EMS Gateway E32 V2 (E32 V2.0 P3/2024011)',
// status: 0,
status: 3
};
let VERSION_IS_UPGRADEABLE: boolean;
// Versions
// default - on latest stable, no upgrades
let THIS_VERSION = '3.7.1';
let LATEST_STABLE_VERSION = '3.7.1';
let LATEST_DEV_VERSION = '3.7.2-dev.1';
// default - on latest stable, no stable upgrades
let THIS_VERSION = '3.7.2';
let LATEST_STABLE_VERSION = '3.7.2';
let LATEST_DEV_VERSION = '3.7.3-dev.9';
// scenarios for testing, overriding the default
const version_test = 0;
// scenarios for testing versioning
let version_test = 0;
version_test = 0; // on latest stable, no upgrades, but can switch
// version_test = 1; // on latest dev, no update
// version_test = 2; // on stable, upgrade stable to latest stable
// version_test = 3; // on dev, upgrade dev to latest dev
switch (version_test as number) {
case 0:
@@ -48,27 +134,64 @@ switch (version_test as number) {
break;
case 1:
// on latest dev, no update
THIS_VERSION = '3.7.2-dev.12';
LATEST_STABLE_VERSION = '3.7.1';
LATEST_DEV_VERSION = '3.7.2-dev.12';
THIS_VERSION = '3.7.2-dev.9';
LATEST_STABLE_VERSION = '3.7.2';
LATEST_DEV_VERSION = '3.7.3-dev.9';
VERSION_IS_UPGRADEABLE = false;
break;
case 2:
// upgrade stable to latest stable
THIS_VERSION = '3.6.5';
LATEST_STABLE_VERSION = '3.7.1';
LATEST_DEV_VERSION = '3.7.2-dev.12';
LATEST_STABLE_VERSION = '3.7.2';
LATEST_DEV_VERSION = '3.7.3-dev.12';
VERSION_IS_UPGRADEABLE = true;
break;
case 3:
// upgrade dev to latest dev
THIS_VERSION = '3.7.1-dev-1';
LATEST_STABLE_VERSION = '3.7.1';
LATEST_DEV_VERSION = '3.7.2-dev.12';
THIS_VERSION = '3.7.2-dev-1';
LATEST_STABLE_VERSION = '3.7.2';
LATEST_DEV_VERSION = '3.7.3-dev.12';
VERSION_IS_UPGRADEABLE = true;
break;
}
// set the version
system_status.emsesp_version = THIS_VERSION;
const emulate_esp = 'ESP32S3';
// const emulate_esp = 'ESP32';
switch (emulate_esp as string) {
// ESP32 4MB
case 'ESP32':
system_status.esp_platform = 'ESP32';
system_status.cpu_type = 'ESP32';
system_status.arduino_version = 'Tasmota Arduino v2.0.17';
system_status.sdk_version = 'v4.4.7';
system_status.psram = false;
system_status.psram_size = 0;
system_status.free_psram = 0;
settings.board_profile = 'E32V2';
settings.platform = 'ESP32';
break;
// ESP32S3
case 'ESP32S3':
default:
system_status.esp_platform = 'ESP32S3';
system_status.cpu_type = 'ESP32-S3';
system_status.arduino_version = 'ESP32 Arduino v2.0.18';
system_status.sdk_version = 'v4.4.7';
system_status.psram = true;
system_status.psram_size = 8189;
system_status.free_psram = 8166;
settings.board_profile = 'S3';
settings.platform = 'ESP32S3';
break;
}
// simulate different ESP32 chips
// GLOBAL VARIABLES
let countWifiScanPoll = 0; // wifi network scan
let countHardwarePoll = 0; // for during an upload
@@ -146,10 +269,10 @@ function updateMask(entity: any, de: any, dd: any) {
const old_custom_name = dd.nodes[dd_objIndex].cn;
console.log(
'comparing names, old (' +
old_custom_name +
') with new (' +
new_custom_name +
')'
old_custom_name +
') with new (' +
new_custom_name +
')'
);
if (old_custom_name !== new_custom_name) {
changed = true;
@@ -244,15 +367,15 @@ function check_upgrade(version: string) {
const stable_version = version.split(',')[1];
console.log(
'latest dev version: ' +
dev_version +
', latest stable version: ' +
stable_version
dev_version +
', latest stable version: ' +
stable_version
);
console.log(
'Version upgrade check from version ' +
THIS_VERSION +
', upgradable: ' +
VERSION_IS_UPGRADEABLE
THIS_VERSION +
', upgradable: ' +
VERSION_IS_UPGRADEABLE
);
data = {
emsesp_version: THIS_VERSION,
@@ -267,60 +390,6 @@ function check_upgrade(version: string) {
return data;
}
// START DATA
// EMS-ESP Application Settings
let settings = {
locale: 'en',
tx_mode: 1,
ems_bus_id: 11,
syslog_enabled: false,
syslog_level: 3,
trace_raw: false,
syslog_mark_interval: 0,
syslog_host: '192.168.1.8',
syslog_port: 514,
boiler_heatingoff: false,
remote_timeout: 24,
remote_timeout_en: false,
shower_timer: true,
shower_alert: false,
shower_alert_coldshot: 10,
shower_alert_trigger: 7,
shower_min_duration: 180,
rx_gpio: 4,
tx_gpio: 5,
dallas_gpio: 14,
dallas_parasite: false,
led_gpio: 2,
hide_led: true,
low_clock: false,
telnet_enabled: true,
notoken_api: false,
readonly_mode: false,
analog_enabled: true,
pbutton_gpio: 34,
solar_maxflow: 30,
board_profile: 'E32V2',
fahrenheit: false,
bool_format: 1,
bool_dashboard: 1,
enum_format: 1,
weblog_level: 6,
weblog_buffer: 50,
weblog_compact: true,
phy_type: 1,
eth_power: 15,
eth_phy_addr: 0,
eth_clock_mode: 1,
platform: 'ESP32',
modbus_enabled: false,
modbus_port: 502,
modbus_max_clients: 10,
modbus_timeout: 10000,
developer_mode: true
};
// LOG
const LOG_SETTINGS_ENDPOINT = REST_ENDPOINT_ROOT + 'logSettings';
let log_settings = {
@@ -522,50 +591,6 @@ const VERIFY_AUTHORIZATION_ENDPOINT = REST_ENDPOINT_ROOT + 'verifyAuthorization'
const SIGN_IN_ENDPOINT = REST_ENDPOINT_ROOT + 'signIn';
const GENERATE_TOKEN_ENDPOINT = REST_ENDPOINT_ROOT + 'generateToken';
let system_status = {
emsesp_version: THIS_VERSION,
bus_status: 0,
// status: 2,
uptime: 77186,
bus_uptime: 77121,
num_devices: 2,
num_sensors: 1,
num_analogs: 1,
free_heap: 143,
ntp_status: 2,
mqtt_status: true,
ap_status: false,
network_status: 3, // wifi connected
// network_status: 10, // ethernet connected
// network_status: 6, // wifi disconnected
wifi_rssi: -41,
esp_platform: 'ESP32S3',
build_flags: 'DEMO',
cpu_type: 'ESP32-S3',
cpu_rev: 0,
cpu_cores: 2,
cpu_freq_mhz: 240,
max_alloc_heap: 191,
arduino_version: 'ESP32 Arduino v2.0.17',
sdk_version: 'v4.4.7-dirty',
partition: 'app0',
flash_chip_size: 16384,
flash_chip_speed: 80000000,
app_used: 2258,
app_free: 3438,
fs_used: 24,
fs_free: 2024,
free_caps: 8376,
// psram: false,
psram: true,
psram_size: 8189,
free_psram: 8166,
has_loader: true,
model: '',
// model: 'BBQKees Electronics EMS Gateway E32 V2 (E32 V2.0 P3/2024011)',
status: 'downloading'
};
let security_settings = {
jwt_secret: 'naughty!',
users: [
@@ -897,6 +922,18 @@ const emsesp_coredata = {
v: '73.03',
e: 63,
url: 'thermostat'
},
{
id: 11,
tn: 'Ventilation',
t: 18,
b: '',
n: 'Vent4000CC',
d: 81,
p: 231,
v: '53.02',
e: 10,
url: 'ventilation'
}
]
};
@@ -951,6 +988,10 @@ const activity = {
// 5 - MM10 mixer
// 6 - SM10 solar
// 7 - Nefit Trendline boiler
// 8 - Bosch Compress 7000i AW Heat Pump
// 9 - RC100H thermostat
// 10 - Thermostat RC310
// 11 - Ventilation
// 99 - Custom
const emsesp_devicedata_1 = {
@@ -3791,6 +3832,71 @@ const emsesp_devicedata_10 = {
]
};
const emsesp_devicedata_11 = {
nodes: [
{
v: 11,
u: 1,
id: '00outdoor fresh air'
},
{
v: 13.699999809265137,
u: 1,
id: '00indoor fresh air'
},
{
v: 11.399999618530273,
u: 1,
id: '00outdoor exhaust air'
},
{
v: 14.800000190734863,
u: 1,
id: '00indoor exhaust air'
},
{
v: 0,
u: 3,
id: '00in blower speed'
},
{
v: 0,
u: 3,
id: '00out blower speed'
},
{
v: 'auto',
u: 0,
id: '00ventilation mode',
c: 'ventmode',
l: [
'auto',
'off',
'L1',
'L2',
'L3',
'L4',
'demand',
'sleep',
'intense',
'bypass',
'party',
'fireplace'
]
},
{
v: 1770,
u: 0,
id: '00air quality (voc)'
},
{
v: 53,
u: 3,
id: '00relative air humidity'
}
]
};
const emsesp_devicedata_99 = {
nodes: [
{
@@ -3955,7 +4061,7 @@ let emsesp_modules = {
const dummy_deviceentities = [
{
v: 'unknown',
n: 'no entities for this device',
n: 'sorry, no demo entities for this device!',
id: 'unknown',
m: 0,
w: false
@@ -3970,6 +4076,7 @@ const emsesp_deviceentities_6 = dummy_deviceentities;
const emsesp_deviceentities_8 = dummy_deviceentities;
const emsesp_deviceentities_9 = dummy_deviceentities;
const emsesp_deviceentities_10 = dummy_deviceentities;
const emsesp_deviceentities_11 = dummy_deviceentities;
const emsesp_deviceentities_none = dummy_deviceentities;
const emsesp_deviceentities_2 = [
@@ -4162,8 +4269,6 @@ const emsesp_deviceentities_7 = [
{ v: 102151, n: 'dhw active time', id: 'dhw/workm', m: 0, w: false }
];
// END DATA
// LOG
router
.get(LOG_SETTINGS_ENDPOINT, () => log_settings)
@@ -4234,7 +4339,7 @@ router
.get(SYSTEM_STATUS_ENDPOINT, () => {
if (countHardwarePoll >= 2) {
countHardwarePoll = 0;
system_status.status = 'ready';
system_status.status = 0; // SYSTEM_STATUS_NORMAL
}
countHardwarePoll++;
@@ -4287,6 +4392,9 @@ function deviceData(id: number) {
if (id == 10) {
return new Response(encoder.encode(emsesp_devicedata_10), { headers });
}
if (id == 11) {
return new Response(encoder.encode(emsesp_devicedata_11), { headers });
}
if (id == 99) {
return new Response(encoder.encode(emsesp_devicedata_99), { headers });
}
@@ -4340,6 +4448,7 @@ function getDashboardEntityData(id: number) {
else if (id == 8) device_data = emsesp_devicedata_8;
else if (id == 9) device_data = emsesp_devicedata_9;
else if (id == 10) device_data = emsesp_devicedata_10;
else if (id == 11) device_data = emsesp_devicedata_11;
else if (id == 99) device_data = emsesp_devicedata_99;
// filter device_data on
@@ -4392,14 +4501,14 @@ router
params.id ? deviceEntities(Number(params.id)) : status(404)
)
.get(EMSESP_DASHBOARD_DATA_ENDPOINT, () => {
let dashboard_data: { id?: number; n?: string; t?: number; nodes?: any[] }[] =
let dashboard_nodes: { id?: number; n?: string; t?: number; nodes?: any[] }[] =
[];
let dashboard_object: { id?: number; n?: string; t?: number; nodes?: any[] } =
{};
let fake = false;
// fake = true; // for testing
// fake = true; // for testing, shows a subset of data
if (!fake) {
// pick EMS devices from coredata
@@ -4414,7 +4523,7 @@ router
};
// only add to dashboard if we have values
if ((dashboard_object.nodes ?? []).length > 0) {
dashboard_data.push(dashboard_object);
dashboard_nodes.push(dashboard_object);
}
}
@@ -4426,7 +4535,7 @@ router
};
// only add to dashboard if we have values
if ((dashboard_object.nodes ?? []).length > 0) {
dashboard_data.push(dashboard_object);
dashboard_nodes.push(dashboard_object);
}
// add temperature sensor data. no command c
@@ -4446,7 +4555,7 @@ router
};
// only add to dashboard if we have values
if ((dashboard_object.nodes ?? []).length > 0) {
dashboard_data.push(dashboard_object);
dashboard_nodes.push(dashboard_object);
}
// add analog sensor data. no command c
@@ -4467,7 +4576,7 @@ router
};
// only add to dashboard if we have values
if ((dashboard_object.nodes ?? []).length > 0) {
dashboard_data.push(dashboard_object);
dashboard_nodes.push(dashboard_object);
}
// add the scheduler data
@@ -4489,47 +4598,51 @@ router
};
// only add to dashboard if we have values
if ((dashboard_object.nodes ?? []).length > 0) {
dashboard_data.push(dashboard_object);
dashboard_nodes.push(dashboard_object);
}
} else {
// for testing only
// add the custom entity data
dashboard_object = {
id: DeviceTypeUniqueID.CUSTOM_UID, // unique ID for custom entities
t: DeviceType.CUSTOM,
nodes: getDashboardEntityData(DeviceTypeUniqueID.CUSTOM_UID)
};
if ((dashboard_object.nodes ?? []).length > 0) {
dashboard_nodes.push(dashboard_object);
}
// add the scheduler data
// let scheduler_data = emsesp_schedule.schedule.filter((item) => item.name);
// let scheduler_data2 = scheduler_data.map((item, index) => ({
// id: DeviceTypeUniqueID.SCHEDULER_UID * 100 + index,
// dv: {
// id: '00' + item.name,
// v: item.active ? 'on' : 'off',
// c: item.name,
// l: ['off', 'on']
// }
// }));
// dashboard_object = {
// id: DeviceTypeUniqueID.CUSTOM_UID, // unique ID for custom entities
// t: DeviceType.CUSTOM,
// nodes: getDashboardEntityData(99)
// id: DeviceTypeUniqueID.SCHEDULER_UID,
// t: DeviceType.SCHEDULER,
// nodes: scheduler_data2
// };
// // only add to dashboard if we have values
// if ((dashboard_object.nodes ?? []).length > 0) {
// dashboard_data.push(dashboard_object);
// }
let scheduler_data = emsesp_schedule.schedule.filter((item) => item.name);
let scheduler_data2 = scheduler_data.map((item, index) => ({
id: DeviceTypeUniqueID.SCHEDULER_UID * 100 + index,
dv: {
id: '00' + item.name,
v: item.active ? 'on' : 'off',
c: item.name,
l: ['off', 'on']
}
}));
dashboard_object = {
id: DeviceTypeUniqueID.SCHEDULER_UID,
t: DeviceType.SCHEDULER,
nodes: scheduler_data2
};
// only add to dashboard if we have values
if ((dashboard_object.nodes ?? []).length > 0) {
dashboard_data.push(dashboard_object);
}
}
// console.log('dashboard_data: ', dashboard_data);
const dashboardData = {
// connect: false,
connected: true,
nodes: dashboard_nodes
};
// console.log('dashboardData: ', dashboardData);
// return dashboard_data; // if not using msgpack
return new Response(encoder.encode(dashboard_data), { headers }); // msgpack it
return new Response(encoder.encode(dashboardData), { headers }); // msgpack it
})
// Customizations
@@ -4556,7 +4669,9 @@ router
} else if (id === 9) {
updateMask(entity, emsesp_deviceentities_9, emsesp_devicedata_9);
} else if (id === 10) {
updateMask(entity, emsesp_deviceentities_9, emsesp_devicedata_10);
updateMask(entity, emsesp_deviceentities_10, emsesp_devicedata_10);
} else if (id === 11) {
updateMask(entity, emsesp_deviceentities_11, emsesp_devicedata_11);
}
}
console.log('customization saved', content);
@@ -4661,6 +4776,10 @@ router
objIndex = emsesp_devicedata_10.nodes.findIndex((obj) => obj.c == command);
emsesp_devicedata_10.nodes[objIndex].v = value;
}
if (id === 10) {
objIndex = emsesp_devicedata_11.nodes.findIndex((obj) => obj.c == command);
emsesp_devicedata_11.nodes[objIndex].v = value;
}
if (id === DeviceTypeUniqueID.CUSTOM_UID) {
// custom entities
objIndex = emsesp_devicedata_99.nodes.findIndex((obj) => obj.c == command);
@@ -4918,7 +5037,7 @@ router
return status(200);
} else if (cmd === 'restart') {
console.log('restarting...');
system_status.status = 'restarting';
system_status.status = 5;
countHardwarePoll = 0;
return status(200);
} else if (cmd === 'read') {
@@ -4930,18 +5049,42 @@ router
});
// Mock GitHub API
// https://api.github.com/repos/emsesp/EMS-ESP32/releases
router
.get(GH_ENDPOINT_ROOT + '/tags/latest', () => {
console.log('returning latest development version: ' + LATEST_DEV_VERSION);
return { name: 'v' + LATEST_DEV_VERSION };
const data = {
name: 'v' + LATEST_DEV_VERSION,
published_at: new Date().toISOString() // use todays date
};
console.log('returning latest development version (today): ', data);
return data;
})
.get(GH_ENDPOINT_ROOT + '/latest', () => {
console.log('returning latest stable version: ' + LATEST_STABLE_VERSION);
return { name: 'v' + LATEST_STABLE_VERSION };
const data = {
name: 'v' + LATEST_STABLE_VERSION,
published_at: '2025-03-01T13:29:13.999Z'
};
console.log('returning latest stable version: ', data);
return data;
});
export default router;
// const logger: ResponseHandler = (response, request) => {
// console.log(
// response.status,
// request.url,
// request.method,
// 'at',
// new Date().toLocaleString()
// );
// };
export default {
port: 3080,
fetch: router.fetch
// missing: () => error(404, 'Error, endpoint not found'),
// finally: [logger]
};
// use this with cloudflare workers instead
// export default { ...router };

View File

@@ -5,7 +5,7 @@ __metadata:
version: 8
cacheKey: 10c0
"@babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.25.9":
"@babel/code-frame@npm:^7.26.2":
version: 7.26.2
resolution: "@babel/code-frame@npm:7.26.2"
dependencies:
@@ -16,64 +16,16 @@ __metadata:
languageName: node
linkType: hard
"@babel/generator@npm:7.17.7":
version: 7.17.7
resolution: "@babel/generator@npm:7.17.7"
"@babel/generator@npm:^7.26.10, @babel/generator@npm:^7.26.5":
version: 7.26.10
resolution: "@babel/generator@npm:7.26.10"
dependencies:
"@babel/types": "npm:^7.17.0"
jsesc: "npm:^2.5.1"
source-map: "npm:^0.5.0"
checksum: 10c0/8088453c4418e0ee6528506fbd5847bbdfd56327a0025ca9496a259261e162c594ffd08be0d63e74c32feced795616772f38acc5f5e493a86a45fd439fd9feb0
languageName: node
linkType: hard
"@babel/generator@npm:^7.23.0":
version: 7.26.2
resolution: "@babel/generator@npm:7.26.2"
dependencies:
"@babel/parser": "npm:^7.26.2"
"@babel/types": "npm:^7.26.0"
"@babel/parser": "npm:^7.26.10"
"@babel/types": "npm:^7.26.10"
"@jridgewell/gen-mapping": "npm:^0.3.5"
"@jridgewell/trace-mapping": "npm:^0.3.25"
jsesc: "npm:^3.0.2"
checksum: 10c0/167ebce8977142f5012fad6bd91da51ac52bcd752f2261a54b7ab605d928aebe57e21636cdd2a9c7757e552652c68d9fcb5d40b06fcb66e02d9ee7526e118a5c
languageName: node
linkType: hard
"@babel/helper-environment-visitor@npm:^7.22.20":
version: 7.24.7
resolution: "@babel/helper-environment-visitor@npm:7.24.7"
dependencies:
"@babel/types": "npm:^7.24.7"
checksum: 10c0/36ece78882b5960e2d26abf13cf15ff5689bf7c325b10a2895a74a499e712de0d305f8d78bb382dd3c05cfba7e47ec98fe28aab5674243e0625cd38438dd0b2d
languageName: node
linkType: hard
"@babel/helper-function-name@npm:^7.23.0":
version: 7.24.7
resolution: "@babel/helper-function-name@npm:7.24.7"
dependencies:
"@babel/template": "npm:^7.24.7"
"@babel/types": "npm:^7.24.7"
checksum: 10c0/e5e41e6cf86bd0f8bf272cbb6e7c5ee0f3e9660414174435a46653efba4f2479ce03ce04abff2aa2ef9359cf057c79c06cb7b134a565ad9c0e8a50dcdc3b43c4
languageName: node
linkType: hard
"@babel/helper-hoist-variables@npm:^7.22.5":
version: 7.24.7
resolution: "@babel/helper-hoist-variables@npm:7.24.7"
dependencies:
"@babel/types": "npm:^7.24.7"
checksum: 10c0/19ee37563bbd1219f9d98991ad0e9abef77803ee5945fd85aa7aa62a67c69efca9a801696a1b58dda27f211e878b3327789e6fd2a6f6c725ccefe36774b5ce95
languageName: node
linkType: hard
"@babel/helper-split-export-declaration@npm:^7.22.6":
version: 7.24.7
resolution: "@babel/helper-split-export-declaration@npm:7.24.7"
dependencies:
"@babel/types": "npm:^7.24.7"
checksum: 10c0/0254577d7086bf09b01bbde98f731d4fcf4b7c3fa9634fdb87929801307c1f6202a1352e3faa5492450fa8da4420542d44de604daf540704ff349594a78184f6
checksum: 10c0/88b3b3ea80592fc89349c4e1a145e1386e4042866d2507298adf452bf972f68d13bf699a845e6ab8c028bd52c2247013eb1221b86e1db5c9779faacba9c4b10e
languageName: node
linkType: hard
@@ -84,81 +36,68 @@ __metadata:
languageName: node
linkType: hard
"@babel/helper-validator-identifier@npm:^7.16.7, @babel/helper-validator-identifier@npm:^7.25.9":
"@babel/helper-validator-identifier@npm:^7.25.9":
version: 7.25.9
resolution: "@babel/helper-validator-identifier@npm:7.25.9"
checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d
languageName: node
linkType: hard
"@babel/parser@npm:^7.20.5, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.2":
version: 7.26.2
resolution: "@babel/parser@npm:7.26.2"
"@babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.7, @babel/parser@npm:^7.26.9":
version: 7.26.10
resolution: "@babel/parser@npm:7.26.10"
dependencies:
"@babel/types": "npm:^7.26.0"
"@babel/types": "npm:^7.26.10"
bin:
parser: ./bin/babel-parser.js
checksum: 10c0/751a743087b3a9172a7599f1421830d44c38f065ef781588d2bfb1c98f9b461719a226feb13c868d7a284783eee120c88ea522593118f2668f46ebfb1105c4d7
checksum: 10c0/c47f5c0f63cd12a663e9dc94a635f9efbb5059d98086a92286d7764357c66bceba18ccbe79333e01e9be3bfb8caba34b3aaebfd8e62c3d5921c8cf907267be75
languageName: node
linkType: hard
"@babel/template@npm:^7.24.7":
version: 7.25.9
resolution: "@babel/template@npm:7.25.9"
"@babel/template@npm:^7.26.9":
version: 7.26.9
resolution: "@babel/template@npm:7.26.9"
dependencies:
"@babel/code-frame": "npm:^7.25.9"
"@babel/parser": "npm:^7.25.9"
"@babel/types": "npm:^7.25.9"
checksum: 10c0/ebe677273f96a36c92cc15b7aa7b11cc8bc8a3bb7a01d55b2125baca8f19cae94ff3ce15f1b1880fb8437f3a690d9f89d4e91f16fc1dc4d3eb66226d128983ab
"@babel/code-frame": "npm:^7.26.2"
"@babel/parser": "npm:^7.26.9"
"@babel/types": "npm:^7.26.9"
checksum: 10c0/019b1c4129cc01ad63e17529089c2c559c74709d225f595eee017af227fee11ae8a97a6ab19ae6768b8aa22d8d75dcb60a00b28f52e9fa78140672d928bc1ae9
languageName: node
linkType: hard
"@babel/traverse@npm:7.23.2":
version: 7.23.2
resolution: "@babel/traverse@npm:7.23.2"
"@babel/traverse@npm:^7.26.7":
version: 7.26.10
resolution: "@babel/traverse@npm:7.26.10"
dependencies:
"@babel/code-frame": "npm:^7.22.13"
"@babel/generator": "npm:^7.23.0"
"@babel/helper-environment-visitor": "npm:^7.22.20"
"@babel/helper-function-name": "npm:^7.23.0"
"@babel/helper-hoist-variables": "npm:^7.22.5"
"@babel/helper-split-export-declaration": "npm:^7.22.6"
"@babel/parser": "npm:^7.23.0"
"@babel/types": "npm:^7.23.0"
debug: "npm:^4.1.0"
"@babel/code-frame": "npm:^7.26.2"
"@babel/generator": "npm:^7.26.10"
"@babel/parser": "npm:^7.26.10"
"@babel/template": "npm:^7.26.9"
"@babel/types": "npm:^7.26.10"
debug: "npm:^4.3.1"
globals: "npm:^11.1.0"
checksum: 10c0/d096c7c4bab9262a2f658298a3c630ae4a15a10755bb257ae91d5ab3e3b2877438934859c8d34018b7727379fe6b26c4fa2efc81cf4c462a7fe00caf79fa02ff
checksum: 10c0/4e86bb4e3c30a6162bb91df86329df79d96566c3e2d9ccba04f108c30473a3a4fd360d9990531493d90f6a12004f10f616bf9b9229ca30c816b708615e9de2ac
languageName: node
linkType: hard
"@babel/types@npm:7.17.0":
version: 7.17.0
resolution: "@babel/types@npm:7.17.0"
dependencies:
"@babel/helper-validator-identifier": "npm:^7.16.7"
to-fast-properties: "npm:^2.0.0"
checksum: 10c0/ad09224272b40fedb00b262677d12b6838f5b5df5c47d67059ba1181bd4805439993393a8de32459dae137b536d60ebfcaf39ae84d8b3873f1e81cc75f5aeae8
languageName: node
linkType: hard
"@babel/types@npm:^7.17.0, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0":
version: 7.26.0
resolution: "@babel/types@npm:7.26.0"
"@babel/types@npm:^7.26.10, @babel/types@npm:^7.26.7, @babel/types@npm:^7.26.9":
version: 7.26.10
resolution: "@babel/types@npm:7.26.10"
dependencies:
"@babel/helper-string-parser": "npm:^7.25.9"
"@babel/helper-validator-identifier": "npm:^7.25.9"
checksum: 10c0/b694f41ad1597127e16024d766c33a641508aad037abd08d0d1f73af753e1119fa03b4a107d04b5f92cc19c095a594660547ae9bead1db2299212d644b0a5cb8
checksum: 10c0/7a7f83f568bfc3dfabfaf9ae3a97ab5c061726c0afa7dcd94226d4f84a81559da368ed79671e3a8039d16f12476cf110381a377ebdea07587925f69628200dac
languageName: node
linkType: hard
"@jridgewell/gen-mapping@npm:^0.3.5":
version: 0.3.5
resolution: "@jridgewell/gen-mapping@npm:0.3.5"
version: 0.3.8
resolution: "@jridgewell/gen-mapping@npm:0.3.8"
dependencies:
"@jridgewell/set-array": "npm:^1.2.1"
"@jridgewell/sourcemap-codec": "npm:^1.4.10"
"@jridgewell/trace-mapping": "npm:^0.3.24"
checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb
checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a
languageName: node
linkType: hard
@@ -193,30 +132,36 @@ __metadata:
languageName: node
linkType: hard
"@msgpack/msgpack@npm:^2.8.0":
version: 2.8.0
resolution: "@msgpack/msgpack@npm:2.8.0"
checksum: 10c0/5964ed3daad9ccf314238da81c91152dc693bca167b2469445c1d3ce0495443612e543d052281061a91ec48ed44a6a49dd3a334b5d0dbe2dc2db6ea6143e5787
"@msgpack/msgpack@npm:^3.1.1":
version: 3.1.1
resolution: "@msgpack/msgpack@npm:3.1.1"
checksum: 10c0/f7048d2145ee39e4979b4e6bb9d9723db031ea7b4f00d0ec96258fbff40b8af027783f391ee294e5385a5a91849a77d934ad08eb11d08253484eee8f8f0866ff
languageName: node
linkType: hard
"@trivago/prettier-plugin-sort-imports@npm:^4.3.0":
version: 4.3.0
resolution: "@trivago/prettier-plugin-sort-imports@npm:4.3.0"
"@trivago/prettier-plugin-sort-imports@npm:^5.2.2":
version: 5.2.2
resolution: "@trivago/prettier-plugin-sort-imports@npm:5.2.2"
dependencies:
"@babel/generator": "npm:7.17.7"
"@babel/parser": "npm:^7.20.5"
"@babel/traverse": "npm:7.23.2"
"@babel/types": "npm:7.17.0"
javascript-natural-sort: "npm:0.7.1"
"@babel/generator": "npm:^7.26.5"
"@babel/parser": "npm:^7.26.7"
"@babel/traverse": "npm:^7.26.7"
"@babel/types": "npm:^7.26.7"
javascript-natural-sort: "npm:^0.7.1"
lodash: "npm:^4.17.21"
peerDependencies:
"@vue/compiler-sfc": 3.x
prettier: 2.x - 3.x
prettier-plugin-svelte: 3.x
svelte: 4.x || 5.x
peerDependenciesMeta:
"@vue/compiler-sfc":
optional: true
checksum: 10c0/42270fb9c89e54a3f8b6ac8c43e6d0e03350e2857e902cdad4de22c78ef1864da600525595311bc7e94e51c16c7dd3882c2e048a162fdab59761ffa893756aa2
prettier-plugin-svelte:
optional: true
svelte:
optional: true
checksum: 10c0/2a4f0464f1f5a294bcd34558fb053f8263f0c62c4a7fcdd3ce40c9822a68ac8b4d951700ab6d01eb3919efe0ed44e4191997edd494d59679b22db1c0db00474e
languageName: node
linkType: hard
@@ -227,15 +172,15 @@ __metadata:
languageName: node
linkType: hard
"debug@npm:^4.1.0":
version: 4.3.7
resolution: "debug@npm:4.3.7"
"debug@npm:^4.3.1":
version: 4.4.0
resolution: "debug@npm:4.4.0"
dependencies:
ms: "npm:^2.1.3"
peerDependenciesMeta:
supports-color:
optional: true
checksum: 10c0/1471db19c3b06d485a622d62f65947a19a23fbd0dd73f7fd3eafb697eec5360cde447fb075919987899b1a2096e85d35d4eb5a4de09a57600ac9cf7e6c8e768b
checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de
languageName: node
linkType: hard
@@ -281,7 +226,7 @@ __metadata:
languageName: node
linkType: hard
"javascript-natural-sort@npm:0.7.1":
"javascript-natural-sort@npm:^0.7.1":
version: 0.7.1
resolution: "javascript-natural-sort@npm:0.7.1"
checksum: 10c0/340f8ffc5d30fb516e06dc540e8fa9e0b93c865cf49d791fed3eac3bdc5fc71f0066fc81d44ec1433edc87caecaf9f13eec4a1fce8c5beafc709a71eaedae6fe
@@ -295,21 +240,12 @@ __metadata:
languageName: node
linkType: hard
"jsesc@npm:^2.5.1":
version: 2.5.2
resolution: "jsesc@npm:2.5.2"
bin:
jsesc: bin/jsesc
checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88
languageName: node
linkType: hard
"jsesc@npm:^3.0.2":
version: 3.0.2
resolution: "jsesc@npm:3.0.2"
version: 3.1.0
resolution: "jsesc@npm:3.1.0"
bin:
jsesc: bin/jsesc
checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1
checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1
languageName: node
linkType: hard
@@ -324,11 +260,11 @@ __metadata:
version: 0.0.0-use.local
resolution: "mock-api@workspace:."
dependencies:
"@msgpack/msgpack": "npm:^2.8.0"
"@trivago/prettier-plugin-sort-imports": "npm:^4.3.0"
"@msgpack/msgpack": "npm:^3.1.1"
"@trivago/prettier-plugin-sort-imports": "npm:^5.2.2"
formidable: "npm:^3.5.2"
itty-router: "npm:^5.0.18"
prettier: "npm:^3.4.1"
prettier: "npm:^3.5.3"
languageName: unknown
linkType: soft
@@ -355,26 +291,12 @@ __metadata:
languageName: node
linkType: hard
"prettier@npm:^3.4.1":
version: 3.4.1
resolution: "prettier@npm:3.4.1"
"prettier@npm:^3.5.3":
version: 3.5.3
resolution: "prettier@npm:3.5.3"
bin:
prettier: bin/prettier.cjs
checksum: 10c0/2d6cc3101ad9de72b49c59339480b0983e6ff6742143da0c43f476bf3b5ef88ede42ebd9956d7a0a8fa59f7a5990e8ef03c9ad4c37f7e4c9e5db43ee0853156c
languageName: node
linkType: hard
"source-map@npm:^0.5.0":
version: 0.5.7
resolution: "source-map@npm:0.5.7"
checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599
languageName: node
linkType: hard
"to-fast-properties@npm:^2.0.0":
version: 2.0.0
resolution: "to-fast-properties@npm:2.0.0"
checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7
checksum: 10c0/3880cb90b9dc0635819ab52ff571518c35bd7f15a6e80a2054c05dbc8a3aa6e74f135519e91197de63705bcb38388ded7e7230e2178432a1468005406238b877
languageName: node
linkType: hard