feature: intention detection by nlp.js, with demo of showing weather
This commit is contained in:
parent
669ad510ed
commit
421e4fcdb8
42
components/search/onesearch/handleNLUResult.ts
Normal file
42
components/search/onesearch/handleNLUResult.ts
Normal file
@ -0,0 +1,42 @@
|
||||
import { suggestionItem } from "@/global";
|
||||
import { findClosestDateIndex } from "@/lib/weather/getCurrentWeather";
|
||||
import { getLocationNative } from "@/lib/weather/getLocation";
|
||||
import { getWeather } from "@/lib/weather/getWeather";
|
||||
import { WMOCodeTable } from "@/lib/weather/wmocode";
|
||||
|
||||
type UpdateSuggestionFunction = (data: suggestionItem[]) => void;
|
||||
|
||||
export function handleNLUResult(result: any, updateSuggestion: UpdateSuggestionFunction){
|
||||
if (result.intent == "weather.summary") {
|
||||
getLocationNative((data: GeolocationCoordinates | GeolocationPositionError) => {
|
||||
console.log(data);
|
||||
if (data instanceof GeolocationCoordinates) {
|
||||
getWeather(data.latitude, data.longitude).then((weather) => {
|
||||
console.log(weather["hourly"]);
|
||||
let hourIndex = findClosestDateIndex(
|
||||
weather["hourly"]["time"],
|
||||
weather["utc_offset_seconds"]
|
||||
);
|
||||
let temp = weather["hourly"]["apparent_temperature"][hourIndex];
|
||||
let weatherCode = weather["hourly"]["weather_code"][hourIndex];
|
||||
console.log(temp, weatherCode, hourIndex);
|
||||
updateSuggestion([
|
||||
{
|
||||
type: "text",
|
||||
suggestion: `Weather: ${temp}${weather["hourly_units"]["apparent_temperature"]}, ${WMOCodeTable[weatherCode]["day"].description}`,
|
||||
relevance: 3000 * result.score
|
||||
}
|
||||
]);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (result.intent !== "None") {
|
||||
updateSuggestion([
|
||||
{
|
||||
type: "text",
|
||||
suggestion: result.intent,
|
||||
relevance: 2200 * result.score
|
||||
}
|
||||
]);
|
||||
}
|
||||
}
|
@ -11,12 +11,19 @@ import validLink from "@/lib/url/validLink";
|
||||
import Link from "./link";
|
||||
import { selectedSuggestionState } from "@/components/state/suggestionSelection";
|
||||
import { settingsState } from "@/components/state/settings";
|
||||
import { base64NLP } from "@/lib/onesearch/baseCheck";
|
||||
import PlainText from "./plainText";
|
||||
import { sendError } from "@/lib/telemetering/sendError";
|
||||
import { NLU } from "@/lib/nlp/load";
|
||||
import { getLocationNative } from "@/lib/weather/getLocation";
|
||||
import { getWeather } from "@/lib/weather/getWeather";
|
||||
import { findClosestDateIndex, getClosestHourTimestamp } from "@/lib/weather/getCurrentWeather";
|
||||
import { WMOCodeTable } from "@/lib/weather/wmocode";
|
||||
import { handleNLUResult } from "./handleNLUResult";
|
||||
|
||||
export default function () {
|
||||
const [suggestion, setFinalSuggetsion] = useRecoilState(suggestionsState);
|
||||
const [location, setLocation] = useState(null);
|
||||
const [manager, setManager] = useState(null);
|
||||
const lastRequestTimeRef = useRef(0);
|
||||
const selected = useRecoilValue(selectedSuggestionState);
|
||||
const settings = useRecoilValue(settingsState);
|
||||
@ -78,6 +85,15 @@ export default function () {
|
||||
});
|
||||
}
|
||||
|
||||
const NLUModel = new NLU();
|
||||
|
||||
useEffect(() => {
|
||||
NLUModel.init().then((nlu) => {
|
||||
setManager(nlu.manager);
|
||||
console.log(nlu.manager);
|
||||
});
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
cleanSuggestion("default-link", "default", "text");
|
||||
if (validLink(query)) {
|
||||
@ -94,9 +110,13 @@ export default function () {
|
||||
}
|
||||
]);
|
||||
}
|
||||
const b64 = base64NLP(query);
|
||||
if (b64.suggestion !== null) {
|
||||
updateSuggestion([b64 as suggestionItem]);
|
||||
|
||||
if (manager != null) {
|
||||
// @ts-ignore
|
||||
manager.process(query).then((result) => {
|
||||
console.log(result);
|
||||
handleNLUResult(result, updateSuggestion);
|
||||
});
|
||||
}
|
||||
}, [query, engineName]);
|
||||
|
||||
|
@ -1,19 +1,32 @@
|
||||
import { NLPResult } from "../onesearch/NLPResult";
|
||||
import { stopwords } from "./stopwords";
|
||||
|
||||
class NLP {
|
||||
export class NLP {
|
||||
result: NLPResult;
|
||||
constructor(
|
||||
public query: String,
|
||||
public task: String
|
||||
public task: String,
|
||||
public intentionKeywords?: String[],
|
||||
) {
|
||||
this.result = new NLPResult();
|
||||
}
|
||||
public removeStopwords(str: string, extraStopwords: string[] = [], disableDefault: boolean = false){
|
||||
public removeStopwords(extraStopwords: string[] = [], disableDefault: boolean = false){
|
||||
const list = disableDefault ? extraStopwords : stopwords.concat(extraStopwords);
|
||||
for (let word of list){
|
||||
str = str.replace(new RegExp(`\\b${word}\\b`, 'gi'), '');
|
||||
if (list.includes(this.query.trim())) {
|
||||
this.query = "";
|
||||
}
|
||||
return str;
|
||||
for (let word of list){
|
||||
this.query = this.query.replace(new RegExp(`\\b${word}\\b`, 'gi'), '');
|
||||
}
|
||||
}
|
||||
public extractSlots(str: string, useNER = false): string[]{
|
||||
const slots: string[] = [];
|
||||
|
||||
return slots;
|
||||
}
|
||||
public trim() {
|
||||
this.query = this.query.trim();
|
||||
const wordList = this.query.split(" ").filter(word => word !== "");
|
||||
this.query = wordList.join(" ");
|
||||
}
|
||||
}
|
134
lib/nlp/data/en.json
Normal file
134
lib/nlp/data/en.json
Normal file
@ -0,0 +1,134 @@
|
||||
{
|
||||
"weather.summary": [
|
||||
"how's the weather",
|
||||
"What's going on with the weather?",
|
||||
"Can you give me an update on the weather?",
|
||||
"How's the forecast looking today?",
|
||||
"Give me a summary of the current weather.",
|
||||
"Can you tell me the current weather?",
|
||||
"What is the weather situation at the moment?",
|
||||
"Could you provide a quick weather update?",
|
||||
"Is it raining or sunny outside?",
|
||||
"What's the weather like right now?",
|
||||
"Tell me the current weather conditions.",
|
||||
"How about the weather today?",
|
||||
"Is it a good day to be outside?",
|
||||
"What should I expect in terms of weather today?",
|
||||
"Is there any severe weather to be aware of?",
|
||||
"Can you summarize today's weather forecast?",
|
||||
"What's the weather looking like for the next few hours?",
|
||||
"Is it going to stay this way all day?",
|
||||
"Could you give me a brief overview of the weather?",
|
||||
"What's the general weather situation in our area?",
|
||||
"Is it cloudy or clear outside?",
|
||||
"Any weather alerts I should know about?",
|
||||
"How's the weather looking for outdoor activities?",
|
||||
"What's the forecast saying for today's weather?",
|
||||
"Is it going to be a warm day?",
|
||||
"Are we expecting any storms today?",
|
||||
"What's the weather condition outside my window?",
|
||||
"Is it a typical day for this season in terms of weather?",
|
||||
"how's the weather now?"
|
||||
],
|
||||
|
||||
"weather.temp": [
|
||||
"What's the temperature like right now?",
|
||||
"Can you tell me the current temperature?",
|
||||
"How hot is it outside?",
|
||||
"What's the temperature supposed to be today?",
|
||||
"What is the current temp outside?",
|
||||
"Could you tell me the outdoor temperature?",
|
||||
"Is it cold or warm outside?",
|
||||
"What's the high temperature for today?",
|
||||
"What's the low temperature expected tonight?",
|
||||
"How does the temperature feel outside?",
|
||||
"Is it going to get warmer or cooler today?",
|
||||
"What's the temperature in the shade?",
|
||||
"Can you provide the current temp in Celsius?",
|
||||
"What's the temperature in Fahrenheit right now?",
|
||||
"Is it too hot to be outside?",
|
||||
"What's the temperature like in the morning?",
|
||||
"How about the temperature in the evening?",
|
||||
"Is it warm enough to go swimming?",
|
||||
"What's the temperature in the city center?",
|
||||
"Can you tell me the temp in the nearby area?",
|
||||
"Is it below freezing outside?",
|
||||
"What's the average temperature for today?",
|
||||
"Is the temperature dropping or rising?",
|
||||
"What should I wear considering the temperature?"
|
||||
],
|
||||
|
||||
"base64.encode": [
|
||||
"Please encode this data with base64: %s",
|
||||
"I need to encode the following data in base64: %s",
|
||||
"Could you encode this string using base64? %s",
|
||||
"Convert this data to b64 encoding: %s",
|
||||
"I want to encode this information with base64: %s",
|
||||
"Help me encode this in base64: %s",
|
||||
"Can you encode this data to base64 format? %s",
|
||||
"b64 encode",
|
||||
"base64 encode",
|
||||
"encode base64 %s"
|
||||
],
|
||||
|
||||
"base64.decode": [
|
||||
"Please decode this base64 data: %s",
|
||||
"I have a base64 encoded string that needs decoding: %s",
|
||||
"Could you decode this base64 string for me? %s",
|
||||
"Convert this base64 encoded data back to its original form: %s",
|
||||
"I need to decode this base64 information: %s",
|
||||
"Help me decode this base64 data: %s",
|
||||
"Can you translate this base64 back to normal text? %s",
|
||||
"b64 decode",
|
||||
"base64 decode",
|
||||
"decode base64 %s"
|
||||
],
|
||||
|
||||
"url.encode": [
|
||||
"Please encode this URL: %s",
|
||||
"I need to encode this URL component: %s",
|
||||
"Could you encode this part of the URL? %s",
|
||||
"Convert this URL to its encoded form: %s",
|
||||
"I want to encode this URL for safe transmission: %s",
|
||||
"Help me encode this URL segment: %s",
|
||||
"Can you encode this URL data? %s"
|
||||
],
|
||||
|
||||
"url.decode": [
|
||||
"Please decode this URL: %s",
|
||||
"I have an encoded URL that needs decoding: %s",
|
||||
"Could you decode this URL for me? %s",
|
||||
"Convert this encoded URL back to its original form: %s",
|
||||
"I need to decode this URL component: %s",
|
||||
"Help me decode this URL segment: %s",
|
||||
"Can you translate this encoded URL back to normal? %s"
|
||||
],
|
||||
|
||||
"html.encode": [
|
||||
"Please encode this HTML entity: %s",
|
||||
"I need to encode this text to HTML entity: %s",
|
||||
"Could you encode this as an HTML entity? %s",
|
||||
"Convert this text to HTML entity encoding: %s",
|
||||
"I want to encode this to prevent HTML interpretation: %s",
|
||||
"Help me encode this into HTML entity: %s",
|
||||
"Can you encode this for HTML usage? %s"
|
||||
],
|
||||
|
||||
"html.decode": [
|
||||
"Please decode this HTML entity: %s",
|
||||
"I have an HTML entity that needs decoding: %s",
|
||||
"Could you decode this HTML entity for me? %s",
|
||||
"Convert this HTML entity back to its original text: %s",
|
||||
"I need to decode this HTML entity to plain text: %s",
|
||||
"Help me decode this HTML entity: %s",
|
||||
"Can you translate this HTML entity back to normal text? %s"
|
||||
],
|
||||
|
||||
"None": [
|
||||
"free weather api",
|
||||
"js get timezone",
|
||||
"how",
|
||||
"how's",
|
||||
"how's the"
|
||||
]
|
||||
}
|
124
lib/nlp/data/zh.json
Normal file
124
lib/nlp/data/zh.json
Normal file
@ -0,0 +1,124 @@
|
||||
{
|
||||
"weather.summary": [
|
||||
"天气如何",
|
||||
"现在的天气",
|
||||
"今天的天气预报",
|
||||
"现在的天气状况",
|
||||
"今天天气怎么样",
|
||||
"目前是什么天气",
|
||||
"今天的天气概述",
|
||||
"当前天气状况如何",
|
||||
"今天会下雨吗",
|
||||
"今天会下雪吗",
|
||||
"今天晴天吗",
|
||||
"今天的天气状况如何",
|
||||
"现在外面是什么天气",
|
||||
"今天天气好么",
|
||||
"今天适合外出吗",
|
||||
"今天的天气适宜做什么",
|
||||
"今天有没有雾霾",
|
||||
"今天的空气质量如何",
|
||||
"今天的紫外线指数是多少",
|
||||
"今天有没有大风",
|
||||
"今天会不会很冷",
|
||||
"今天的天气会变化吗",
|
||||
"今天晚上的天气如何",
|
||||
"今天夜里会下雨吗",
|
||||
"今天的天气对出行有影响吗",
|
||||
"今天的天气对运动有影响吗",
|
||||
"今天的天气对工作有影响吗",
|
||||
"今天的天气对旅游有影响吗",
|
||||
"今天的天气对健康有影响吗"
|
||||
],
|
||||
"weather.temp": [
|
||||
"现在的温度",
|
||||
"现在多少度",
|
||||
"外面有多热",
|
||||
"明天热不热?",
|
||||
"现在的气温是多少",
|
||||
"今天最高温度是多少",
|
||||
"今天最低温度是多少",
|
||||
"现在外面感觉冷吗",
|
||||
"现在需要穿外套吗",
|
||||
"现在适合穿短袖吗",
|
||||
"现在的温度适合外出吗",
|
||||
"现在的温度适合运动吗",
|
||||
"现在的温度适合睡觉吗",
|
||||
"明天会比今天热吗",
|
||||
"明天会比今天冷吗",
|
||||
"今天的温度变化大吗",
|
||||
"现在的温度适合开空调吗",
|
||||
"现在的温度适合开暖气吗",
|
||||
"室外的温度是多少",
|
||||
"室内的温度是多少",
|
||||
"现在的温度适合种植吗",
|
||||
"现在的温度适合养宠物吗",
|
||||
"现在的温度对健康有影响吗",
|
||||
"现在的温度是否舒适",
|
||||
"现在的温度是否适合工作"
|
||||
],
|
||||
"base64.encode": [
|
||||
"请将数据使用base64编码:%s",
|
||||
"需要将以下数据base64编码:%s",
|
||||
"请将此字符串转为base64:%s",
|
||||
"将数据转为base64编码:%s",
|
||||
"信息base64编码:%s",
|
||||
"请帮忙编码base64:%s",
|
||||
"将数据编码为base64:%s"
|
||||
],
|
||||
|
||||
"base64.decode": [
|
||||
"请解码这个base64数据:%s",
|
||||
"有base64编码字符串需要解码:%s",
|
||||
"帮忙解码base64:%s",
|
||||
"将base64编码转回原数据:%s",
|
||||
"解码base64信息:%s",
|
||||
"解码这个base64:%s",
|
||||
"将base64转文本:%s"
|
||||
],
|
||||
|
||||
"url.encode": [
|
||||
"请编码这个URL:%s",
|
||||
"URL部分需要编码:%s",
|
||||
"请将URL部分编码:%s",
|
||||
"URL编码转换:%s",
|
||||
"安全传输需编码URL:%s",
|
||||
"编码URL段:%s",
|
||||
"URL数据编码:%s"
|
||||
],
|
||||
|
||||
"url.decode": [
|
||||
"请解码这个URL:%s",
|
||||
"有URL编码需要解码:%s",
|
||||
"解码这个URL:%s",
|
||||
"URL编码转回原URL:%s",
|
||||
"解码URL部分:%s",
|
||||
"解码URL段:%s",
|
||||
"URL编码转文本:%s"
|
||||
],
|
||||
|
||||
"html.encode": [
|
||||
"请编码HTML实体:%s",
|
||||
"文本转为HTML实体:%s",
|
||||
"编码为HTML实体:%s",
|
||||
"文本HTML实体编码:%s",
|
||||
"预防HTML解析编码:%s",
|
||||
"HTML实体编码:%s",
|
||||
"文本HTML使用编码:%s"
|
||||
],
|
||||
|
||||
"html.decode": [
|
||||
"请解码HTML实体:%s",
|
||||
"HTML实体需要解码:%s",
|
||||
"解码HTML实体:%s",
|
||||
"HTML实体转回文本:%s",
|
||||
"HTML实体解码:%s",
|
||||
"解码HTML实体:%s",
|
||||
"HTML实体转文本:%s"
|
||||
],
|
||||
|
||||
"None": [
|
||||
"你好",
|
||||
"为什么计算机使用二进制"
|
||||
]
|
||||
}
|
55
lib/nlp/load.ts
Normal file
55
lib/nlp/load.ts
Normal file
@ -0,0 +1,55 @@
|
||||
// @ts-ignore
|
||||
import { containerBootstrap } from "@nlpjs/core";
|
||||
// @ts-ignore
|
||||
import { Nlp } from "@nlpjs/nlp";
|
||||
// @ts-ignore
|
||||
import { NluManager, NluNeural } from "@nlpjs/nlu";
|
||||
// @ts-ignore
|
||||
import { LangEn } from "@nlpjs/lang-en-min";
|
||||
// @ts-ignore
|
||||
import { LangZh } from "@nlpjs/lang-zh";
|
||||
import * as fflate from 'fflate';
|
||||
|
||||
let zh: TrainData = {};
|
||||
let en: TrainData = {};
|
||||
|
||||
type TrainData = {
|
||||
[key: string]: string[];
|
||||
};
|
||||
|
||||
export class NLU {
|
||||
manager: any;
|
||||
inited: boolean = false;
|
||||
async loadIntentionModel() {
|
||||
const container = await containerBootstrap();
|
||||
container.use(Nlp);
|
||||
container.use(LangEn);
|
||||
container.use(LangZh);
|
||||
container.use(NluNeural);
|
||||
const manager = new NluManager({
|
||||
container,
|
||||
locales: ["en", "zh"],
|
||||
nlu: {
|
||||
useNoneFeature: true
|
||||
}
|
||||
});
|
||||
const response = await fetch("/model");
|
||||
|
||||
const responseBuf = await response.arrayBuffer();
|
||||
const compressed = new Uint8Array(responseBuf);
|
||||
const decompressed = fflate.decompressSync(compressed);
|
||||
const modelText = fflate.strFromU8(decompressed);
|
||||
manager.fromJSON(JSON.parse(modelText));
|
||||
this.manager = manager;
|
||||
// console.log(this.manager);
|
||||
}
|
||||
async init() {
|
||||
await this.loadIntentionModel();
|
||||
this.inited = true;
|
||||
return this;
|
||||
}
|
||||
async process(lang: string, text: string): Promise<any> {
|
||||
const actual = await this.manager.process(lang, text);
|
||||
return actual;
|
||||
}
|
||||
}
|
@ -1 +1,3 @@
|
||||
export const stopwords = ["a","about","above","after","again","against","all","am","an","and","any","are","aren't","as","at","be","because","been","before","being","below","between","both","but","by","can't","cannot","could","couldn't","did","didn't","do","does","doesn't","doing","don't","down","during","each","few","for","from","further","had","hadn't","has","hasn't","have","haven't","having","he","he'd","he'll","he's","her","here","here's","hers","herself","him","himself","his","how","how's","i","i'd","i'll","i'm","i've","if","in","into","is","isn't","it","it's","its","itself","let's","me","more","most","mustn't","my","myself","no","nor","not","of","off","on","once","only","or","other","ought","our","ours ourselves","out","over","own","same","shan't","she","she'd","she'll","she's","should","shouldn't","so","some","such","than","that","that's","the","their","theirs","them","themselves","then","there","there's","these","they","they'd","they'll","they're","they've","this","those","through","to","too","under","until","up","very","was","wasn't","we","we'd","we'll","we're","we've","were","weren't","what","what's","when","when's","where","where's","which","while","who","who's","whom","why","why's","with","won't","would","wouldn't","you","you'd","you'll","you're","you've","your","yours","yourself","yourselves"];
|
||||
export const stopwords = ["a","about","above","after","again","against","all","am","an","and","any","are","aren't","as","at","be","because","been","before","being","below","between","both","but","by","can't","cannot","could","couldn't","did","didn't","do","does","doesn't","doing","don't","down","during","each","few","for","from","further","had","hadn't","has","hasn't","have","haven't","having","he","he'd","he'll","he's","her","here","here's","hers","herself","him","himself","his","how","how's","i","i'd","i'll","i'm","i've","if","in","into","is","isn't","it","it's","its","itself","let's","me","more","most","mustn't","my","myself","no","nor","not","of","off","on","once","only","or","other","ought","our","ours","ourselves","out","over","own","please","same","shan't","she","she'd","she'll","she's","should","shouldn't","so","some","such","than","that","that's","the","their","theirs","them","themselves","then","there","there's","these","they","they'd","they'll","they're","they've","this","those","through","to","too","under","until","up","very","was","wasn't","we","we'd","we'll","we're","we've","were","weren't","what","what's","when","when's","where","where's","which","while","who","who's","whom","why","why's","with","won't","would","wouldn't","you","you'd","you'll","you're","you've","your","yours","yourself","yourselves"];
|
||||
|
||||
export const convertStopwords = ["transform", "change", "translate", "convert"];
|
76
lib/nlp/train.ts
Normal file
76
lib/nlp/train.ts
Normal file
@ -0,0 +1,76 @@
|
||||
// @ts-ignore
|
||||
import { containerBootstrap } from "@nlpjs/core";
|
||||
// @ts-ignore
|
||||
import { Nlp } from "@nlpjs/nlp";
|
||||
// @ts-ignore
|
||||
import { NluManager, NluNeural } from "@nlpjs/nlu";
|
||||
// @ts-ignore
|
||||
import { LangEn } from "@nlpjs/lang-en-min";
|
||||
// @ts-ignore
|
||||
import { LangZh } from "@nlpjs/lang-zh";
|
||||
import fs from "node:fs";
|
||||
import * as fflate from 'fflate';
|
||||
|
||||
let zh: TrainData = {};
|
||||
let en: TrainData = {};
|
||||
|
||||
type TrainData = {
|
||||
[key: string]: string[];
|
||||
};
|
||||
|
||||
export async function trainIntentionModel() {
|
||||
try {
|
||||
const dataZH = fs.readFileSync("./lib/nlp/data/zh.json", "utf8");
|
||||
const dataEN = fs.readFileSync("./lib/nlp/data/en.json", "utf8");
|
||||
zh = JSON.parse(dataZH);
|
||||
en = JSON.parse(dataEN);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
|
||||
const container = await containerBootstrap();
|
||||
container.use(Nlp);
|
||||
container.use(LangEn);
|
||||
container.use(LangZh);
|
||||
container.use(NluNeural);
|
||||
const manager = new NluManager({
|
||||
container,
|
||||
locales: ["en", "zh"],
|
||||
nlu: {
|
||||
useNoneFeature: true
|
||||
}
|
||||
});
|
||||
// Adds the utterances and intents for the NLP
|
||||
|
||||
for (const key in zh) {
|
||||
for (const value of zh[key]) {
|
||||
manager.add("zh", value, key);
|
||||
}
|
||||
}
|
||||
|
||||
for (const key in en) {
|
||||
for (const value of en[key]) {
|
||||
manager.add("en", value, key);
|
||||
}
|
||||
}
|
||||
|
||||
await manager.train();
|
||||
|
||||
// let actual = await manager.process("en", "base64 decode bilibili");
|
||||
// console.log(actual);
|
||||
// let actualZH = await manager.process("zh", "去除百分号");
|
||||
// console.log(actualZH);
|
||||
|
||||
const resultModel = manager.toJSON();
|
||||
|
||||
const buf = fflate.strToU8(JSON.stringify(resultModel));
|
||||
|
||||
const gzipped = fflate.gzipSync(buf, {
|
||||
filename: 'model.json',
|
||||
mtime: new Date().getTime()
|
||||
});
|
||||
|
||||
fs.writeFileSync("./public/model", Buffer.from(gzipped));
|
||||
}
|
||||
|
||||
trainIntentionModel();
|
@ -1,3 +1,3 @@
|
||||
export const SPARKHOME_VERSION="4.14.3";
|
||||
export const CLIENT_VERSION="4.14.2";
|
||||
export const SPARKHOME_VERSION="4.17.0";
|
||||
export const CLIENT_VERSION="4.17.0";
|
||||
export const NEXT_API_VERSION="4.14.3";
|
39
lib/weather/getCurrentWeather.ts
Normal file
39
lib/weather/getCurrentWeather.ts
Normal file
@ -0,0 +1,39 @@
|
||||
export function getClosestHourTimestamp(): string {
|
||||
const now = new Date();
|
||||
now.setMinutes(0, 0, 0); // 设置分钟、秒和毫秒为0
|
||||
|
||||
// 获取本地时间的年份、月份、日期、小时
|
||||
const year = now.getFullYear();
|
||||
const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始
|
||||
const day = String(now.getDate()).padStart(2, '0');
|
||||
const hour = String(now.getHours()).padStart(2, '0');
|
||||
|
||||
// 拼接成所需的格式
|
||||
const localHourTimestamp = `${year}-${month}-${day}T${hour}:00`;
|
||||
|
||||
return localHourTimestamp;
|
||||
}
|
||||
|
||||
export function findClosestDateIndex(dates: string[], utc_offset_seconds: number): number {
|
||||
const now = new Date();
|
||||
const nowTimestamp = now.getTime();
|
||||
const offsetMilliseconds = utc_offset_seconds * 1000;
|
||||
|
||||
let closestIndex = -1;
|
||||
let closestDiff = Infinity;
|
||||
|
||||
for (let i = 0; i < dates.length; i++) {
|
||||
const date = new Date(dates[i]);
|
||||
const adjustedTimestamp = date.getTime();
|
||||
|
||||
if (adjustedTimestamp <= nowTimestamp) {
|
||||
const diff = nowTimestamp - adjustedTimestamp;
|
||||
if (diff < closestDiff) {
|
||||
closestDiff = diff;
|
||||
closestIndex = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return closestIndex;
|
||||
}
|
17
lib/weather/getLocation.ts
Normal file
17
lib/weather/getLocation.ts
Normal file
@ -0,0 +1,17 @@
|
||||
const options = {
|
||||
enableHighAccuracy: true,
|
||||
timeout: 10000,
|
||||
maximumAge: 3600
|
||||
};
|
||||
|
||||
export function getLocationNative(callback: Function) {
|
||||
navigator.geolocation.getCurrentPosition(
|
||||
(pos: GeolocationPosition) => {
|
||||
callback(pos.coords);
|
||||
},
|
||||
(err: GeolocationPositionError) => {
|
||||
callback(err);
|
||||
},
|
||||
options
|
||||
);
|
||||
}
|
23
lib/weather/getWeather.ts
Normal file
23
lib/weather/getWeather.ts
Normal file
@ -0,0 +1,23 @@
|
||||
export async function getWeather(lat: number, lon: number) {
|
||||
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||||
const cacheKey = `weather-cache-${lat.toFixed(2)}-${lon.toFixed(2)}-${timezone}`;
|
||||
const localData = localStorage.getItem(cacheKey);
|
||||
if (localData != null) {
|
||||
console.log('Using cache');
|
||||
const parsedLocalData = JSON.parse(localData);
|
||||
if (parsedLocalData["hourly"]["time"][0] != undefined &&
|
||||
new Date().getTime() - new Date(parsedLocalData["hourly"]["time"][0]).getTime() < 86400 * 1000
|
||||
) {
|
||||
return parsedLocalData;
|
||||
}
|
||||
else {
|
||||
console.log('Cache expired');
|
||||
localStorage.removeItem(cacheKey);
|
||||
}
|
||||
}
|
||||
const url = `https://api.open-meteo.com/v1/cma?latitude=${lat.toString()}&longitude=${lon.toString()}&hourly=apparent_temperature,precipitation,weather_code&timezone=${encodeURIComponent(timezone)}&forecast_days=1`;
|
||||
const response = await fetch(url);
|
||||
const responseJson = await response.json();
|
||||
localStorage.setItem(cacheKey, JSON.stringify(responseJson));
|
||||
return responseJson;
|
||||
}
|
294
lib/weather/wmocode.ts
Normal file
294
lib/weather/wmocode.ts
Normal file
@ -0,0 +1,294 @@
|
||||
type WeatherInfo = {
|
||||
description: string;
|
||||
image: string;
|
||||
};
|
||||
|
||||
type WMOCodeTable = {
|
||||
[key: string]: {
|
||||
day: WeatherInfo;
|
||||
night: WeatherInfo;
|
||||
};
|
||||
};
|
||||
|
||||
export let WMOCodeTable: WMOCodeTable = {
|
||||
"0": {
|
||||
day: {
|
||||
description: "Sunny",
|
||||
image: "http://openweathermap.org/img/wn/01d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Clear",
|
||||
image: "http://openweathermap.org/img/wn/01n@2x.png"
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
day: {
|
||||
description: "Mainly Sunny",
|
||||
image: "http://openweathermap.org/img/wn/01d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Mainly Clear",
|
||||
image: "http://openweathermap.org/img/wn/01n@2x.png"
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
day: {
|
||||
description: "Partly Cloudy",
|
||||
image: "http://openweathermap.org/img/wn/02d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Partly Cloudy",
|
||||
image: "http://openweathermap.org/img/wn/02n@2x.png"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
day: {
|
||||
description: "Cloudy",
|
||||
image: "http://openweathermap.org/img/wn/03d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Cloudy",
|
||||
image: "http://openweathermap.org/img/wn/03n@2x.png"
|
||||
}
|
||||
},
|
||||
"45": {
|
||||
day: {
|
||||
description: "Foggy",
|
||||
image: "http://openweathermap.org/img/wn/50d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Foggy",
|
||||
image: "http://openweathermap.org/img/wn/50n@2x.png"
|
||||
}
|
||||
},
|
||||
"48": {
|
||||
day: {
|
||||
description: "Rime Fog",
|
||||
image: "http://openweathermap.org/img/wn/50d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Rime Fog",
|
||||
image: "http://openweathermap.org/img/wn/50n@2x.png"
|
||||
}
|
||||
},
|
||||
"51": {
|
||||
day: {
|
||||
description: "Light Drizzle",
|
||||
image: "http://openweathermap.org/img/wn/09d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Light Drizzle",
|
||||
image: "http://openweathermap.org/img/wn/09n@2x.png"
|
||||
}
|
||||
},
|
||||
"53": {
|
||||
day: {
|
||||
description: "Drizzle",
|
||||
image: "http://openweathermap.org/img/wn/09d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Drizzle",
|
||||
image: "http://openweathermap.org/img/wn/09n@2x.png"
|
||||
}
|
||||
},
|
||||
"55": {
|
||||
day: {
|
||||
description: "Heavy Drizzle",
|
||||
image: "http://openweathermap.org/img/wn/09d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Heavy Drizzle",
|
||||
image: "http://openweathermap.org/img/wn/09n@2x.png"
|
||||
}
|
||||
},
|
||||
"56": {
|
||||
day: {
|
||||
description: "Light Freezing Drizzle",
|
||||
image: "http://openweathermap.org/img/wn/09d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Light Freezing Drizzle",
|
||||
image: "http://openweathermap.org/img/wn/09n@2x.png"
|
||||
}
|
||||
},
|
||||
"57": {
|
||||
day: {
|
||||
description: "Freezing Drizzle",
|
||||
image: "http://openweathermap.org/img/wn/09d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Freezing Drizzle",
|
||||
image: "http://openweathermap.org/img/wn/09n@2x.png"
|
||||
}
|
||||
},
|
||||
"61": {
|
||||
day: {
|
||||
description: "Light Rain",
|
||||
image: "http://openweathermap.org/img/wn/10d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Light Rain",
|
||||
image: "http://openweathermap.org/img/wn/10n@2x.png"
|
||||
}
|
||||
},
|
||||
"63": {
|
||||
day: {
|
||||
description: "Rain",
|
||||
image: "http://openweathermap.org/img/wn/10d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Rain",
|
||||
image: "http://openweathermap.org/img/wn/10n@2x.png"
|
||||
}
|
||||
},
|
||||
"65": {
|
||||
day: {
|
||||
description: "Heavy Rain",
|
||||
image: "http://openweathermap.org/img/wn/10d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Heavy Rain",
|
||||
image: "http://openweathermap.org/img/wn/10n@2x.png"
|
||||
}
|
||||
},
|
||||
"66": {
|
||||
day: {
|
||||
description: "Light Freezing Rain",
|
||||
image: "http://openweathermap.org/img/wn/10d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Light Freezing Rain",
|
||||
image: "http://openweathermap.org/img/wn/10n@2x.png"
|
||||
}
|
||||
},
|
||||
"67": {
|
||||
day: {
|
||||
description: "Freezing Rain",
|
||||
image: "http://openweathermap.org/img/wn/10d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Freezing Rain",
|
||||
image: "http://openweathermap.org/img/wn/10n@2x.png"
|
||||
}
|
||||
},
|
||||
"71": {
|
||||
day: {
|
||||
description: "Light Snow",
|
||||
image: "http://openweathermap.org/img/wn/13d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Light Snow",
|
||||
image: "http://openweathermap.org/img/wn/13n@2x.png"
|
||||
}
|
||||
},
|
||||
"73": {
|
||||
day: {
|
||||
description: "Snow",
|
||||
image: "http://openweathermap.org/img/wn/13d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Snow",
|
||||
image: "http://openweathermap.org/img/wn/13n@2x.png"
|
||||
}
|
||||
},
|
||||
"75": {
|
||||
day: {
|
||||
description: "Heavy Snow",
|
||||
image: "http://openweathermap.org/img/wn/13d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Heavy Snow",
|
||||
image: "http://openweathermap.org/img/wn/13n@2x.png"
|
||||
}
|
||||
},
|
||||
"77": {
|
||||
day: {
|
||||
description: "Snow Grains",
|
||||
image: "http://openweathermap.org/img/wn/13d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Snow Grains",
|
||||
image: "http://openweathermap.org/img/wn/13n@2x.png"
|
||||
}
|
||||
},
|
||||
"80": {
|
||||
day: {
|
||||
description: "Light Showers",
|
||||
image: "http://openweathermap.org/img/wn/09d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Light Showers",
|
||||
image: "http://openweathermap.org/img/wn/09n@2x.png"
|
||||
}
|
||||
},
|
||||
"81": {
|
||||
day: {
|
||||
description: "Showers",
|
||||
image: "http://openweathermap.org/img/wn/09d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Showers",
|
||||
image: "http://openweathermap.org/img/wn/09n@2x.png"
|
||||
}
|
||||
},
|
||||
"82": {
|
||||
day: {
|
||||
description: "Heavy Showers",
|
||||
image: "http://openweathermap.org/img/wn/09d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Heavy Showers",
|
||||
image: "http://openweathermap.org/img/wn/09n@2x.png"
|
||||
}
|
||||
},
|
||||
"85": {
|
||||
day: {
|
||||
description: "Light Snow Showers",
|
||||
image: "http://openweathermap.org/img/wn/13d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Light Snow Showers",
|
||||
image: "http://openweathermap.org/img/wn/13n@2x.png"
|
||||
}
|
||||
},
|
||||
"86": {
|
||||
day: {
|
||||
description: "Snow Showers",
|
||||
image: "http://openweathermap.org/img/wn/13d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Snow Showers",
|
||||
image: "http://openweathermap.org/img/wn/13n@2x.png"
|
||||
}
|
||||
},
|
||||
"95": {
|
||||
day: {
|
||||
description: "Thunderstorm",
|
||||
image: "http://openweathermap.org/img/wn/11d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Thunderstorm",
|
||||
image: "http://openweathermap.org/img/wn/11n@2x.png"
|
||||
}
|
||||
},
|
||||
"96": {
|
||||
day: {
|
||||
description: "Light Thunderstorms With Hail",
|
||||
image: "http://openweathermap.org/img/wn/11d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Light Thunderstorms With Hail",
|
||||
image: "http://openweathermap.org/img/wn/11n@2x.png"
|
||||
}
|
||||
},
|
||||
"99": {
|
||||
day: {
|
||||
description: "Thunderstorm With Hail",
|
||||
image: "http://openweathermap.org/img/wn/11d@2x.png"
|
||||
},
|
||||
night: {
|
||||
description: "Thunderstorm With Hail",
|
||||
image: "http://openweathermap.org/img/wn/11n@2x.png"
|
||||
}
|
||||
}
|
||||
};
|
13
package.json
13
package.json
@ -1,10 +1,11 @@
|
||||
{
|
||||
"name": "sparkhome",
|
||||
"version": "4.10.2",
|
||||
"version": "4.17.0",
|
||||
"private": false,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"build:NLP": "tsx ./lib/nlp/train.ts",
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
"test": "jest",
|
||||
@ -14,11 +15,19 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@nextui-org/react": "^2.3.6",
|
||||
"@nlpjs/basic": "^4.27.0",
|
||||
"@nlpjs/builtin-compromise": "^4.26.1",
|
||||
"@nlpjs/core": "^4.26.1",
|
||||
"@nlpjs/lang-en-min": "^4.26.1",
|
||||
"@nlpjs/lang-zh": "^4.26.1",
|
||||
"@nlpjs/nlp": "^4.27.0",
|
||||
"clsx": "^2.1.1",
|
||||
"fflate": "^0.8.2",
|
||||
"framer-motion": "^11.1.7",
|
||||
"next": "14.1.4",
|
||||
"next-intl": "^3.12.0",
|
||||
"next-themes": "^0.3.0",
|
||||
"openmeteo": "^1.1.4",
|
||||
"pino": "^9.0.0",
|
||||
"punycode": "^2.3.1",
|
||||
"react": "^18.3.0",
|
||||
@ -26,7 +35,6 @@
|
||||
"recoil": "^0.7.7",
|
||||
"search-engine-autocomplete": "^0.4.3",
|
||||
"tailwind-merge": "^2.3.0",
|
||||
"ts-node": "^10.9.2",
|
||||
"unicode-encode": "^1.4.2",
|
||||
"valid-url": "^1.0.9",
|
||||
"validate-color": "^2.2.4"
|
||||
@ -48,6 +56,7 @@
|
||||
"postcss": "^8.4.38",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"ts-jest": "^29.1.2",
|
||||
"tsx": "^4.15.6",
|
||||
"typescript": "^5.4.5",
|
||||
"vitepress": "^1.2.3",
|
||||
"vue": "^3.4.29"
|
||||
|
505
pnpm-lock.yaml
505
pnpm-lock.yaml
@ -11,9 +11,30 @@ importers:
|
||||
'@nextui-org/react':
|
||||
specifier: ^2.3.6
|
||||
version: 2.3.6(@types/react@18.3.0)(framer-motion@11.1.7(react-dom@18.3.0(react@18.3.0))(react@18.3.0))(react-dom@18.3.0(react@18.3.0))(react@18.3.0)(tailwind-variants@0.2.1(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))))(tailwindcss@3.4.3(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))
|
||||
'@nlpjs/basic':
|
||||
specifier: ^4.27.0
|
||||
version: 4.27.0
|
||||
'@nlpjs/builtin-compromise':
|
||||
specifier: ^4.26.1
|
||||
version: 4.26.1
|
||||
'@nlpjs/core':
|
||||
specifier: ^4.26.1
|
||||
version: 4.26.1
|
||||
'@nlpjs/lang-en-min':
|
||||
specifier: ^4.26.1
|
||||
version: 4.26.1
|
||||
'@nlpjs/lang-zh':
|
||||
specifier: ^4.26.1
|
||||
version: 4.26.1
|
||||
'@nlpjs/nlp':
|
||||
specifier: ^4.27.0
|
||||
version: 4.27.0
|
||||
clsx:
|
||||
specifier: ^2.1.1
|
||||
version: 2.1.1
|
||||
fflate:
|
||||
specifier: ^0.8.2
|
||||
version: 0.8.2
|
||||
framer-motion:
|
||||
specifier: ^11.1.7
|
||||
version: 11.1.7(react-dom@18.3.0(react@18.3.0))(react@18.3.0)
|
||||
@ -26,6 +47,9 @@ importers:
|
||||
next-themes:
|
||||
specifier: ^0.3.0
|
||||
version: 0.3.0(react-dom@18.3.0(react@18.3.0))(react@18.3.0)
|
||||
openmeteo:
|
||||
specifier: ^1.1.4
|
||||
version: 1.1.4
|
||||
pino:
|
||||
specifier: ^9.0.0
|
||||
version: 9.0.0
|
||||
@ -47,9 +71,6 @@ importers:
|
||||
tailwind-merge:
|
||||
specifier: ^2.3.0
|
||||
version: 2.3.0
|
||||
ts-node:
|
||||
specifier: ^10.9.2
|
||||
version: 10.9.2(@types/node@20.12.7)(typescript@5.4.5)
|
||||
unicode-encode:
|
||||
specifier: ^1.4.2
|
||||
version: 1.4.2
|
||||
@ -108,6 +129,9 @@ importers:
|
||||
ts-jest:
|
||||
specifier: ^29.1.2
|
||||
version: 29.1.2(@babel/core@7.24.4)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.4))(jest@29.7.0(@types/node@20.12.7)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5)))(typescript@5.4.5)
|
||||
tsx:
|
||||
specifier: ^4.15.6
|
||||
version: 4.15.6
|
||||
typescript:
|
||||
specifier: ^5.4.5
|
||||
version: 5.4.5
|
||||
@ -1224,6 +1248,69 @@ packages:
|
||||
react: '>=18'
|
||||
react-dom: '>=18'
|
||||
|
||||
'@nlpjs/basic@4.27.0':
|
||||
resolution: {integrity: sha512-AL03Xdf2H1leAkWfjVwjm8SqeEj9M7ZBHoKC16sSd2SGgQN24YwZFpRyySW2vvDfHLHk8LkFu0+Efw9LdADz4A==}
|
||||
|
||||
'@nlpjs/builtin-compromise@4.26.1':
|
||||
resolution: {integrity: sha512-wc4tN0NIyfjMyRt1qpU+A4i6hIdtg92ZlfIgzx1q67sZJ+jMp0EQU2slokqFSRK1m4+WT9jAsbd/nrUan3oWlA==}
|
||||
|
||||
'@nlpjs/connector@4.26.1':
|
||||
resolution: {integrity: sha512-VCNoZpuKXoaQPT9djrEnpGDRFCYs8LBCeV/f4u0waaKM2VVp6OdLDCYV9RDQ7MK+VOsZhvDfPa2kuoixRE4srA==}
|
||||
|
||||
'@nlpjs/console-connector@4.26.1':
|
||||
resolution: {integrity: sha512-gktzTvDVAUzq5N/JTBZ5gMa8DhG4lV9rXOONIuuivo4Ze8jP/JdcenK1WQoisV/XnI7uMjnYhVnSB4wY7IizSA==}
|
||||
|
||||
'@nlpjs/core-loader@4.26.1':
|
||||
resolution: {integrity: sha512-IiRtn65bdiUSQHy2kusco2fmhk39u2Mc2c5Fsm9+9EVG6BtJCmVEFU/btAzGDAmxEA/E4qKecaAT4LvcW6TPbA==}
|
||||
|
||||
'@nlpjs/core@4.26.1':
|
||||
resolution: {integrity: sha512-M/PeFddsi3y7Z1piFJxsLGm5/xdMhcrpOsml7s6CTEgYo8iduaT30HDd61tZxDyvvJseU6uFqlXSn7XKkAcC1g==}
|
||||
|
||||
'@nlpjs/evaluator@4.26.1':
|
||||
resolution: {integrity: sha512-WeUrC8qq7+V8Jhkkjc2yiXdzy9V0wbETv8/qasQmL0QmEuwBDJF+fvfl4z2vWpBb0vW07A8aNrFElKELzbpkdg==}
|
||||
|
||||
'@nlpjs/lang-en-min@4.26.1':
|
||||
resolution: {integrity: sha512-1sJZ7dy7ysqzbsB8IklguvB88J8EPIv4XGVkZCcwecKtOw+fp5LAsZ3TJVmEf18iK1gD4cEGr7qZg5fpPxTpWQ==}
|
||||
|
||||
'@nlpjs/lang-en@4.26.1':
|
||||
resolution: {integrity: sha512-GVoJpOjyk5TtBAqo/fxsiuuH7jXycyakGT0gw5f01u9lOmUnpJegvXyGff/Nb0j14pXcGHXOhmpWrcTrG2B0LQ==}
|
||||
|
||||
'@nlpjs/lang-zh@4.26.1':
|
||||
resolution: {integrity: sha512-kwqeqeEgMAMvucVX9HNE1p6s/2APP23ZsS8Um/lNvtswb4gL5jjYF9kyCvRfqlPBQSWWdRv7wwcnNXOvXYkxcQ==}
|
||||
|
||||
'@nlpjs/language-min@4.25.0':
|
||||
resolution: {integrity: sha512-g8jtbDbqtRm+dlD/1Vnb4VWfKbKteApEGVTqIMxYkk6N/HMhvLZ5J2svrxzrB98a/HZ0fb//YBfFgymnz9Oukg==}
|
||||
|
||||
'@nlpjs/logger@4.26.1':
|
||||
resolution: {integrity: sha512-1WaXq+lt1vm34TPxoRZQ8c6PA7cqou/V18lGDt7uZbK0L5cXsB8OuYm5lEB/J1QlbJ819Nkmb32Oax9idQODRw==}
|
||||
|
||||
'@nlpjs/ner@4.27.0':
|
||||
resolution: {integrity: sha512-ptwkxriJdmgHSH9TfP10JQ1jviaSl2SupSFGUvTuWkuJhobQd3hbnlSq40V6XYvJNmqh9M9zEab/AKeghxYOTA==}
|
||||
|
||||
'@nlpjs/neural@4.25.0':
|
||||
resolution: {integrity: sha512-Oz20denGiBe0DlQsS7lN4TNrATN1nXlHKc/HB6jJPegjVmgJVCugDaHwIGoV7qOWyA6F2fRRwOgD+quNT2gVpg==}
|
||||
|
||||
'@nlpjs/nlg@4.26.1':
|
||||
resolution: {integrity: sha512-PCJWiZ7464ChXXUGvjBZIFtoqkC24Oy6X63HgQrSv+63svz22Y5Cmu1MYLk77Nb+4keWv+hKhFJKDkvJoOpBVg==}
|
||||
|
||||
'@nlpjs/nlp@4.27.0':
|
||||
resolution: {integrity: sha512-q6X7sY6TYVnQRZJKF/6mfLFlNA5oRYLhgQ5k3i1IBqH9lbWTAZJr31w/dCf97HXaYaj+vJp3h0ucfNumme9EIw==}
|
||||
|
||||
'@nlpjs/nlu@4.27.0':
|
||||
resolution: {integrity: sha512-j4DUdoXS/y/Xag6ysYXx7Ve8NBmUVViUSCJhj3r49+zGyYtyVAHuVcqSej5q0tJjn0JSMT+6+ip8klON1q8ixw==}
|
||||
|
||||
'@nlpjs/request@4.25.0':
|
||||
resolution: {integrity: sha512-MPVYWfFZY03WyFL7GWkUkv8tw968OXsdxFSJEvjXHzhiCe/vAlPCWbvoR+VnoQTgzLHxs/KIF6sIF2s9AzsLmQ==}
|
||||
|
||||
'@nlpjs/sentiment@4.26.1':
|
||||
resolution: {integrity: sha512-U2WmcW3w6yDDO45+Y7v5e6DPQj8e0x+RUUePPyRu2uIZmUtIKG+qCPMWnNLMmYQZoSQEFxmMMlLcGDC7tN7o3w==}
|
||||
|
||||
'@nlpjs/similarity@4.26.1':
|
||||
resolution: {integrity: sha512-QutSBFGo/huNuz60PgqCjub0oBd9S8MLrjme33U5GzxuSvToQzXtn9/ynIia8qDm009D09VXV+LPeNE4h7yuSg==}
|
||||
|
||||
'@nlpjs/slot@4.26.1':
|
||||
resolution: {integrity: sha512-mK8EEy5O+mRGne822PIKMxHSFh8j+iC7hGJ6T31XdFsNhFEYXLI/0dmeBstZgTSKBTe27HNFgCCwuGb77u0o9w==}
|
||||
|
||||
'@nodelib/fs.scandir@2.1.5':
|
||||
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
||||
engines: {node: '>= 8'}
|
||||
@ -1236,6 +1323,10 @@ packages:
|
||||
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
'@openmeteo/sdk@1.11.7':
|
||||
resolution: {integrity: sha512-qV790gksvJ+l/umb1iKt+ZRUKE5RzgmPkwTeUSmtUcnoRaAQZX9/BQLDpmEZrkcuv4g1trzcsNRwxBrBLWUnWA==}
|
||||
engines: {node: '>=12.0'}
|
||||
|
||||
'@pkgjs/parseargs@0.11.0':
|
||||
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
||||
engines: {node: '>=14'}
|
||||
@ -2051,6 +2142,10 @@ packages:
|
||||
argparse@1.0.10:
|
||||
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
|
||||
|
||||
args@5.0.3:
|
||||
resolution: {integrity: sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==}
|
||||
engines: {node: '>= 6.0.0'}
|
||||
|
||||
aria-query@5.1.3:
|
||||
resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==}
|
||||
|
||||
@ -2171,6 +2266,10 @@ packages:
|
||||
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
camelcase@5.0.0:
|
||||
resolution: {integrity: sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
camelcase@5.3.1:
|
||||
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
|
||||
engines: {node: '>=6'}
|
||||
@ -2254,6 +2353,9 @@ packages:
|
||||
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
|
||||
engines: {node: '>=12.5.0'}
|
||||
|
||||
colorette@2.0.20:
|
||||
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
|
||||
|
||||
combined-stream@1.0.8:
|
||||
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
|
||||
engines: {node: '>= 0.8'}
|
||||
@ -2262,6 +2364,21 @@ packages:
|
||||
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
compromise-dates@1.5.6:
|
||||
resolution: {integrity: sha512-i51/snFZtaW+cLx16HrBMHdgqc9eB3lsT5igtm9pOw6sNsNMX64lKiJdp3/kxGtOnl0fjGbZ69DoHb6o4pGUJw==}
|
||||
peerDependencies:
|
||||
compromise: '>=12.0.0'
|
||||
compromise-numbers: '>=1.0.0'
|
||||
|
||||
compromise-numbers@1.4.0:
|
||||
resolution: {integrity: sha512-3ceRpwZIWduVSMYn54ET1ELdI7bvXQk42uDwxffxiJBxgKCwcCfVbiLuTG62cI+qTHchwLDh4vp9i3WARXROFQ==}
|
||||
peerDependencies:
|
||||
compromise: '>=12.0.0'
|
||||
|
||||
compromise@13.11.4:
|
||||
resolution: {integrity: sha512-nBITcNdqIHSVDDluaG6guyFFCSNXN+Hu87fU8VlhkE5Z0PwTZN1nro2O7a8JcUH88nB5EOzrxd9zKfXLSNFqcg==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
|
||||
compute-scroll-into-view@3.1.0:
|
||||
resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==}
|
||||
|
||||
@ -2312,6 +2429,9 @@ packages:
|
||||
resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
dateformat@4.6.3:
|
||||
resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
|
||||
|
||||
debug@4.3.4:
|
||||
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
|
||||
engines: {node: '>=6.0'}
|
||||
@ -2388,9 +2508,15 @@ packages:
|
||||
engines: {node: '>=12'}
|
||||
deprecated: Use your platform's native DOMException instead
|
||||
|
||||
duplexify@4.1.3:
|
||||
resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==}
|
||||
|
||||
eastasianwidth@0.2.0:
|
||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||
|
||||
efrt-unpack@2.2.0:
|
||||
resolution: {integrity: sha512-9xUSSj7qcUxz+0r4X3+bwUNttEfGfK5AH+LVa1aTpqdAfrN5VhROYCfcF+up4hp5OL7IUKcZJJrzAGipQRDoiQ==}
|
||||
|
||||
electron-to-chromium@1.4.749:
|
||||
resolution: {integrity: sha512-LRMMrM9ITOvue0PoBrvNIraVmuDbJV5QC9ierz/z5VilMdPOVMjOtpICNld3PuXuTZ3CHH/UPxX9gHhAPwi+0Q==}
|
||||
|
||||
@ -2404,6 +2530,9 @@ packages:
|
||||
emoji-regex@9.2.2:
|
||||
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
||||
|
||||
end-of-stream@1.4.4:
|
||||
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
|
||||
|
||||
entities@4.5.0:
|
||||
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
|
||||
engines: {node: '>=0.12'}
|
||||
@ -2491,12 +2620,18 @@ packages:
|
||||
resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
fast-safe-stringify@2.1.1:
|
||||
resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
|
||||
|
||||
fastq@1.17.1:
|
||||
resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
|
||||
|
||||
fb-watchman@2.0.2:
|
||||
resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
|
||||
|
||||
fflate@0.8.2:
|
||||
resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
|
||||
|
||||
fill-range@7.0.1:
|
||||
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
|
||||
engines: {node: '>=8'}
|
||||
@ -2509,6 +2644,9 @@ packages:
|
||||
resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
|
||||
hasBin: true
|
||||
|
||||
flatbuffers@24.3.25:
|
||||
resolution: {integrity: sha512-3HDgPbgiwWMI9zVB7VYBHaMrbOO7Gm0v+yD2FV/sCKj+9NDeVL7BOBYUuhWAQGKWOzBo8S9WdMvV0eixO233XQ==}
|
||||
|
||||
focus-trap@7.5.4:
|
||||
resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==}
|
||||
|
||||
@ -2578,6 +2716,9 @@ packages:
|
||||
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
get-tsconfig@4.7.5:
|
||||
resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==}
|
||||
|
||||
glob-parent@5.1.2:
|
||||
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
||||
engines: {node: '>= 6'}
|
||||
@ -2980,6 +3121,10 @@ packages:
|
||||
resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
|
||||
hasBin: true
|
||||
|
||||
joycon@3.1.1:
|
||||
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
js-tokens@4.0.0:
|
||||
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
||||
|
||||
@ -3013,6 +3158,10 @@ packages:
|
||||
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
leven@2.1.0:
|
||||
resolution: {integrity: sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
leven@3.1.0:
|
||||
resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
|
||||
engines: {node: '>=6'}
|
||||
@ -3135,6 +3284,10 @@ packages:
|
||||
mitt@3.0.1:
|
||||
resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
|
||||
|
||||
mri@1.1.4:
|
||||
resolution: {integrity: sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
ms@2.1.2:
|
||||
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
|
||||
|
||||
@ -3224,6 +3377,9 @@ packages:
|
||||
resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
on-exit-leak-free@0.2.0:
|
||||
resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==}
|
||||
|
||||
on-exit-leak-free@2.1.2:
|
||||
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
@ -3235,6 +3391,10 @@ packages:
|
||||
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
openmeteo@1.1.4:
|
||||
resolution: {integrity: sha512-TalTDl0M7JJoeRTf+rWiFZ9SLvoxm7KkFLOQqcSjCiYs+bVMhax1qtryJqeZ1RF4W4Xfsgcl9x+VC1z39ULCxA==}
|
||||
engines: {node: '>=12.0'}
|
||||
|
||||
p-limit@2.3.0:
|
||||
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
|
||||
engines: {node: '>=6'}
|
||||
@ -3291,12 +3451,26 @@ packages:
|
||||
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
pino-abstract-transport@0.5.0:
|
||||
resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==}
|
||||
|
||||
pino-abstract-transport@1.2.0:
|
||||
resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==}
|
||||
|
||||
pino-pretty@7.6.1:
|
||||
resolution: {integrity: sha512-H7N6ZYkiyrfwBGW9CSjx0uyO9Q2Lyt73881+OTYk8v3TiTdgN92QHrWlEq/LeWw5XtDP64jeSk3mnc6T+xX9/w==}
|
||||
hasBin: true
|
||||
|
||||
pino-std-serializers@4.0.0:
|
||||
resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==}
|
||||
|
||||
pino-std-serializers@6.2.2:
|
||||
resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
|
||||
|
||||
pino@7.11.0:
|
||||
resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==}
|
||||
hasBin: true
|
||||
|
||||
pino@9.0.0:
|
||||
resolution: {integrity: sha512-uI1ThkzTShNSwvsUM6b4ND8ANzWURk9zTELMztFkmnCQeR/4wkomJ+echHee5GMWGovoSfjwdeu80DsFIt7mbA==}
|
||||
hasBin: true
|
||||
@ -3369,6 +3543,9 @@ packages:
|
||||
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
|
||||
process-warning@1.0.0:
|
||||
resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==}
|
||||
|
||||
process-warning@3.0.0:
|
||||
resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
|
||||
|
||||
@ -3383,6 +3560,9 @@ packages:
|
||||
psl@1.9.0:
|
||||
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
|
||||
|
||||
pump@3.0.0:
|
||||
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
|
||||
|
||||
punycode@2.3.1:
|
||||
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
||||
engines: {node: '>=6'}
|
||||
@ -3453,6 +3633,10 @@ packages:
|
||||
read-cache@1.0.0:
|
||||
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
|
||||
|
||||
readable-stream@3.6.2:
|
||||
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
|
||||
engines: {node: '>= 6'}
|
||||
|
||||
readable-stream@4.5.2:
|
||||
resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
@ -3461,6 +3645,10 @@ packages:
|
||||
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
|
||||
engines: {node: '>=8.10.0'}
|
||||
|
||||
real-require@0.1.0:
|
||||
resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==}
|
||||
engines: {node: '>= 12.13.0'}
|
||||
|
||||
real-require@0.2.0:
|
||||
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
|
||||
engines: {node: '>= 12.13.0'}
|
||||
@ -3503,6 +3691,9 @@ packages:
|
||||
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
resolve-pkg-maps@1.0.0:
|
||||
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
|
||||
|
||||
resolve.exports@2.0.2:
|
||||
resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
|
||||
engines: {node: '>=10'}
|
||||
@ -3552,6 +3743,9 @@ packages:
|
||||
search-insights@2.14.0:
|
||||
resolution: {integrity: sha512-OLN6MsPMCghDOqlCtsIsYgtsC0pnwVTyT9Mu6A3ewOj1DxvzZF6COrn2g86E/c05xbktB0XN04m/t1Z+n+fTGw==}
|
||||
|
||||
secure-json-parse@2.7.0:
|
||||
resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
|
||||
|
||||
semver@6.3.1:
|
||||
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
|
||||
hasBin: true
|
||||
@ -3601,6 +3795,9 @@ packages:
|
||||
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
sonic-boom@2.8.0:
|
||||
resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==}
|
||||
|
||||
sonic-boom@3.8.1:
|
||||
resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==}
|
||||
|
||||
@ -3615,6 +3812,14 @@ packages:
|
||||
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
spacetime-holiday@0.1.0:
|
||||
resolution: {integrity: sha512-rYIpSDbHnznZRstUrmYYFAaruW8e96t+1JfS0b6qMiAAQ2DrkLKc8oMotAAkB9qMTUwXXf5bIkdTHfP434uitQ==}
|
||||
peerDependencies:
|
||||
spacetime: ^6.3.0
|
||||
|
||||
spacetime@6.14.0:
|
||||
resolution: {integrity: sha512-pz/nMIRGNSJeFfDFvhPjMHXhFU1NcrYnpydMuSS2Zsk0NEoHJc2rRKXugkmlqUv/l/fPxWVJVnj8isVS0//vbQ==}
|
||||
|
||||
speakingurl@14.0.1:
|
||||
resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@ -3634,6 +3839,9 @@ packages:
|
||||
resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
stream-shift@1.0.3:
|
||||
resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==}
|
||||
|
||||
streamsearch@1.1.0:
|
||||
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
@ -3755,6 +3963,9 @@ packages:
|
||||
thenify@3.3.1:
|
||||
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
|
||||
|
||||
thread-stream@0.15.2:
|
||||
resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==}
|
||||
|
||||
thread-stream@2.7.0:
|
||||
resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==}
|
||||
|
||||
@ -3818,6 +4029,11 @@ packages:
|
||||
tslib@2.6.2:
|
||||
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
|
||||
|
||||
tsx@4.15.6:
|
||||
resolution: {integrity: sha512-is0VQQlfNZRHEuSSTKA6m4xw74IU4AizmuB6lAYLRt9XtuyeQnyJYexhNZOPCB59SqC4JzmSzPnHGBXxf3k0hA==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
hasBin: true
|
||||
|
||||
type-detect@4.0.8:
|
||||
resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
|
||||
engines: {node: '>=4'}
|
||||
@ -4403,6 +4619,7 @@ snapshots:
|
||||
'@cspotcode/source-map-support@0.8.1':
|
||||
dependencies:
|
||||
'@jridgewell/trace-mapping': 0.3.9
|
||||
optional: true
|
||||
|
||||
'@docsearch/css@3.6.0': {}
|
||||
|
||||
@ -4778,6 +4995,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@jridgewell/resolve-uri': 3.1.2
|
||||
'@jridgewell/sourcemap-codec': 1.4.15
|
||||
optional: true
|
||||
|
||||
'@next/env@14.1.4': {}
|
||||
|
||||
@ -5801,6 +6019,112 @@ snapshots:
|
||||
react: 18.3.0
|
||||
react-dom: 18.3.0(react@18.3.0)
|
||||
|
||||
'@nlpjs/basic@4.27.0':
|
||||
dependencies:
|
||||
'@nlpjs/console-connector': 4.26.1
|
||||
'@nlpjs/core-loader': 4.26.1
|
||||
'@nlpjs/evaluator': 4.26.1
|
||||
'@nlpjs/lang-en': 4.26.1
|
||||
'@nlpjs/logger': 4.26.1
|
||||
'@nlpjs/nlp': 4.27.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@nlpjs/builtin-compromise@4.26.1':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
compromise: 13.11.4
|
||||
compromise-dates: 1.5.6(compromise-numbers@1.4.0(compromise@13.11.4))(compromise@13.11.4)
|
||||
compromise-numbers: 1.4.0(compromise@13.11.4)
|
||||
|
||||
'@nlpjs/connector@4.26.1':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
|
||||
'@nlpjs/console-connector@4.26.1':
|
||||
dependencies:
|
||||
'@nlpjs/connector': 4.26.1
|
||||
'@nlpjs/core': 4.26.1
|
||||
|
||||
'@nlpjs/core-loader@4.26.1':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
'@nlpjs/request': 4.25.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@nlpjs/core@4.26.1': {}
|
||||
|
||||
'@nlpjs/evaluator@4.26.1':
|
||||
dependencies:
|
||||
escodegen: 2.1.0
|
||||
esprima: 4.0.1
|
||||
|
||||
'@nlpjs/lang-en-min@4.26.1':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
|
||||
'@nlpjs/lang-en@4.26.1':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
'@nlpjs/lang-en-min': 4.26.1
|
||||
|
||||
'@nlpjs/lang-zh@4.26.1':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
|
||||
'@nlpjs/language-min@4.25.0': {}
|
||||
|
||||
'@nlpjs/logger@4.26.1':
|
||||
dependencies:
|
||||
pino: 7.11.0
|
||||
pino-pretty: 7.6.1
|
||||
|
||||
'@nlpjs/ner@4.27.0':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
'@nlpjs/language-min': 4.25.0
|
||||
'@nlpjs/similarity': 4.26.1
|
||||
|
||||
'@nlpjs/neural@4.25.0': {}
|
||||
|
||||
'@nlpjs/nlg@4.26.1':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
|
||||
'@nlpjs/nlp@4.27.0':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
'@nlpjs/ner': 4.27.0
|
||||
'@nlpjs/nlg': 4.26.1
|
||||
'@nlpjs/nlu': 4.27.0
|
||||
'@nlpjs/sentiment': 4.26.1
|
||||
'@nlpjs/slot': 4.26.1
|
||||
|
||||
'@nlpjs/nlu@4.27.0':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
'@nlpjs/language-min': 4.25.0
|
||||
'@nlpjs/neural': 4.25.0
|
||||
'@nlpjs/similarity': 4.26.1
|
||||
|
||||
'@nlpjs/request@4.25.0':
|
||||
dependencies:
|
||||
http-proxy-agent: 5.0.0
|
||||
https-proxy-agent: 5.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@nlpjs/sentiment@4.26.1':
|
||||
dependencies:
|
||||
'@nlpjs/core': 4.26.1
|
||||
'@nlpjs/language-min': 4.25.0
|
||||
'@nlpjs/neural': 4.25.0
|
||||
|
||||
'@nlpjs/similarity@4.26.1': {}
|
||||
|
||||
'@nlpjs/slot@4.26.1': {}
|
||||
|
||||
'@nodelib/fs.scandir@2.1.5':
|
||||
dependencies:
|
||||
'@nodelib/fs.stat': 2.0.5
|
||||
@ -5813,6 +6137,10 @@ snapshots:
|
||||
'@nodelib/fs.scandir': 2.1.5
|
||||
fastq: 1.17.1
|
||||
|
||||
'@openmeteo/sdk@1.11.7':
|
||||
dependencies:
|
||||
flatbuffers: 24.3.25
|
||||
|
||||
'@pkgjs/parseargs@0.11.0':
|
||||
optional: true
|
||||
|
||||
@ -6639,13 +6967,17 @@ snapshots:
|
||||
|
||||
'@tootallnate/once@2.0.0': {}
|
||||
|
||||
'@tsconfig/node10@1.0.11': {}
|
||||
'@tsconfig/node10@1.0.11':
|
||||
optional: true
|
||||
|
||||
'@tsconfig/node12@1.0.11': {}
|
||||
'@tsconfig/node12@1.0.11':
|
||||
optional: true
|
||||
|
||||
'@tsconfig/node14@1.0.3': {}
|
||||
'@tsconfig/node14@1.0.3':
|
||||
optional: true
|
||||
|
||||
'@tsconfig/node16@1.0.4': {}
|
||||
'@tsconfig/node16@1.0.4':
|
||||
optional: true
|
||||
|
||||
'@types/aria-query@5.0.4': {}
|
||||
|
||||
@ -6919,7 +7251,8 @@ snapshots:
|
||||
normalize-path: 3.0.0
|
||||
picomatch: 2.3.1
|
||||
|
||||
arg@4.1.3: {}
|
||||
arg@4.1.3:
|
||||
optional: true
|
||||
|
||||
arg@5.0.2: {}
|
||||
|
||||
@ -6927,6 +7260,13 @@ snapshots:
|
||||
dependencies:
|
||||
sprintf-js: 1.0.3
|
||||
|
||||
args@5.0.3:
|
||||
dependencies:
|
||||
camelcase: 5.0.0
|
||||
chalk: 2.4.2
|
||||
leven: 2.1.0
|
||||
mri: 1.1.4
|
||||
|
||||
aria-query@5.1.3:
|
||||
dependencies:
|
||||
deep-equal: 2.2.3
|
||||
@ -7073,6 +7413,8 @@ snapshots:
|
||||
|
||||
camelcase-css@2.0.1: {}
|
||||
|
||||
camelcase@5.0.0: {}
|
||||
|
||||
camelcase@5.3.1: {}
|
||||
|
||||
camelcase@6.3.0: {}
|
||||
@ -7153,12 +7495,29 @@ snapshots:
|
||||
color-convert: 2.0.1
|
||||
color-string: 1.9.1
|
||||
|
||||
colorette@2.0.20: {}
|
||||
|
||||
combined-stream@1.0.8:
|
||||
dependencies:
|
||||
delayed-stream: 1.0.0
|
||||
|
||||
commander@4.1.1: {}
|
||||
|
||||
compromise-dates@1.5.6(compromise-numbers@1.4.0(compromise@13.11.4))(compromise@13.11.4):
|
||||
dependencies:
|
||||
compromise: 13.11.4
|
||||
compromise-numbers: 1.4.0(compromise@13.11.4)
|
||||
spacetime: 6.14.0
|
||||
spacetime-holiday: 0.1.0(spacetime@6.14.0)
|
||||
|
||||
compromise-numbers@1.4.0(compromise@13.11.4):
|
||||
dependencies:
|
||||
compromise: 13.11.4
|
||||
|
||||
compromise@13.11.4:
|
||||
dependencies:
|
||||
efrt-unpack: 2.2.0
|
||||
|
||||
compute-scroll-into-view@3.1.0: {}
|
||||
|
||||
concat-map@0.0.1: {}
|
||||
@ -7184,7 +7543,8 @@ snapshots:
|
||||
- supports-color
|
||||
- ts-node
|
||||
|
||||
create-require@1.1.1: {}
|
||||
create-require@1.1.1:
|
||||
optional: true
|
||||
|
||||
cross-spawn@7.0.3:
|
||||
dependencies:
|
||||
@ -7212,6 +7572,8 @@ snapshots:
|
||||
whatwg-mimetype: 3.0.0
|
||||
whatwg-url: 11.0.0
|
||||
|
||||
dateformat@4.6.3: {}
|
||||
|
||||
debug@4.3.4:
|
||||
dependencies:
|
||||
ms: 2.1.2
|
||||
@ -7267,7 +7629,8 @@ snapshots:
|
||||
|
||||
diff-sequences@29.6.3: {}
|
||||
|
||||
diff@4.0.2: {}
|
||||
diff@4.0.2:
|
||||
optional: true
|
||||
|
||||
dlv@1.1.3: {}
|
||||
|
||||
@ -7279,8 +7642,17 @@ snapshots:
|
||||
dependencies:
|
||||
webidl-conversions: 7.0.0
|
||||
|
||||
duplexify@4.1.3:
|
||||
dependencies:
|
||||
end-of-stream: 1.4.4
|
||||
inherits: 2.0.4
|
||||
readable-stream: 3.6.2
|
||||
stream-shift: 1.0.3
|
||||
|
||||
eastasianwidth@0.2.0: {}
|
||||
|
||||
efrt-unpack@2.2.0: {}
|
||||
|
||||
electron-to-chromium@1.4.749: {}
|
||||
|
||||
emittery@0.13.1: {}
|
||||
@ -7289,6 +7661,10 @@ snapshots:
|
||||
|
||||
emoji-regex@9.2.2: {}
|
||||
|
||||
end-of-stream@1.4.4:
|
||||
dependencies:
|
||||
once: 1.4.0
|
||||
|
||||
entities@4.5.0: {}
|
||||
|
||||
error-ex@1.3.2:
|
||||
@ -7399,6 +7775,8 @@ snapshots:
|
||||
|
||||
fast-redact@3.5.0: {}
|
||||
|
||||
fast-safe-stringify@2.1.1: {}
|
||||
|
||||
fastq@1.17.1:
|
||||
dependencies:
|
||||
reusify: 1.0.4
|
||||
@ -7407,6 +7785,8 @@ snapshots:
|
||||
dependencies:
|
||||
bser: 2.1.1
|
||||
|
||||
fflate@0.8.2: {}
|
||||
|
||||
fill-range@7.0.1:
|
||||
dependencies:
|
||||
to-regex-range: 5.0.1
|
||||
@ -7418,6 +7798,8 @@ snapshots:
|
||||
|
||||
flat@5.0.2: {}
|
||||
|
||||
flatbuffers@24.3.25: {}
|
||||
|
||||
focus-trap@7.5.4:
|
||||
dependencies:
|
||||
tabbable: 6.2.0
|
||||
@ -7473,6 +7855,10 @@ snapshots:
|
||||
|
||||
get-stream@6.0.1: {}
|
||||
|
||||
get-tsconfig@4.7.5:
|
||||
dependencies:
|
||||
resolve-pkg-maps: 1.0.0
|
||||
|
||||
glob-parent@5.1.2:
|
||||
dependencies:
|
||||
is-glob: 4.0.3
|
||||
@ -8069,6 +8455,8 @@ snapshots:
|
||||
|
||||
jiti@1.21.0: {}
|
||||
|
||||
joycon@3.1.1: {}
|
||||
|
||||
js-tokens@4.0.0: {}
|
||||
|
||||
js-yaml@3.14.1:
|
||||
@ -8117,6 +8505,8 @@ snapshots:
|
||||
|
||||
kleur@3.0.3: {}
|
||||
|
||||
leven@2.1.0: {}
|
||||
|
||||
leven@3.1.0: {}
|
||||
|
||||
lilconfig@2.1.0: {}
|
||||
@ -8210,6 +8600,8 @@ snapshots:
|
||||
|
||||
mitt@3.0.1: {}
|
||||
|
||||
mri@1.1.4: {}
|
||||
|
||||
ms@2.1.2: {}
|
||||
|
||||
mz@2.7.0:
|
||||
@ -8296,6 +8688,8 @@ snapshots:
|
||||
has-symbols: 1.0.3
|
||||
object-keys: 1.1.1
|
||||
|
||||
on-exit-leak-free@0.2.0: {}
|
||||
|
||||
on-exit-leak-free@2.1.2: {}
|
||||
|
||||
once@1.4.0:
|
||||
@ -8306,6 +8700,11 @@ snapshots:
|
||||
dependencies:
|
||||
mimic-fn: 2.1.0
|
||||
|
||||
openmeteo@1.1.4:
|
||||
dependencies:
|
||||
'@openmeteo/sdk': 1.11.7
|
||||
flatbuffers: 24.3.25
|
||||
|
||||
p-limit@2.3.0:
|
||||
dependencies:
|
||||
p-try: 2.2.0
|
||||
@ -8352,13 +8751,50 @@ snapshots:
|
||||
|
||||
pify@2.3.0: {}
|
||||
|
||||
pino-abstract-transport@0.5.0:
|
||||
dependencies:
|
||||
duplexify: 4.1.3
|
||||
split2: 4.2.0
|
||||
|
||||
pino-abstract-transport@1.2.0:
|
||||
dependencies:
|
||||
readable-stream: 4.5.2
|
||||
split2: 4.2.0
|
||||
|
||||
pino-pretty@7.6.1:
|
||||
dependencies:
|
||||
args: 5.0.3
|
||||
colorette: 2.0.20
|
||||
dateformat: 4.6.3
|
||||
fast-safe-stringify: 2.1.1
|
||||
joycon: 3.1.1
|
||||
on-exit-leak-free: 0.2.0
|
||||
pino-abstract-transport: 0.5.0
|
||||
pump: 3.0.0
|
||||
readable-stream: 3.6.2
|
||||
rfdc: 1.4.1
|
||||
secure-json-parse: 2.7.0
|
||||
sonic-boom: 2.8.0
|
||||
strip-json-comments: 3.1.1
|
||||
|
||||
pino-std-serializers@4.0.0: {}
|
||||
|
||||
pino-std-serializers@6.2.2: {}
|
||||
|
||||
pino@7.11.0:
|
||||
dependencies:
|
||||
atomic-sleep: 1.0.0
|
||||
fast-redact: 3.5.0
|
||||
on-exit-leak-free: 0.2.0
|
||||
pino-abstract-transport: 0.5.0
|
||||
pino-std-serializers: 4.0.0
|
||||
process-warning: 1.0.0
|
||||
quick-format-unescaped: 4.0.4
|
||||
real-require: 0.1.0
|
||||
safe-stable-stringify: 2.4.3
|
||||
sonic-boom: 2.8.0
|
||||
thread-stream: 0.15.2
|
||||
|
||||
pino@9.0.0:
|
||||
dependencies:
|
||||
atomic-sleep: 1.0.0
|
||||
@ -8439,6 +8875,8 @@ snapshots:
|
||||
ansi-styles: 5.2.0
|
||||
react-is: 18.3.0
|
||||
|
||||
process-warning@1.0.0: {}
|
||||
|
||||
process-warning@3.0.0: {}
|
||||
|
||||
process@0.11.10: {}
|
||||
@ -8450,6 +8888,11 @@ snapshots:
|
||||
|
||||
psl@1.9.0: {}
|
||||
|
||||
pump@3.0.0:
|
||||
dependencies:
|
||||
end-of-stream: 1.4.4
|
||||
once: 1.4.0
|
||||
|
||||
punycode@2.3.1: {}
|
||||
|
||||
pure-rand@6.1.0: {}
|
||||
@ -8515,6 +8958,12 @@ snapshots:
|
||||
dependencies:
|
||||
pify: 2.3.0
|
||||
|
||||
readable-stream@3.6.2:
|
||||
dependencies:
|
||||
inherits: 2.0.4
|
||||
string_decoder: 1.3.0
|
||||
util-deprecate: 1.0.2
|
||||
|
||||
readable-stream@4.5.2:
|
||||
dependencies:
|
||||
abort-controller: 3.0.0
|
||||
@ -8527,6 +8976,8 @@ snapshots:
|
||||
dependencies:
|
||||
picomatch: 2.3.1
|
||||
|
||||
real-require@0.1.0: {}
|
||||
|
||||
real-require@0.2.0: {}
|
||||
|
||||
recoil@0.7.7(react-dom@18.3.0(react@18.3.0))(react@18.3.0):
|
||||
@ -8560,6 +9011,8 @@ snapshots:
|
||||
|
||||
resolve-from@5.0.0: {}
|
||||
|
||||
resolve-pkg-maps@1.0.0: {}
|
||||
|
||||
resolve.exports@2.0.2: {}
|
||||
|
||||
resolve@1.22.8:
|
||||
@ -8620,6 +9073,8 @@ snapshots:
|
||||
|
||||
search-insights@2.14.0: {}
|
||||
|
||||
secure-json-parse@2.7.0: {}
|
||||
|
||||
semver@6.3.1: {}
|
||||
|
||||
semver@7.6.0:
|
||||
@ -8671,6 +9126,10 @@ snapshots:
|
||||
|
||||
slash@3.0.0: {}
|
||||
|
||||
sonic-boom@2.8.0:
|
||||
dependencies:
|
||||
atomic-sleep: 1.0.0
|
||||
|
||||
sonic-boom@3.8.1:
|
||||
dependencies:
|
||||
atomic-sleep: 1.0.0
|
||||
@ -8684,6 +9143,12 @@ snapshots:
|
||||
|
||||
source-map@0.6.1: {}
|
||||
|
||||
spacetime-holiday@0.1.0(spacetime@6.14.0):
|
||||
dependencies:
|
||||
spacetime: 6.14.0
|
||||
|
||||
spacetime@6.14.0: {}
|
||||
|
||||
speakingurl@14.0.1: {}
|
||||
|
||||
split2@4.2.0: {}
|
||||
@ -8698,6 +9163,8 @@ snapshots:
|
||||
dependencies:
|
||||
internal-slot: 1.0.7
|
||||
|
||||
stream-shift@1.0.3: {}
|
||||
|
||||
streamsearch@1.1.0: {}
|
||||
|
||||
string-length@4.0.2:
|
||||
@ -8835,6 +9302,10 @@ snapshots:
|
||||
dependencies:
|
||||
any-promise: 1.3.0
|
||||
|
||||
thread-stream@0.15.2:
|
||||
dependencies:
|
||||
real-require: 0.1.0
|
||||
|
||||
thread-stream@2.7.0:
|
||||
dependencies:
|
||||
real-require: 0.2.0
|
||||
@ -8894,9 +9365,17 @@ snapshots:
|
||||
typescript: 5.4.5
|
||||
v8-compile-cache-lib: 3.0.1
|
||||
yn: 3.1.1
|
||||
optional: true
|
||||
|
||||
tslib@2.6.2: {}
|
||||
|
||||
tsx@4.15.6:
|
||||
dependencies:
|
||||
esbuild: 0.21.5
|
||||
get-tsconfig: 4.7.5
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.3
|
||||
|
||||
type-detect@4.0.8: {}
|
||||
|
||||
type-fest@0.21.3: {}
|
||||
@ -8963,7 +9442,8 @@ snapshots:
|
||||
|
||||
util-deprecate@1.0.2: {}
|
||||
|
||||
v8-compile-cache-lib@3.0.1: {}
|
||||
v8-compile-cache-lib@3.0.1:
|
||||
optional: true
|
||||
|
||||
v8-to-istanbul@9.2.0:
|
||||
dependencies:
|
||||
@ -9138,6 +9618,7 @@ snapshots:
|
||||
y18n: 5.0.8
|
||||
yargs-parser: 21.1.1
|
||||
|
||||
yn@3.1.1: {}
|
||||
yn@3.1.1:
|
||||
optional: true
|
||||
|
||||
yocto-queue@0.1.0: {}
|
||||
|
BIN
public/model
Normal file
BIN
public/model
Normal file
Binary file not shown.
18
test/NLP/removeStopwords.test.ts
Normal file
18
test/NLP/removeStopwords.test.ts
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
import { NLP } from "@/lib/nlp/base";
|
||||
import { convertStopwords } from "@/lib/nlp/stopwords";
|
||||
import { describe, expect, test } from "@jest/globals";
|
||||
|
||||
describe("Test 1", () => {
|
||||
test("basic", () => {
|
||||
const nlp = new NLP("please", "remove-stopword");
|
||||
nlp.removeStopwords();
|
||||
expect(nlp.query).toBe("");
|
||||
});
|
||||
test("convert something", () => {
|
||||
const nlp = new NLP("please convert 1cm to m", "remove-stopword");
|
||||
nlp.removeStopwords(convertStopwords);
|
||||
nlp.trim();
|
||||
expect(nlp.query).toBe("1cm m");
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user