commit fa8d4425bbcc60fd5dc28fa143cf6527d889a032
parent 832cf23a94f821ab0d36cb2fa3d463380fd0d05a
Author: Sebastian <sebasjm@gmail.com>
Date: Mon, 28 Oct 2024 15:37:46 -0300
add test to pogen, refactor to avoid recursiveness
Diffstat:
4 files changed, 668 insertions(+), 415 deletions(-)
diff --git a/packages/pogen/package.json b/packages/pogen/package.json
@@ -8,14 +8,21 @@
"license": "GPL-2.0+",
"scripts": {
"clean": "rm -rf lib",
+ "test": "tsc && ava",
"compile": "tsc"
},
"devDependencies": {
+ "ava": "^6.0.1",
"po2json": "^0.4.5",
"typescript": "^5.3.3"
},
"dependencies": {
"@types/node": "^18.11.17",
"glob": "^10.3.10"
+ },
+ "ava": {
+ "files": [
+ "lib/**/*test.*"
+ ]
}
}
diff --git a/packages/pogen/src/potextract.test.ts b/packages/pogen/src/potextract.test.ts
@@ -0,0 +1,46 @@
+/*
+ This file is part of GNU Taler
+ (C) 2022 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+import test from "ava";
+import * as ts from "typescript";
+import { processFile2 } from "./potextract.js";
+
+function wrapIntoFunction(src: string): string {
+ return `
+function testing():VNode {
+return ${src}
+}
+`;
+}
+
+function process(src: string): string {
+ const source = ts.createSourceFile(
+ "test.tsx",
+ wrapIntoFunction(src),
+ ts.ScriptTarget.ES2020,
+ );
+ return processFile2(source).trim();
+}
+
+test("p2p: should select the coin", (t) => {
+ t.deepEqual(
+ process(`<i18n.Translate>something</i18n.Translate>`),
+ `#: test.tsx:3
+#, c-format
+msgid "something"
+msgstr ""`,
+ );
+});
diff --git a/packages/pogen/src/potextract.ts b/packages/pogen/src/potextract.ts
@@ -19,7 +19,7 @@
*/
import * as ts from "typescript";
import * as fs from "fs";
-import * as path from "path"
+import * as path from "path";
const DEFAULT_PO_HEADER = `# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
@@ -38,368 +38,419 @@ msgstr ""
"Language: \\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
-"Content-Transfer-Encoding: 8bit\\n"\n\n`
-
+"Content-Transfer-Encoding: 8bit\\n"\n\n`;
function wordwrap(str: string, width: number = 80): string[] {
var regex = ".{1," + width + "}(\\s|$)|\\S+(\\s|$)";
return str.match(RegExp(regex, "g"));
}
-function processFile(
- sourceFile: ts.SourceFile,
- outChunks: string[],
- knownMessageIds: Set<string>,
-) {
- let lastTokLine = 0;
- let preLastTokLine = 0;
- processNode(sourceFile);
-
- function getTemplate(node: ts.Node): string {
- switch (node.kind) {
- case ts.SyntaxKind.FirstTemplateToken:
- return (<any>node).text;
- case ts.SyntaxKind.TemplateExpression:
- let te = <ts.TemplateExpression>node;
- let textFragments = [te.head.text];
- for (let tsp of te.templateSpans) {
- textFragments.push(`%${(textFragments.length - 1) / 2 + 1}$s`);
- textFragments.push(tsp.literal.text.replace(/%/g, "%%"));
- }
- return textFragments.join("");
- default:
- return "(pogen.ts: unable to parse)";
- }
+function getTemplate(node: ts.Node): string {
+ switch (node.kind) {
+ case ts.SyntaxKind.FirstTemplateToken:
+ return (<any>node).text;
+ case ts.SyntaxKind.TemplateExpression:
+ let te = <ts.TemplateExpression>node;
+ let textFragments = [te.head.text];
+ for (let tsp of te.templateSpans) {
+ textFragments.push(`%${(textFragments.length - 1) / 2 + 1}$s`);
+ textFragments.push(tsp.literal.text.replace(/%/g, "%%"));
+ }
+ return textFragments.join("");
+ default:
+ return "(pogen.ts: unable to parse)";
}
+}
- function getComment(node: ts.Node): string {
- let lc = ts.getLineAndCharacterOfPosition(sourceFile, node.pos);
- let lastComments;
- for (let l = preLastTokLine; l < lastTokLine; l++) {
- let pos = ts.getPositionOfLineAndCharacter(sourceFile, l, 0);
- let comments = ts.getTrailingCommentRanges(sourceFile.text, pos);
- if (comments) {
- lastComments = comments;
- }
- }
- if (!lastComments) {
- return;
- }
- let candidate = lastComments[lastComments.length - 1];
- let candidateEndLine = ts.getLineAndCharacterOfPosition(
- sourceFile,
- candidate.end,
- ).line;
- if (candidateEndLine != lc.line - 1) {
- return;
- }
- let text = sourceFile.text.slice(candidate.pos, candidate.end);
- switch (candidate.kind) {
- case ts.SyntaxKind.SingleLineCommentTrivia:
- // Remove comment leader
- text = text.replace(/^[/][/]\s*/, "");
- break;
- case ts.SyntaxKind.MultiLineCommentTrivia:
- // Remove comment leader and trailer,
- // handling white space just like xgettext.
- text = text
- .replace(/^[/][*](\s*?\n|\s*)?/, "")
- .replace(/(\n[ \t]*?)?[*][/]$/, "");
- break;
+function getComment(
+ sourceFile: ts.SourceFile,
+ lastTokLine: number,
+ preLastTokLine: number,
+ node: ts.Node,
+): string {
+ let lc = ts.getLineAndCharacterOfPosition(sourceFile, node.pos);
+ let lastComments;
+ for (let l = preLastTokLine; l < lastTokLine; l++) {
+ let pos = ts.getPositionOfLineAndCharacter(sourceFile, l, 0);
+ let comments = ts.getTrailingCommentRanges(sourceFile.text, pos);
+ if (comments) {
+ lastComments = comments;
}
- return text;
}
+ if (!lastComments) {
+ return;
+ }
+ let candidate = lastComments[lastComments.length - 1];
+ let candidateEndLine = ts.getLineAndCharacterOfPosition(
+ sourceFile,
+ candidate.end,
+ ).line;
+ if (candidateEndLine != lc.line - 1) {
+ return;
+ }
+ let text = sourceFile.text.slice(candidate.pos, candidate.end);
+ switch (candidate.kind) {
+ case ts.SyntaxKind.SingleLineCommentTrivia:
+ // Remove comment leader
+ text = text.replace(/^[/][/]\s*/, "");
+ break;
+ case ts.SyntaxKind.MultiLineCommentTrivia:
+ // Remove comment leader and trailer,
+ // handling white space just like xgettext.
+ text = text
+ .replace(/^[/][*](\s*?\n|\s*)?/, "")
+ .replace(/(\n[ \t]*?)?[*][/]$/, "");
+ break;
+ }
+ return text;
+}
- function getPath(node: ts.Node): string[] {
- switch (node.kind) {
- case ts.SyntaxKind.PropertyAccessExpression:
- let pae = <ts.PropertyAccessExpression>node;
- return Array.prototype.concat(getPath(pae.expression), [pae.name.text]);
- case ts.SyntaxKind.Identifier:
- let id = <ts.Identifier>node;
- return [id.text];
- }
- return ["(other)"];
+function getPath(node: ts.Node): string[] {
+ switch (node.kind) {
+ case ts.SyntaxKind.PropertyAccessExpression:
+ let pae = <ts.PropertyAccessExpression>node;
+ return Array.prototype.concat(getPath(pae.expression), [pae.name.text]);
+ case ts.SyntaxKind.Identifier:
+ let id = <ts.Identifier>node;
+ return [id.text];
}
+ return ["(other)"];
+}
- function arrayEq<T>(a1: T[], a2: T[]) {
- if (a1.length != a2.length) {
+function arrayEq<T>(a1: T[], a2: T[]) {
+ if (a1.length != a2.length) {
+ return false;
+ }
+ for (let i = 0; i < a1.length; i++) {
+ if (a1[i] != a2[i]) {
return false;
}
- for (let i = 0; i < a1.length; i++) {
- if (a1[i] != a2[i]) {
- return false;
- }
- }
- return true;
}
+ return true;
+}
- interface TemplateResult {
- comment: string;
- path: string[];
- template: string;
- line: number;
- }
+interface TemplateResult {
+ comment: string;
+ path: string[];
+ template: string;
+ line: number;
+}
- function processTaggedTemplateExpression(
- tte: ts.TaggedTemplateExpression,
- ): TemplateResult {
- let lc = ts.getLineAndCharacterOfPosition(sourceFile, tte.pos);
- if (lc.line != lastTokLine) {
- preLastTokLine = lastTokLine;
- lastTokLine = lc.line;
- }
- let path = getPath(tte.tag);
- let res: TemplateResult = {
- path,
- line: lc.line,
- comment: getComment(tte),
- template: getTemplate(tte.template),
- };
- return res;
+function processTaggedTemplateExpression(
+ sourceFile: ts.SourceFile,
+ preLastTokLine: number,
+ lastTokLine: number,
+ tte: ts.TaggedTemplateExpression,
+): TemplateResult {
+ let lc = ts.getLineAndCharacterOfPosition(sourceFile, tte.pos);
+ if (lc.line != lastTokLine) {
+ preLastTokLine = lastTokLine; // HERE
+ lastTokLine = lc.line;
}
+ let path = getPath(tte.tag);
+ let res: TemplateResult = {
+ path,
+ line: lc.line,
+ comment: getComment(sourceFile, preLastTokLine, lastTokLine, tte),
+ template: getTemplate(tte.template),
+ };
+ return res;
+}
- function formatMsgComment(line: number, comment?: string) {
- if (comment) {
- for (let cl of comment.split("\n")) {
- outChunks.push(`#. ${cl}\n`);
- }
+function formatMsgComment(
+ sourceFile: ts.SourceFile,
+ outChunks: string[],
+ line: number,
+ comment?: string,
+) {
+ if (comment) {
+ for (let cl of comment.split("\n")) {
+ outChunks.push(`#. ${cl}\n`);
}
- const fn = path.posix.relative(process.cwd(), sourceFile.fileName);
- outChunks.push(`#: ${fn}:${line + 1}\n`);
- outChunks.push(`#, c-format\n`);
}
+ const fn = path.posix.relative(process.cwd(), sourceFile.fileName);
+ outChunks.push(`#: ${fn}:${line + 1}\n`);
+ outChunks.push(`#, c-format\n`);
+}
- function formatMsgLine(head: string, msg: string) {
- const m = msg.match(/(.*\n|.+$)/g)
- if (!m) return;
- // Do escaping, wrap break at newlines
- console.log("head", JSON.stringify(head));
- console.log("msg", JSON.stringify(msg));
- let parts = m.map((x) => x.replace(/\n/g, "\\n").replace(/"/g, '\\"'))
- .map((p) => wordwrap(p))
- .reduce((a, b) => a.concat(b));
- if (parts.length == 1) {
- outChunks.push(`${head} "${parts[0]}"\n`);
- } else {
- outChunks.push(`${head} ""\n`);
- for (let p of parts) {
- outChunks.push(`"${p}"\n`);
- }
+function formatMsgLine(outChunks: string[], head: string, msg: string) {
+ const m = msg.match(/(.*\n|.+$)/g);
+ if (!m) return;
+ // Do escaping, wrap break at newlines
+ console.log("head", JSON.stringify(head));
+ console.log("msg", JSON.stringify(msg));
+ let parts = m
+ .map((x) => x.replace(/\n/g, "\\n").replace(/"/g, '\\"'))
+ .map((p) => wordwrap(p))
+ .reduce((a, b) => a.concat(b));
+ if (parts.length == 1) {
+ outChunks.push(`${head} "${parts[0]}"\n`);
+ } else {
+ outChunks.push(`${head} ""\n`);
+ for (let p of parts) {
+ outChunks.push(`"${p}"\n`);
}
}
+}
- function getJsxElementPath(node: ts.Node) {
- let path;
- let process = (childNode) => {
- switch (childNode.kind) {
- case ts.SyntaxKind.JsxOpeningElement: {
- let e = childNode as ts.JsxOpeningElement;
- return (path = getPath(e.tagName));
- }
- default:
- break;
- }
- };
- ts.forEachChild(node, process);
- return path;
- }
-
- function translateJsxExpression(node: ts.Node, h) {
- switch (node.kind) {
- case ts.SyntaxKind.StringLiteral: {
- let e = node as ts.StringLiteral;
- return e.text;
+function getJsxElementPath(node: ts.Node) {
+ let path;
+ let process = (childNode) => {
+ switch (childNode.kind) {
+ case ts.SyntaxKind.JsxOpeningElement: {
+ let e = childNode as ts.JsxOpeningElement;
+ return (path = getPath(e.tagName));
}
default:
- return `%${h[0]++}$s`;
+ break;
}
- }
+ };
+ ts.forEachChild(node, process);
+ return path;
+}
- function trim(s: string) {
- return s.replace(/^[ \n\t]*/, "").replace(/[ \n\t]*$/, "");
+function translateJsxExpression(node: ts.Node, h) {
+ switch (node.kind) {
+ case ts.SyntaxKind.StringLiteral: {
+ let e = node as ts.StringLiteral;
+ return e.text;
+ }
+ default:
+ return `%${h[0]++}$s`;
}
+}
+
+function trim(s: string) {
+ return s.replace(/^[ \n\t]*/, "").replace(/[ \n\t]*$/, "");
+}
- function getJsxContent(node: ts.Node) {
- let fragments = [];
- let holeNum = [1];
- let process = (childNode) => {
- switch (childNode.kind) {
- case ts.SyntaxKind.JsxText: {
- let e = childNode as ts.JsxText;
- let s = e.text;
- let t = s.split("\n").map(trim).join(" ");
- if (s[0] === " ") {
- t = " " + t;
- }
- if (s[s.length - 1] === " ") {
- t = t + " ";
- }
- fragments.push(t);
+function getJsxContent(node: ts.Node) {
+ let fragments = [];
+ let holeNum = [1];
+ let process = (childNode) => {
+ switch (childNode.kind) {
+ case ts.SyntaxKind.JsxText: {
+ let e = childNode as ts.JsxText;
+ let s = e.text;
+ let t = s.split("\n").map(trim).join(" ");
+ if (s[0] === " ") {
+ t = " " + t;
}
- case ts.SyntaxKind.JsxOpeningElement:
- break;
- case ts.SyntaxKind.JsxSelfClosingElement:
- case ts.SyntaxKind.JsxElement:
- fragments.push(`%${holeNum[0]++}$s`);
- break;
- case ts.SyntaxKind.JsxExpression: {
- let e = childNode as ts.JsxExpression;
- fragments.push(translateJsxExpression(e.expression, holeNum));
- break;
+ if (s[s.length - 1] === " ") {
+ t = t + " ";
}
- case ts.SyntaxKind.JsxClosingElement:
- break;
- default:
- console.log("unhandled node type: ", childNode.kind)
- let lc = ts.getLineAndCharacterOfPosition(
- childNode.getSourceFile(),
- childNode.getStart(),
- );
- console.error(
- `unrecognized syntax in JSX Element ${ts.SyntaxKind[childNode.kind]} (${childNode.getSourceFile().fileName}:${lc.line + 1}:${lc.character + 1}`,
- );
- break;
+ fragments.push(t);
}
- };
- ts.forEachChild(node, process);
- return fragments.join("").trim().replace(/ +/g, " ");
- }
-
- function getJsxSingular(node: ts.Node) {
- let res;
- let process = (childNode) => {
- switch (childNode.kind) {
- case ts.SyntaxKind.JsxElement: {
- let path = getJsxElementPath(childNode);
- if (arrayEq(path, ["i18n", "TranslateSingular"])) {
- res = getJsxContent(childNode);
- }
- }
- default:
- break;
+ case ts.SyntaxKind.JsxOpeningElement:
+ break;
+ case ts.SyntaxKind.JsxSelfClosingElement:
+ case ts.SyntaxKind.JsxElement:
+ fragments.push(`%${holeNum[0]++}$s`);
+ break;
+ case ts.SyntaxKind.JsxExpression: {
+ let e = childNode as ts.JsxExpression;
+ fragments.push(translateJsxExpression(e.expression, holeNum));
+ break;
}
- };
- ts.forEachChild(node, process);
- return res;
- }
+ case ts.SyntaxKind.JsxClosingElement:
+ break;
+ default:
+ console.log("unhandled node type: ", childNode.kind);
+ let lc = ts.getLineAndCharacterOfPosition(
+ childNode.getSourceFile(),
+ childNode.getStart(),
+ );
+ console.error(
+ `unrecognized syntax in JSX Element ${
+ ts.SyntaxKind[childNode.kind]
+ } (${childNode.getSourceFile().fileName}:${lc.line + 1}:${
+ lc.character + 1
+ }`,
+ );
+ break;
+ }
+ };
+ ts.forEachChild(node, process);
+ return fragments.join("").trim().replace(/ +/g, " ");
+}
- function getJsxPlural(node: ts.Node) {
- let res;
- let process = (childNode) => {
- switch (childNode.kind) {
- case ts.SyntaxKind.JsxElement: {
- let path = getJsxElementPath(childNode);
- if (arrayEq(path, ["i18n", "TranslatePlural"])) {
- res = getJsxContent(childNode);
- }
+function getJsxSingular(node: ts.Node) {
+ let res;
+ let process = (childNode) => {
+ switch (childNode.kind) {
+ case ts.SyntaxKind.JsxElement: {
+ let path = getJsxElementPath(childNode);
+ if (arrayEq(path, ["i18n", "TranslateSingular"])) {
+ res = getJsxContent(childNode);
}
- default:
- break;
}
- };
- ts.forEachChild(node, process);
- return res;
- }
+ default:
+ break;
+ }
+ };
+ ts.forEachChild(node, process);
+ return res;
+}
- function processNode(node: ts.Node) {
- switch (node.kind) {
- case ts.SyntaxKind.JsxElement:
- let path = getJsxElementPath(node);
- if (arrayEq(path, ["i18n", "Translate"])) {
- let content = getJsxContent(node);
- let { line } = ts.getLineAndCharacterOfPosition(sourceFile, node.pos);
- let comment = getComment(node);
- if (!knownMessageIds.has(content)) {
- knownMessageIds.add(content);
- formatMsgComment(line, comment);
- formatMsgLine("msgid", content);
- outChunks.push(`msgstr ""\n`);
- outChunks.push("\n");
- }
- return;
- }
- if (arrayEq(path, ["i18n", "TranslateSwitch"])) {
- let { line } = ts.getLineAndCharacterOfPosition(sourceFile, node.pos);
- let comment = getComment(node);
- formatMsgComment(line, comment);
- let singularForm = getJsxSingular(node);
- if (!singularForm) {
- console.error("singular form missing");
- process.exit(1);
- }
- let pluralForm = getJsxPlural(node);
- if (!pluralForm) {
- console.error("plural form missing");
- process.exit(1);
- }
- if (!knownMessageIds.has(singularForm)) {
- knownMessageIds.add(singularForm);
- formatMsgLine("msgid", singularForm);
- formatMsgLine("msgid_plural", pluralForm);
- outChunks.push(`msgstr[0] ""\n`);
- outChunks.push(`msgstr[1] ""\n`);
- outChunks.push(`\n`);
- }
- return;
+function getJsxPlural(node: ts.Node) {
+ let res;
+ let process = (childNode) => {
+ switch (childNode.kind) {
+ case ts.SyntaxKind.JsxElement: {
+ let path = getJsxElementPath(childNode);
+ if (arrayEq(path, ["i18n", "TranslatePlural"])) {
+ res = getJsxContent(childNode);
}
+ }
+ default:
break;
- case ts.SyntaxKind.CallExpression: {
- // might be i18n.plural(i18n[.X]`...`, i18n[.X]`...`)
- let ce = <ts.CallExpression>node;
- let path = getPath(ce.expression);
- if (!arrayEq(path, ["i18n", "plural"])) {
- break;
+ }
+ };
+ ts.forEachChild(node, process);
+ return res;
+}
+
+function processNode(
+ node: ts.Node,
+ preLastTokLine: number,
+ lastTokLine: number,
+ sourceFile: ts.SourceFile,
+ outChunks: string[],
+ knownMessageIds: Set<string>,
+) {
+ switch (node.kind) {
+ case ts.SyntaxKind.JsxElement:
+ let path = getJsxElementPath(node);
+ if (arrayEq(path, ["i18n", "Translate"])) {
+ let content = getJsxContent(node);
+ let { line } = ts.getLineAndCharacterOfPosition(sourceFile, node.pos);
+ let comment = getComment(sourceFile, preLastTokLine, lastTokLine, node);
+ if (!knownMessageIds.has(content)) {
+ knownMessageIds.add(content);
+ formatMsgComment(sourceFile, outChunks, line, comment);
+ formatMsgLine(outChunks, "msgid", content);
+ outChunks.push(`msgstr ""\n`);
+ outChunks.push("\n");
}
- if (ce.arguments[0].kind != ts.SyntaxKind.TaggedTemplateExpression) {
- break;
+ return;
+ }
+ if (arrayEq(path, ["i18n", "TranslateSwitch"])) {
+ let { line } = ts.getLineAndCharacterOfPosition(sourceFile, node.pos);
+ let comment = getComment(sourceFile, preLastTokLine, lastTokLine, node);
+ formatMsgComment(sourceFile, outChunks, line, comment);
+ let singularForm = getJsxSingular(node);
+ if (!singularForm) {
+ console.error("singular form missing");
+ process.exit(1);
}
- if (ce.arguments[1].kind != ts.SyntaxKind.TaggedTemplateExpression) {
- break;
+ let pluralForm = getJsxPlural(node);
+ if (!pluralForm) {
+ console.error("plural form missing");
+ process.exit(1);
}
- let { line } = ts.getLineAndCharacterOfPosition(sourceFile, ce.pos);
- let t1 = processTaggedTemplateExpression(
- <ts.TaggedTemplateExpression>ce.arguments[0],
- );
- let t2 = processTaggedTemplateExpression(
- <ts.TaggedTemplateExpression>ce.arguments[1],
- );
- let comment = getComment(ce);
- const msgid = t1.template;
- if (!knownMessageIds.has(msgid)) {
- knownMessageIds.add(msgid);
- formatMsgComment(line, comment);
- formatMsgLine("msgid", t1.template);
- formatMsgLine("msgid_plural", t2.template);
+ if (!knownMessageIds.has(singularForm)) {
+ knownMessageIds.add(singularForm);
+ formatMsgLine(outChunks, "msgid", singularForm);
+ formatMsgLine(outChunks, "msgid_plural", pluralForm);
outChunks.push(`msgstr[0] ""\n`);
outChunks.push(`msgstr[1] ""\n`);
- outChunks.push("\n");
+ outChunks.push(`\n`);
}
-
- // Important: no processing for child i18n expressions here
return;
}
- case ts.SyntaxKind.TaggedTemplateExpression: {
- let tte = <ts.TaggedTemplateExpression>node;
- let { comment, template, line, path } =
- processTaggedTemplateExpression(tte);
- if (path[0] != "i18n") {
- break;
- }
- const msgid = template;
- if (!knownMessageIds.has(msgid)) {
- knownMessageIds.add(msgid);
- formatMsgComment(line, comment);
- formatMsgLine("msgid", template);
- outChunks.push(`msgstr ""\n`);
- outChunks.push("\n");
- }
+ break;
+ case ts.SyntaxKind.CallExpression: {
+ // might be i18n.plural(i18n[.X]`...`, i18n[.X]`...`)
+ let ce = <ts.CallExpression>node;
+ let path = getPath(ce.expression);
+ if (!arrayEq(path, ["i18n", "plural"])) {
break;
}
- }
+ if (ce.arguments[0].kind != ts.SyntaxKind.TaggedTemplateExpression) {
+ break;
+ }
+ if (ce.arguments[1].kind != ts.SyntaxKind.TaggedTemplateExpression) {
+ break;
+ }
+ let { line } = ts.getLineAndCharacterOfPosition(sourceFile, ce.pos);
+ let t1 = processTaggedTemplateExpression(
+ sourceFile,
+ preLastTokLine,
+ lastTokLine,
+ <ts.TaggedTemplateExpression>ce.arguments[0],
+ );
+ let t2 = processTaggedTemplateExpression(
+ sourceFile,
+ preLastTokLine,
+ lastTokLine,
+ <ts.TaggedTemplateExpression>ce.arguments[1],
+ );
+ let comment = getComment(sourceFile, preLastTokLine, lastTokLine, ce);
+ const msgid = t1.template;
+ if (!knownMessageIds.has(msgid)) {
+ knownMessageIds.add(msgid);
+ formatMsgComment(sourceFile, outChunks, line, comment);
+ formatMsgLine(outChunks, "msgid", t1.template);
+ formatMsgLine(outChunks, "msgid_plural", t2.template);
+ outChunks.push(`msgstr[0] ""\n`);
+ outChunks.push(`msgstr[1] ""\n`);
+ outChunks.push("\n");
+ }
- ts.forEachChild(node, processNode);
+ // Important: no processing for child i18n expressions here
+ return;
+ }
+ case ts.SyntaxKind.TaggedTemplateExpression: {
+ let tte = <ts.TaggedTemplateExpression>node;
+ let { comment, template, line, path } = processTaggedTemplateExpression(
+ sourceFile,
+ preLastTokLine,
+ lastTokLine,
+ tte,
+ );
+ if (path[0] != "i18n") {
+ break;
+ }
+ const msgid = template;
+ if (!knownMessageIds.has(msgid)) {
+ knownMessageIds.add(msgid);
+ formatMsgComment(sourceFile, outChunks, line, comment);
+ formatMsgLine(outChunks, "msgid", template);
+ outChunks.push(`msgstr ""\n`);
+ outChunks.push("\n");
+ }
+ break;
+ }
}
+
+ ts.forEachChild(node, (n) => {
+ processNode(
+ n,
+ lastTokLine,
+ preLastTokLine,
+ sourceFile,
+ outChunks,
+ knownMessageIds,
+ );
+ });
+}
+
+export function processFile2(sourceFile: ts.SourceFile): string {
+ // let lastTokLine = 0;
+ // let preLastTokLine = 0;
+ const result: string[] = new Array<string>();
+ processNode(sourceFile, 0, 0, sourceFile, result, new Set<string>());
+ return result.join("");
+}
+
+export function processFile(
+ sourceFile: ts.SourceFile,
+ outChunks: string[],
+ knownMessageIds: Set<string>,
+) {
+ // let lastTokLine = 0;
+ // let preLastTokLine = 0;
+ processNode(sourceFile, 0, 0, sourceFile, outChunks, knownMessageIds);
}
export function potextract() {
@@ -439,11 +490,11 @@ export function potextract() {
!prog.isSourceFileDefaultLibrary(x),
);
- let header: string
+ let header: string;
try {
- header = fs.readFileSync("src/i18n/poheader", "utf-8")
+ header = fs.readFileSync("src/i18n/poheader", "utf-8");
} catch (e) {
- header = DEFAULT_PO_HEADER
+ header = DEFAULT_PO_HEADER;
}
const chunks = [header];
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
@@ -40,7 +40,7 @@ importers:
version: link:../web-util
'@headlessui/react':
specifier: ^1.7.14
- version: 1.7.14(react-dom@18.3.1)(react@18.3.1)
+ version: 1.7.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@heroicons/react':
specifier: ^2.0.17
version: 2.0.17(react@18.3.1)
@@ -65,10 +65,10 @@ importers:
version: link:../pogen
'@tailwindcss/forms':
specifier: ^0.5.3
- version: 0.5.3(tailwindcss@3.3.2)
+ version: 0.5.3(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3)))
'@tailwindcss/typography':
specifier: ^0.5.9
- version: 0.5.9(tailwindcss@3.3.2)
+ version: 0.5.9(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3)))
'@types/chai':
specifier: ^4.3.0
version: 4.3.3
@@ -80,7 +80,7 @@ importers:
version: 10.0.1
'@typescript-eslint/eslint-plugin':
specifier: ^6.19.0
- version: 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ version: 6.19.0(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^6.19.0
version: 6.19.0(eslint@8.56.0)(typescript@5.3.3)
@@ -113,10 +113,10 @@ importers:
version: 8.4.23
postcss-cli:
specifier: ^10.1.0
- version: 10.1.0(postcss@8.4.23)
+ version: 10.1.0(postcss@8.4.23)(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3))
tailwindcss:
specifier: ^3.3.2
- version: 3.3.2
+ version: 3.3.2(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3))
typescript:
specifier: 5.3.3
version: 5.3.3
@@ -160,7 +160,7 @@ importers:
devDependencies:
ava:
specifier: ^6.0.1
- version: 6.0.1(@ava/typescript@4.1.0)
+ version: 6.0.1(@ava/typescript@4.1.0)(encoding@0.1.13)
typescript:
specifier: ^5.3.3
version: 5.3.3
@@ -279,7 +279,7 @@ importers:
version: 18.11.17
'@typescript-eslint/eslint-plugin':
specifier: ^4.22.0
- version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.3.3)
+ version: 4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^4.22.0
version: 4.33.0(eslint@7.32.0)(typescript@5.3.3)
@@ -318,7 +318,7 @@ importers:
version: 7.32.0
eslint-config-preact:
specifier: ^1.1.4
- version: 1.3.0(@typescript-eslint/eslint-plugin@4.33.0)(eslint@7.32.0)(typescript@5.3.3)
+ version: 1.3.0(@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3)
eslint-plugin-header:
specifier: ^3.1.1
version: 3.1.1(eslint@7.32.0)
@@ -330,7 +330,7 @@ importers:
version: 0.0.10
html-webpack-skip-assets-plugin:
specifier: ^1.0.1
- version: 1.0.3(html-webpack-plugin@5.6.0)(webpack@4.46.0)
+ version: 1.0.3(html-webpack-plugin@5.6.0(webpack@4.46.0))(webpack@4.46.0)
inline-chunk-html-plugin:
specifier: ^1.1.1
version: 1.1.1
@@ -379,10 +379,10 @@ importers:
version: link:../pogen
'@tailwindcss/forms':
specifier: ^0.5.3
- version: 0.5.3(tailwindcss@3.3.2)
+ version: 0.5.3(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)))
'@tailwindcss/typography':
specifier: ^0.5.9
- version: 0.5.9(tailwindcss@3.3.2)
+ version: 0.5.9(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)))
'@types/chai':
specifier: ^4.3.0
version: 4.3.3
@@ -397,7 +397,7 @@ importers:
version: 18.11.17
'@typescript-eslint/eslint-plugin':
specifier: ^6.19.0
- version: 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ version: 6.19.0(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^6.19.0
version: 6.19.0(eslint@8.56.0)(typescript@5.3.3)
@@ -427,7 +427,7 @@ importers:
version: 0.4.5
tailwindcss:
specifier: ^3.3.2
- version: 3.3.2
+ version: 3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3))
typescript:
specifier: 5.3.3
version: 5.3.3
@@ -452,10 +452,10 @@ importers:
version: link:../pogen
'@tailwindcss/forms':
specifier: ^0.5.3
- version: 0.5.3(tailwindcss@3.3.2)
+ version: 0.5.3(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)))
'@tailwindcss/typography':
specifier: ^0.5.9
- version: 0.5.9(tailwindcss@3.3.2)
+ version: 0.5.9(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)))
'@types/chai':
specifier: ^4.3.0
version: 4.3.3
@@ -470,7 +470,7 @@ importers:
version: 18.11.17
'@typescript-eslint/eslint-plugin':
specifier: ^6.19.0
- version: 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ version: 6.19.0(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^6.19.0
version: 6.19.0(eslint@8.56.0)(typescript@5.3.3)
@@ -500,7 +500,7 @@ importers:
version: 0.4.5
tailwindcss:
specifier: ^3.3.2
- version: 3.3.2
+ version: 3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3))
typescript:
specifier: 5.3.3
version: 5.3.3
@@ -523,7 +523,7 @@ importers:
version: 20.4.1
ava:
specifier: ^6.0.1
- version: 6.0.1(@ava/typescript@4.1.0)
+ version: 6.0.1(@ava/typescript@4.1.0)(encoding@0.1.13)
prettier:
specifier: ^3.1.1
version: 3.1.1
@@ -551,10 +551,10 @@ importers:
version: link:../pogen
'@tailwindcss/forms':
specifier: ^0.5.3
- version: 0.5.3(tailwindcss@3.3.2)
+ version: 0.5.3(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)))
'@tailwindcss/typography':
specifier: ^0.5.9
- version: 0.5.9(tailwindcss@3.3.2)
+ version: 0.5.9(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)))
'@types/chai':
specifier: ^4.3.0
version: 4.3.3
@@ -569,7 +569,7 @@ importers:
version: 18.11.17
'@typescript-eslint/eslint-plugin':
specifier: ^6.19.0
- version: 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ version: 6.19.0(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^6.19.0
version: 6.19.0(eslint@8.56.0)(typescript@5.3.3)
@@ -599,7 +599,7 @@ importers:
version: 0.4.5
tailwindcss:
specifier: ^3.3.2
- version: 3.3.2
+ version: 3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3))
typescript:
specifier: 5.3.3
version: 5.3.3
@@ -648,7 +648,7 @@ importers:
version: 20.11.13
'@typescript-eslint/eslint-plugin':
specifier: ^4.22.0
- version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.3.3)
+ version: 4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^4.22.0
version: 4.33.0(eslint@7.32.0)(typescript@5.3.3)
@@ -663,7 +663,7 @@ importers:
version: 7.32.0
eslint-config-preact:
specifier: ^1.1.4
- version: 1.3.0(@typescript-eslint/eslint-plugin@4.33.0)(eslint@7.32.0)(typescript@5.3.3)
+ version: 1.3.0(@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3)
eslint-plugin-header:
specifier: ^3.1.1
version: 3.1.1(eslint@7.32.0)
@@ -736,7 +736,7 @@ importers:
version: 18.11.17
'@typescript-eslint/eslint-plugin':
specifier: ^6.19.0
- version: 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ version: 6.19.0(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^6.19.0
version: 6.19.0(eslint@8.56.0)(typescript@5.3.3)
@@ -801,6 +801,9 @@ importers:
specifier: ^10.3.10
version: 10.3.10
devDependencies:
+ ava:
+ specifier: ^6.0.1
+ version: 6.0.1(@ava/typescript@4.1.0)(encoding@0.1.13)
po2json:
specifier: ^0.4.5
version: 0.4.5
@@ -862,13 +865,13 @@ importers:
version: 18.11.17
'@typescript-eslint/eslint-plugin':
specifier: ^6.19.0
- version: 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ version: 6.19.0(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^6.19.0
version: 6.19.0(eslint@8.56.0)(typescript@5.3.3)
ava:
specifier: ^6.0.1
- version: 6.0.1(@ava/typescript@4.1.0)
+ version: 6.0.1(@ava/typescript@4.1.0)(encoding@0.1.13)
esbuild:
specifier: ^0.19.9
version: 0.19.9
@@ -933,13 +936,13 @@ importers:
version: link:../pogen
'@typescript-eslint/eslint-plugin':
specifier: ^5.36.1
- version: 5.41.0(@typescript-eslint/parser@5.41.0)(eslint@8.26.0)(typescript@5.3.3)
+ version: 5.41.0(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^5.36.1
version: 5.41.0(eslint@8.26.0)(typescript@5.3.3)
ava:
specifier: ^6.0.1
- version: 6.0.1(@ava/typescript@4.1.0)
+ version: 6.0.1(@ava/typescript@4.1.0)(encoding@0.1.13)
c8:
specifier: ^8.0.1
version: 8.0.1
@@ -948,10 +951,10 @@ importers:
version: 8.26.0
eslint-config-airbnb-typescript:
specifier: ^17.1.0
- version: 17.1.0(@typescript-eslint/eslint-plugin@5.41.0)(@typescript-eslint/parser@5.41.0)(eslint-plugin-import@2.29.1)(eslint@8.26.0)
+ version: 17.1.0(@typescript-eslint/eslint-plugin@5.41.0(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0)(typescript@5.3.3))(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0))(eslint@8.26.0)
eslint-plugin-import:
specifier: ^2.29.1
- version: 2.29.1(@typescript-eslint/parser@5.41.0)(eslint@8.26.0)
+ version: 2.29.1(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0)
eslint-plugin-jsx-a11y:
specifier: ^6.8.0
version: 6.8.0(eslint@8.26.0)
@@ -1079,7 +1082,7 @@ importers:
version: 18.11.17
'@typescript-eslint/eslint-plugin':
specifier: ^6.19.0
- version: 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ version: 6.19.0(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^6.19.0
version: 6.19.0(eslint@8.56.0)(typescript@5.3.3)
@@ -1109,7 +1112,7 @@ importers:
version: 4.2.2
preact-cli:
specifier: ^3.3.5
- version: 3.4.1(eslint@8.56.0)(preact-render-to-string@5.2.6)(preact@10.11.3)
+ version: 3.4.1(encoding@0.1.13)(eslint@8.56.0)(preact-render-to-string@5.2.6(preact@10.11.3))(preact@10.11.3)(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3))
preact-render-to-string:
specifier: ^5.1.19
version: 5.2.6(preact@10.11.3)
@@ -1118,7 +1121,7 @@ importers:
version: 5.3.3
web-ext:
specifier: ^7.11.0
- version: 7.11.0
+ version: 7.11.0(express@4.18.2)
packages/web-util:
dependencies:
@@ -1133,7 +1136,7 @@ importers:
version: 0.0.197
tailwindcss:
specifier: ^3.3.2
- version: 3.3.2
+ version: 3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3))
devDependencies:
'@babel/preset-react':
specifier: ^7.22.3
@@ -1191,7 +1194,7 @@ importers:
version: 8.4.23
postcss-load-config:
specifier: ^4.0.1
- version: 4.0.1(postcss@8.4.23)
+ version: 4.0.1(postcss@8.4.23)(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3))
preact:
specifier: 10.11.3
version: 10.11.3
@@ -1510,10 +1513,12 @@ packages:
'@babel/parser@7.19.6':
resolution: {integrity: sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==}
engines: {node: '>=6.0.0'}
+ hasBin: true
'@babel/parser@7.21.8':
resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==}
engines: {node: '>=6.0.0'}
+ hasBin: true
'@babel/parser@7.23.5':
resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==}
@@ -1584,6 +1589,7 @@ packages:
'@babel/plugin-proposal-export-namespace-from@7.18.9':
resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==}
engines: {node: '>=6.9.0'}
+ deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.
peerDependencies:
'@babel/core': ^7.0.0-0
@@ -1639,6 +1645,7 @@ packages:
'@babel/plugin-proposal-private-property-in-object@7.18.6':
resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==}
engines: {node: '>=6.9.0'}
+ deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.
peerDependencies:
'@babel/core': ^7.0.0-0
@@ -2634,14 +2641,17 @@ packages:
'@humanwhocodes/config-array@0.11.13':
resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==}
engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
'@humanwhocodes/config-array@0.11.6':
resolution: {integrity: sha512-jJr+hPTJYKyDILJfhNSHsjiwXYf26Flsz8DvNndOsHs5pwSnpGUEy8yzF0JYhCEvTDdV2vuOK5tt8BVhwO5/hg==}
engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
'@humanwhocodes/config-array@0.5.0':
resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==}
engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
'@humanwhocodes/module-importer@1.0.1':
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
@@ -2649,9 +2659,11 @@ packages:
'@humanwhocodes/object-schema@1.2.1':
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
+ deprecated: Use @eslint/object-schema instead
'@humanwhocodes/object-schema@2.0.1':
resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==}
+ deprecated: Use @eslint/object-schema instead
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
@@ -3418,6 +3430,7 @@ packages:
acorn@7.4.1:
resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
engines: {node: '>=0.4.0'}
+ hasBin: true
acorn@8.11.2:
resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
@@ -3432,6 +3445,7 @@ packages:
acorn@8.8.1:
resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==}
engines: {node: '>=0.4.0'}
+ hasBin: true
addons-linter@6.21.0:
resolution: {integrity: sha512-4GBn14BR16FZE7dog6uz+1HO6V3B+mAVxmbwxRhed2y5eyrwIW832TmEpku+5A5bbovBZ4gilXEtBsl6A1AMmg==}
@@ -3582,6 +3596,7 @@ packages:
are-we-there-yet@2.0.0:
resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
engines: {node: '>=10'}
+ deprecated: This package is no longer supported.
arg@4.1.3:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
@@ -3952,6 +3967,7 @@ packages:
browserslist@4.21.5:
resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
browserslist@4.22.2:
resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
@@ -4964,6 +4980,7 @@ packages:
ejs@3.1.8:
resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==}
engines: {node: '>=0.10.0'}
+ hasBin: true
electron-to-chromium@1.4.284:
resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==}
@@ -5261,10 +5278,12 @@ packages:
eslint@7.32.0:
resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==}
engines: {node: ^10.12.0 || >=12.0.0}
+ hasBin: true
eslint@8.26.0:
resolution: {integrity: sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
eslint@8.56.0:
resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==}
@@ -5656,6 +5675,7 @@ packages:
gauge@3.0.2:
resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
engines: {node: '>=10'}
+ deprecated: This package is no longer supported.
gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
@@ -5718,7 +5738,7 @@ packages:
resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
gettext-parser@1.1.0:
- resolution: {integrity: sha1-LFpmONiTk0ubVQN9CtgstwBLJnk=}
+ resolution: {integrity: sha512-zL3eayB0jF+cr6vogH/VJKoKcj7uQj2TPByaaj6a4k/3elk9iq7fiwCM2FqdzS/umo021RetSanVisarzeb9Wg==}
github-from-package@0.0.0:
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
@@ -5752,12 +5772,15 @@ packages:
glob@7.1.6:
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
+ deprecated: Glob versions prior to v9 are no longer supported
glob@7.2.0:
resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
glob@8.1.0:
resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
@@ -5850,6 +5873,7 @@ packages:
har-validator@5.1.5:
resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==}
engines: {node: '>=6'}
+ deprecated: this library is no longer supported
has-bigints@1.0.2:
resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
@@ -6162,6 +6186,7 @@ packages:
inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
inherits@2.0.1:
resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==}
@@ -6181,6 +6206,7 @@ packages:
inline-chunk-html-plugin@1.1.1:
resolution: {integrity: sha512-6W1eGIj8z/Yla6xJx5il6jJfCxMZS3kVkbiLQThbbjdsDLRIWkUVmpnhfW2l6WAwCW+qfy0zoXVGBZM1E5XF3g==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
internal-slot@1.0.6:
resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
@@ -6301,6 +6327,7 @@ packages:
is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
+ hasBin: true
is-extendable@0.1.1:
resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
@@ -6568,6 +6595,7 @@ packages:
jake@10.8.5:
resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==}
engines: {node: '>=10'}
+ hasBin: true
jed@1.1.1:
resolution: {integrity: sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==}
@@ -6658,6 +6686,7 @@ packages:
json5@2.2.1:
resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==}
engines: {node: '>=6'}
+ hasBin: true
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
@@ -6864,9 +6893,11 @@ packages:
loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
loupe@2.3.4:
resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==}
+ deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5
lower-case@1.1.4:
resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==}
@@ -7055,6 +7086,7 @@ packages:
mini-svg-data-uri@1.4.4:
resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
+ hasBin: true
minimalistic-assert@1.0.1:
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
@@ -7184,6 +7216,7 @@ packages:
mustache@4.2.0:
resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
+ hasBin: true
mv@2.1.1:
resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==}
@@ -7209,10 +7242,12 @@ packages:
nanoid@3.3.1:
resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
nanoid@3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
@@ -7299,7 +7334,8 @@ packages:
engines: {node: '>=12.19'}
nomnom@1.8.1:
- resolution: {integrity: sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=}
+ resolution: {integrity: sha512-5s0JxqhDx9/rksG2BTMVN1enjWSvPidpoSgViZU4ZXULyTe+7jxcCRLB6f42Z0l1xYJpleCBtSyY6Lwg3uu5CQ==}
+ deprecated: Package no longer supported. Contact support@npmjs.com for more info.
nopt@5.0.0:
resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
@@ -7344,6 +7380,7 @@ packages:
npmlog@5.0.1:
resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
+ deprecated: This package is no longer supported.
nth-check@1.0.2:
resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==}
@@ -7357,6 +7394,7 @@ packages:
nyc@15.1.0:
resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==}
engines: {node: '>=8.9'}
+ hasBin: true
oauth-sign@0.9.0:
resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}
@@ -8302,6 +8340,10 @@ packages:
q@1.5.1:
resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
+ deprecated: |-
+ You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.
+
+ (For a CapTP with native promises, see @endo/eventual-send and @endo/captp)
qrcode-generator@1.4.4:
resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==}
@@ -8665,6 +8707,7 @@ packages:
sass@1.56.1:
resolution: {integrity: sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==}
engines: {node: '>=12.0.0'}
+ hasBin: true
sax@1.2.4:
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
@@ -8721,6 +8764,7 @@ packages:
semver@6.3.0:
resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
+ hasBin: true
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
@@ -8854,6 +8898,7 @@ packages:
sirv-cli@1.0.14:
resolution: {integrity: sha512-yyUTNr984ANKDloqepkYbBSqvx3buwYg2sQKPWjSU+IBia5loaoka2If8N9CMwt8AfP179cdEl7kYJ//iWJHjQ==}
engines: {node: '>= 10'}
+ hasBin: true
sirv@1.0.19:
resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==}
@@ -8933,6 +8978,7 @@ packages:
source-map-url@0.4.1:
resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
+ deprecated: See https://github.com/lydell/source-map-url#deprecated
source-map@0.5.7:
resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
@@ -8952,6 +8998,7 @@ packages:
sourcemap-codec@1.4.8:
resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+ deprecated: Please use @jridgewell/sourcemap-codec instead
spawn-sync@1.0.15:
resolution: {integrity: sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==}
@@ -8995,6 +9042,7 @@ packages:
stable@0.1.8:
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
+ deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
stack-trace@0.0.10:
resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==}
@@ -9181,10 +9229,13 @@ packages:
svgo@1.3.2:
resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==}
engines: {node: '>=4.0.0'}
+ deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x.
+ hasBin: true
svgo@2.8.0:
resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
engines: {node: '>=10.13.0'}
+ hasBin: true
swr@2.0.3:
resolution: {integrity: sha512-sGvQDok/AHEWTPfhUWXEHBVEXmgGnuahyhmRQbjl9XBYxT/MSlAzvXEKQpyM++bMPaI52vcWS2HiKNaW7+9OFw==}
@@ -9689,6 +9740,7 @@ packages:
uuid@8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
v8-compile-cache-lib@3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
@@ -12578,7 +12630,7 @@ snapshots:
'@gar/promisify@1.1.3': {}
- '@headlessui/react@1.7.14(react-dom@18.3.1)(react@18.3.1)':
+ '@headlessui/react@1.7.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
client-only: 0.0.1
react: 18.3.1
@@ -12929,12 +12981,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@mapbox/node-pre-gyp@1.0.11':
+ '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)':
dependencies:
detect-libc: 2.0.2
https-proxy-agent: 5.0.1
make-dir: 3.1.0
- node-fetch: 2.7.0
+ node-fetch: 2.7.0(encoding@0.1.13)
nopt: 5.0.0
npmlog: 5.0.1
rimraf: 3.0.2
@@ -13071,18 +13123,31 @@ snapshots:
dependencies:
defer-to-connect: 2.0.1
- '@tailwindcss/forms@0.5.3(tailwindcss@3.3.2)':
+ '@tailwindcss/forms@0.5.3(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)))':
dependencies:
mini-svg-data-uri: 1.4.4
- tailwindcss: 3.3.2
+ tailwindcss: 3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3))
- '@tailwindcss/typography@0.5.9(tailwindcss@3.3.2)':
+ '@tailwindcss/forms@0.5.3(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3)))':
+ dependencies:
+ mini-svg-data-uri: 1.4.4
+ tailwindcss: 3.3.2(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3))
+
+ '@tailwindcss/typography@0.5.9(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)))':
dependencies:
lodash.castarray: 4.4.0
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
- tailwindcss: 3.3.2
+ tailwindcss: 3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3))
+
+ '@tailwindcss/typography@0.5.9(tailwindcss@3.3.2(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3)))':
+ dependencies:
+ lodash.castarray: 4.4.0
+ lodash.isplainobject: 4.0.6
+ lodash.merge: 4.6.2
+ postcss-selector-parser: 6.0.10
+ tailwindcss: 3.3.2(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3))
'@trysound/sax@0.2.0': {}
@@ -13264,7 +13329,7 @@ snapshots:
dependencies:
'@types/node': 20.11.13
- '@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.3.3)':
+ '@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3)':
dependencies:
'@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.3.3)
'@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.3.3)
@@ -13276,11 +13341,12 @@ snapshots:
regexpp: 3.2.0
semver: 7.3.8
tsutils: 3.21.0(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@5.41.0(@typescript-eslint/parser@5.41.0)(eslint@8.26.0)(typescript@5.3.3)':
+ '@typescript-eslint/eslint-plugin@5.41.0(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0)(typescript@5.3.3)':
dependencies:
'@typescript-eslint/parser': 5.41.0(eslint@8.26.0)(typescript@5.3.3)
'@typescript-eslint/scope-manager': 5.41.0
@@ -13292,11 +13358,12 @@ snapshots:
regexpp: 3.2.0
semver: 7.3.8
tsutils: 3.21.0(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)':
+ '@typescript-eslint/eslint-plugin@6.19.0(@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)':
dependencies:
'@eslint-community/regexpp': 4.10.0
'@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
@@ -13311,6 +13378,7 @@ snapshots:
natural-compare: 1.4.0
semver: 7.5.4
ts-api-utils: 1.0.3(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -13343,6 +13411,7 @@ snapshots:
'@typescript-eslint/typescript-estree': 4.33.0(typescript@5.3.3)
debug: 4.3.4
eslint: 7.32.0
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -13354,6 +13423,7 @@ snapshots:
'@typescript-eslint/typescript-estree': 5.41.0(typescript@5.3.3)
debug: 4.3.4
eslint: 8.26.0
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -13366,6 +13436,7 @@ snapshots:
'@typescript-eslint/visitor-keys': 6.19.0
debug: 4.3.4
eslint: 8.56.0
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -13392,6 +13463,7 @@ snapshots:
debug: 4.3.4
eslint: 8.26.0
tsutils: 3.21.0(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -13403,6 +13475,7 @@ snapshots:
debug: 4.3.4
eslint: 8.56.0
ts-api-utils: 1.0.3(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -13422,6 +13495,7 @@ snapshots:
is-glob: 4.0.3
semver: 7.5.4
tsutils: 3.21.0(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -13435,6 +13509,7 @@ snapshots:
is-glob: 4.0.3
semver: 7.6.2
tsutils: 3.21.0(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -13449,6 +13524,7 @@ snapshots:
minimatch: 9.0.3
semver: 7.5.4
ts-api-utils: 1.0.3(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -13516,9 +13592,9 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
- '@vercel/nft@0.24.4':
+ '@vercel/nft@0.24.4(encoding@0.1.13)':
dependencies:
- '@mapbox/node-pre-gyp': 1.0.11
+ '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13)
'@rollup/pluginutils': 4.2.1
acorn: 8.11.2
async-sema: 3.1.1
@@ -13674,12 +13750,12 @@ snapshots:
acorn@8.8.1: {}
- addons-linter@6.21.0(node-fetch@3.3.1):
+ addons-linter@6.21.0(express@4.18.2)(node-fetch@3.3.1):
dependencies:
'@fluent/syntax': 0.19.0
'@mdn/browser-compat-data': 5.5.7
addons-moz-compare: 1.3.0
- addons-scanner-utils: 9.9.0(node-fetch@3.3.1)
+ addons-scanner-utils: 9.9.0(express@4.18.2)(node-fetch@3.3.1)
ajv: 8.12.0
chalk: 4.1.2
cheerio: 1.0.0-rc.12
@@ -13717,15 +13793,17 @@ snapshots:
addons-moz-compare@1.3.0: {}
- addons-scanner-utils@9.9.0(node-fetch@3.3.1):
+ addons-scanner-utils@9.9.0(express@4.18.2)(node-fetch@3.3.1):
dependencies:
'@types/yauzl': 2.10.3
common-tags: 1.8.2
first-chunk-stream: 3.0.0
- node-fetch: 3.3.1
strip-bom-stream: 4.0.0
upath: 2.0.1
yauzl: 2.10.0
+ optionalDependencies:
+ express: 4.18.2
+ node-fetch: 3.3.1
adm-zip@0.5.10: {}
@@ -13745,7 +13823,7 @@ snapshots:
ajv: 6.12.6
ajv-formats@2.1.1(ajv@8.12.0):
- dependencies:
+ optionalDependencies:
ajv: 8.12.0
ajv-keywords@3.5.2(ajv@6.12.6):
@@ -14006,18 +14084,17 @@ snapshots:
autoprefixer@10.4.14(postcss@8.4.38):
dependencies:
- browserslist: 4.22.2
- caniuse-lite: 1.0.30001570
+ browserslist: 4.21.5
+ caniuse-lite: 1.0.30001482
fraction.js: 4.2.0
normalize-range: 0.1.2
- picocolors: 1.0.1
+ picocolors: 1.0.0
postcss: 8.4.38
postcss-value-parser: 4.2.0
- ava@6.0.1(@ava/typescript@4.1.0):
+ ava@6.0.1(@ava/typescript@4.1.0)(encoding@0.1.13):
dependencies:
- '@ava/typescript': 4.1.0
- '@vercel/nft': 0.24.4
+ '@vercel/nft': 0.24.4(encoding@0.1.13)
acorn: 8.11.2
acorn-walk: 8.3.1
ansi-styles: 6.2.1
@@ -14057,6 +14134,8 @@ snapshots:
temp-dir: 3.0.0
write-file-atomic: 5.0.1
yargs: 17.7.2
+ optionalDependencies:
+ '@ava/typescript': 4.1.0
transitivePeerDependencies:
- encoding
- supports-color
@@ -15065,11 +15144,10 @@ snapshots:
create-require@1.1.1: {}
- critters-webpack-plugin@2.5.0(html-webpack-plugin@3.2.0):
+ critters-webpack-plugin@2.5.0(html-webpack-plugin@3.2.0(webpack@4.46.0)):
dependencies:
css: 2.2.4
cssnano: 4.1.11
- html-webpack-plugin: 3.2.0(webpack@4.46.0)
jsdom: 12.2.0
minimatch: 3.1.2
parse5: 4.0.0
@@ -15077,6 +15155,8 @@ snapshots:
pretty-bytes: 4.0.2
webpack-log: 2.0.0
webpack-sources: 1.4.3
+ optionalDependencies:
+ html-webpack-plugin: 3.2.0(webpack@4.46.0)
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -15337,6 +15417,7 @@ snapshots:
debug@4.3.3(supports-color@8.1.1):
dependencies:
ms: 2.1.2
+ optionalDependencies:
supports-color: 8.1.1
debug@4.3.4:
@@ -15789,24 +15870,24 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.26.0):
+ eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0))(eslint@8.26.0):
dependencies:
confusing-browser-globals: 1.0.11
eslint: 8.26.0
- eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.41.0)(eslint@8.26.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0)
object.assign: 4.1.5
object.entries: 1.1.7
semver: 6.3.1
- eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@5.41.0)(@typescript-eslint/parser@5.41.0)(eslint-plugin-import@2.29.1)(eslint@8.26.0):
+ eslint-config-airbnb-typescript@17.1.0(@typescript-eslint/eslint-plugin@5.41.0(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0)(typescript@5.3.3))(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0))(eslint@8.26.0):
dependencies:
- '@typescript-eslint/eslint-plugin': 5.41.0(@typescript-eslint/parser@5.41.0)(eslint@8.26.0)(typescript@5.3.3)
+ '@typescript-eslint/eslint-plugin': 5.41.0(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0)(typescript@5.3.3)
'@typescript-eslint/parser': 5.41.0(eslint@8.26.0)(typescript@5.3.3)
eslint: 8.26.0
- eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.26.0)
- eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.41.0)(eslint@8.26.0)
+ eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0))(eslint@8.26.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0)
- eslint-config-preact@1.3.0(@typescript-eslint/eslint-plugin@4.33.0)(eslint@7.32.0)(typescript@5.3.3):
+ eslint-config-preact@1.3.0(@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3):
dependencies:
'@babel/core': 7.18.9
'@babel/eslint-parser': 7.19.1(@babel/core@7.18.9)(eslint@7.32.0)
@@ -15815,7 +15896,7 @@ snapshots:
'@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.18.9)
eslint: 7.32.0
eslint-plugin-compat: 4.0.2(eslint@7.32.0)
- eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@4.33.0)(eslint@7.32.0)(typescript@5.3.3)
+ eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3)
eslint-plugin-react: 7.33.2(eslint@7.32.0)
eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0)
transitivePeerDependencies:
@@ -15836,10 +15917,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.8.0(@typescript-eslint/parser@5.41.0)(eslint-import-resolver-node@0.3.9)(eslint@8.26.0):
+ eslint-module-utils@2.8.0(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.26.0):
dependencies:
- '@typescript-eslint/parser': 5.41.0(eslint@8.26.0)(typescript@5.3.3)
debug: 3.2.7
+ optionalDependencies:
+ '@typescript-eslint/parser': 5.41.0(eslint@8.26.0)(typescript@5.3.3)
eslint: 8.26.0
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
@@ -15861,9 +15943,8 @@ snapshots:
dependencies:
eslint: 7.32.0
- eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.41.0)(eslint@8.26.0):
+ eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint@8.26.0):
dependencies:
- '@typescript-eslint/parser': 5.41.0(eslint@8.26.0)(typescript@5.3.3)
array-includes: 3.1.7
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
@@ -15872,7 +15953,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.26.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.41.0)(eslint-import-resolver-node@0.3.9)(eslint@8.26.0)
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.41.0(eslint@8.26.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint@8.26.0)
hasown: 2.0.0
is-core-module: 2.13.1
is-glob: 4.0.3
@@ -15882,16 +15963,19 @@ snapshots:
object.values: 1.1.7
semver: 6.3.1
tsconfig-paths: 3.15.0
+ optionalDependencies:
+ '@typescript-eslint/parser': 5.41.0(eslint@8.26.0)(typescript@5.3.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@4.33.0)(eslint@7.32.0)(typescript@5.3.3):
+ eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.3.3)
'@typescript-eslint/experimental-utils': 5.41.0(eslint@7.32.0)(typescript@5.3.3)
eslint: 7.32.0
+ optionalDependencies:
+ '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.3.3))(eslint@7.32.0)(typescript@5.3.3)
transitivePeerDependencies:
- supports-color
- typescript
@@ -16506,7 +16590,6 @@ snapshots:
dependencies:
'@babel/code-frame': 7.23.5
chalk: 2.4.2
- eslint: 8.56.0
micromatch: 3.1.10
minimatch: 3.1.2
semver: 5.7.2
@@ -16514,6 +16597,8 @@ snapshots:
typescript: 4.6.4
webpack: 4.46.0
worker-rpc: 0.1.1
+ optionalDependencies:
+ eslint: 8.56.0
transitivePeerDependencies:
- supports-color
@@ -17043,9 +17128,10 @@ snapshots:
lodash: 4.17.21
pretty-error: 4.0.0
tapable: 2.2.1
+ optionalDependencies:
webpack: 4.46.0
- html-webpack-skip-assets-plugin@1.0.3(html-webpack-plugin@5.6.0)(webpack@4.46.0):
+ html-webpack-skip-assets-plugin@1.0.3(html-webpack-plugin@5.6.0(webpack@4.46.0))(webpack@4.46.0):
dependencies:
html-webpack-plugin: 5.6.0(webpack@4.46.0)
minimatch: 3.0.4
@@ -17088,12 +17174,13 @@ snapshots:
http-proxy-middleware@2.0.6(@types/express@4.17.14):
dependencies:
- '@types/express': 4.17.14
'@types/http-proxy': 1.17.9
http-proxy: 1.18.1
is-glob: 4.0.3
is-plain-obj: 3.0.0
micromatch: 4.0.5
+ optionalDependencies:
+ '@types/express': 4.17.14
transitivePeerDependencies:
- debug
@@ -17477,9 +17564,9 @@ snapshots:
isobject@3.0.1: {}
- isomorphic-unfetch@3.1.0:
+ isomorphic-unfetch@3.1.0(encoding@0.1.13):
dependencies:
- node-fetch: 2.7.0
+ node-fetch: 2.7.0(encoding@0.1.13)
unfetch: 4.2.0
transitivePeerDependencies:
- encoding
@@ -18298,9 +18385,11 @@ snapshots:
node-domexception@1.0.0: {}
- node-fetch@2.7.0:
+ node-fetch@2.7.0(encoding@0.1.13):
dependencies:
whatwg-url: 5.0.0
+ optionalDependencies:
+ encoding: 0.1.13
node-fetch@3.3.1:
dependencies:
@@ -18863,7 +18952,7 @@ snapshots:
postcss-selector-parser: 6.0.12
postcss-value-parser: 4.2.0
- postcss-cli@10.1.0(postcss@8.4.23):
+ postcss-cli@10.1.0(postcss@8.4.23)(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3)):
dependencies:
chokidar: 3.5.3
dependency-graph: 0.11.0
@@ -18872,7 +18961,7 @@ snapshots:
globby: 13.2.2
picocolors: 1.0.0
postcss: 8.4.23
- postcss-load-config: 4.0.1(postcss@8.4.23)
+ postcss-load-config: 4.0.1(postcss@8.4.23)(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3))
postcss-reporter: 7.0.5(postcss@8.4.23)
pretty-hrtime: 1.0.3
read-cache: 1.0.0
@@ -18952,17 +19041,29 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.4.23
- postcss-load-config@3.1.4(postcss@8.4.38):
+ postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)):
dependencies:
lilconfig: 2.1.0
- postcss: 8.4.38
yaml: 1.10.2
+ optionalDependencies:
+ postcss: 8.4.38
+ ts-node: 10.9.1(@types/node@18.11.17)(typescript@5.3.3)
- postcss-load-config@4.0.1(postcss@8.4.23):
+ postcss-load-config@4.0.1(postcss@8.4.23)(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)):
dependencies:
lilconfig: 2.1.0
+ yaml: 2.2.2
+ optionalDependencies:
postcss: 8.4.23
+ ts-node: 10.9.1(@types/node@18.11.17)(typescript@5.3.3)
+
+ postcss-load-config@4.0.1(postcss@8.4.23)(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3)):
+ dependencies:
+ lilconfig: 2.1.0
yaml: 2.2.2
+ optionalDependencies:
+ postcss: 8.4.23
+ ts-node: 10.9.1(@types/node@20.11.13)(typescript@5.3.3)
postcss-loader@4.3.0(postcss@8.4.38)(webpack@4.46.0):
dependencies:
@@ -19291,7 +19392,7 @@ snapshots:
picocolors: 1.0.1
source-map-js: 1.2.0
- preact-cli@3.4.1(eslint@8.56.0)(preact-render-to-string@5.2.6)(preact@10.11.3):
+ preact-cli@3.4.1(encoding@0.1.13)(eslint@8.56.0)(preact-render-to-string@5.2.6(preact@10.11.3))(preact@10.11.3)(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)):
dependencies:
'@babel/core': 7.18.9
'@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.18.9)
@@ -19315,7 +19416,7 @@ snapshots:
compression-webpack-plugin: 6.1.1(webpack@4.46.0)
console-clear: 1.1.1
copy-webpack-plugin: 6.4.1(webpack@4.46.0)
- critters-webpack-plugin: 2.5.0(html-webpack-plugin@3.2.0)
+ critters-webpack-plugin: 2.5.0(html-webpack-plugin@3.2.0(webpack@4.46.0))
cross-spawn-promise: 0.10.2
css-loader: 5.2.7(webpack@4.46.0)
dotenv: 16.0.3
@@ -19330,7 +19431,7 @@ snapshots:
html-webpack-exclude-assets-plugin: 0.0.7
html-webpack-plugin: 3.2.0(webpack@4.46.0)
ip: 1.1.8
- isomorphic-unfetch: 3.1.0
+ isomorphic-unfetch: 3.1.0(encoding@0.1.13)
kleur: 4.1.5
loader-utils: 2.0.3
mini-css-extract-plugin: 1.6.2(webpack@4.46.0)
@@ -19340,7 +19441,7 @@ snapshots:
ora: 5.4.1
pnp-webpack-plugin: 1.7.0(typescript@4.6.4)
postcss: 8.4.38
- postcss-load-config: 3.1.4(postcss@8.4.38)
+ postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3))
postcss-loader: 4.3.0(postcss@8.4.38)(webpack@4.46.0)
preact: 10.11.3
preact-render-to-string: 5.2.6(preact@10.11.3)
@@ -19358,7 +19459,7 @@ snapshots:
terser-webpack-plugin: 4.2.3(webpack@4.46.0)
typescript: 4.6.4
update-notifier: 5.1.0
- url-loader: 4.1.1(file-loader@6.2.0)(webpack@4.46.0)
+ url-loader: 4.1.1(file-loader@6.2.0(webpack@4.46.0))(webpack@4.46.0)
validate-npm-package-name: 4.0.0
webpack: 4.46.0
webpack-bundle-analyzer: 4.6.1
@@ -19464,7 +19565,7 @@ snapshots:
progress@2.0.3: {}
promise-inflight@1.0.1(bluebird@3.7.2):
- dependencies:
+ optionalDependencies:
bluebird: 3.7.2
promise-polyfill@8.2.3: {}
@@ -20598,7 +20699,7 @@ snapshots:
string-width: 4.2.3
strip-ansi: 6.0.1
- tailwindcss@3.3.2:
+ tailwindcss@3.3.2(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -20617,7 +20718,35 @@ snapshots:
postcss: 8.4.23
postcss-import: 15.1.0(postcss@8.4.23)
postcss-js: 4.0.1(postcss@8.4.23)
- postcss-load-config: 4.0.1(postcss@8.4.23)
+ postcss-load-config: 4.0.1(postcss@8.4.23)(ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3))
+ postcss-nested: 6.0.1(postcss@8.4.23)
+ postcss-selector-parser: 6.0.12
+ postcss-value-parser: 4.2.0
+ resolve: 1.22.2
+ sucrase: 3.32.0
+ transitivePeerDependencies:
+ - ts-node
+
+ tailwindcss@3.3.2(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3)):
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ arg: 5.0.2
+ chokidar: 3.5.3
+ didyoumean: 1.2.2
+ dlv: 1.1.3
+ fast-glob: 3.3.1
+ glob-parent: 6.0.2
+ is-glob: 4.0.3
+ jiti: 1.18.2
+ lilconfig: 2.1.0
+ micromatch: 4.0.5
+ normalize-path: 3.0.0
+ object-hash: 3.0.0
+ picocolors: 1.0.0
+ postcss: 8.4.23
+ postcss-import: 15.1.0(postcss@8.4.23)
+ postcss-js: 4.0.1(postcss@8.4.23)
+ postcss-load-config: 4.0.1(postcss@8.4.23)(ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3))
postcss-nested: 6.0.1(postcss@8.4.23)
postcss-selector-parser: 6.0.12
postcss-value-parser: 4.2.0
@@ -20825,6 +20954,25 @@ snapshots:
dependencies:
tslib: 2.6.2
+ ts-node@10.9.1(@types/node@18.11.17)(typescript@5.3.3):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.9
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.3
+ '@types/node': 18.11.17
+ acorn: 8.8.1
+ acorn-walk: 8.2.0
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 5.3.3
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ optional: true
+
ts-node@10.9.1(@types/node@20.11.13)(typescript@5.3.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
@@ -20844,7 +20992,7 @@ snapshots:
yn: 3.1.1
ts-pnp@1.2.0(typescript@4.6.4):
- dependencies:
+ optionalDependencies:
typescript: 4.6.4
tsconfig-paths@3.15.0:
@@ -21072,13 +21220,14 @@ snapshots:
urix@0.1.0: {}
- url-loader@4.1.1(file-loader@6.2.0)(webpack@4.46.0):
+ url-loader@4.1.1(file-loader@6.2.0(webpack@4.46.0))(webpack@4.46.0):
dependencies:
- file-loader: 6.2.0(webpack@4.46.0)
loader-utils: 2.0.3
mime-types: 2.1.35
schema-utils: 3.1.1
webpack: 4.46.0
+ optionalDependencies:
+ file-loader: 6.2.0(webpack@4.46.0)
url-parse-lax@3.0.0:
dependencies:
@@ -21199,11 +21348,11 @@ snapshots:
dependencies:
defaults: 1.0.4
- web-ext@7.11.0:
+ web-ext@7.11.0(express@4.18.2):
dependencies:
'@babel/runtime': 7.21.0
'@devicefarmer/adbkit': 3.2.3
- addons-linter: 6.21.0(node-fetch@3.3.1)
+ addons-linter: 6.21.0(express@4.18.2)(node-fetch@3.3.1)
bunyan: 1.8.15
camelcase: 7.0.1
chrome-launcher: 0.15.1