Compare commits
8 Commits
49f6bd7ed2
...
dee417aa05
Author | SHA1 | Date |
---|---|---|
adueck | dee417aa05 | |
adueck | 9ee16463e8 | |
adueck | a5735af4c1 | |
adueck | f0a804cee4 | |
adueck | fb220a728f | |
adueck | 185fe1ab07 | |
adueck | 62fcbbe4ce | |
adueck | b2f3dfe93c |
|
@ -0,0 +1,26 @@
|
||||||
|
name: Check Inflections
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["*"]
|
||||||
|
pull_request:
|
||||||
|
branches: ["*"]
|
||||||
|
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ci:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
LINGDOCS_DICTIONARY_URL: ${{ secrets.LINGDOCS_DICTIONARY_URL }}
|
||||||
|
LINGDOCS_NPM_TOKEN: ${{ secrets.LINGDOCS_NPM_TOKEN }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "npm"
|
||||||
|
- name: run script
|
||||||
|
run: |
|
||||||
|
yarn install-r
|
||||||
|
yarn check-all-inflections
|
|
@ -15,12 +15,14 @@ jobs:
|
||||||
LINGDOCS_DICTIONARY_URL: ${{ secrets.LINGDOCS_DICTIONARY_URL }}
|
LINGDOCS_DICTIONARY_URL: ${{ secrets.LINGDOCS_DICTIONARY_URL }}
|
||||||
LINGDOCS_NPM_TOKEN: ${{ secrets.LINGDOCS_NPM_TOKEN }}
|
LINGDOCS_NPM_TOKEN: ${{ secrets.LINGDOCS_NPM_TOKEN }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 16
|
||||||
|
cache: "yarn"
|
||||||
- name: Install, build, test
|
- name: Install, build, test
|
||||||
run: |
|
run: |
|
||||||
yarn install-r
|
yarn install-r
|
||||||
yarn build-library
|
yarn build-library
|
||||||
|
yarn build-website
|
||||||
yarn test --silent
|
yarn test --silent
|
||||||
|
|
|
@ -13,13 +13,14 @@ jobs:
|
||||||
LINGDOCS_DICTIONARY_URL: ${{ secrets.LINGDOCS_DICTIONARY_URL }}
|
LINGDOCS_DICTIONARY_URL: ${{ secrets.LINGDOCS_DICTIONARY_URL }}
|
||||||
LINGDOCS_NPM_TOKEN: ${{ secrets.LINGDOCS_NPM_TOKEN }}
|
LINGDOCS_NPM_TOKEN: ${{ secrets.LINGDOCS_NPM_TOKEN }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v1
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 16
|
||||||
|
cache: "yarn"
|
||||||
- name: Check if version has been updated
|
- name: Check if version has been updated
|
||||||
id: check
|
id: check
|
||||||
uses: EndBug/version-check@v1
|
uses: EndBug/version-check@v2
|
||||||
with:
|
with:
|
||||||
diff-search: true
|
diff-search: true
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
import * as T from "./src/types";
|
||||||
|
import { inflectWord } from "./src/lib/src/pashto-inflector";
|
||||||
|
import * as tp from "./src/lib/src/type-predicates";
|
||||||
|
import { conjugateVerb } from "./src/lib/src/verb-conjugation";
|
||||||
|
|
||||||
|
// Script to try inflecting all the words in the dictionary and make sure that
|
||||||
|
// no errors are thrown in the process
|
||||||
|
|
||||||
|
type InflectionError = {
|
||||||
|
ts: number;
|
||||||
|
p: string;
|
||||||
|
f: string;
|
||||||
|
err: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
async function checkAll() {
|
||||||
|
const res = await fetch(process.env.LINGDOCS_DICTIONARY_URL);
|
||||||
|
const { entries }: T.Dictionary = await res.json();
|
||||||
|
const errors: InflectionError[] = [];
|
||||||
|
|
||||||
|
entries.forEach((entry) => {
|
||||||
|
try {
|
||||||
|
inflectWord(entry);
|
||||||
|
} catch (e) {
|
||||||
|
errors.push({
|
||||||
|
ts: entry.ts,
|
||||||
|
p: entry.p,
|
||||||
|
f: entry.f,
|
||||||
|
err: e.toString(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (tp.isVerbEntry(entry)) {
|
||||||
|
const complement = entry.l
|
||||||
|
? entries.find((e) => e.ts === entry.l)
|
||||||
|
: undefined;
|
||||||
|
if (entry.l && !complement) {
|
||||||
|
errors.push({
|
||||||
|
ts: entry.ts,
|
||||||
|
p: entry.p,
|
||||||
|
f: entry.f,
|
||||||
|
err: "verb complement missing",
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
checkAll().then((errors) => {
|
||||||
|
if (errors.length) {
|
||||||
|
console.log(
|
||||||
|
"The following errors occured while inflecting all dictionary words"
|
||||||
|
);
|
||||||
|
console.log(errors);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
console.log("No errors occured while inflecting all dictionary words");
|
||||||
|
});
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "pashto-inflector",
|
"name": "pashto-inflector",
|
||||||
"version": "7.3.2",
|
"version": "7.4.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "pashto-inflector",
|
"name": "pashto-inflector",
|
||||||
"version": "7.3.2",
|
"version": "7.4.0",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "pashto-inflector",
|
"name": "pashto-inflector",
|
||||||
"version": "7.3.2",
|
"version": "7.4.0",
|
||||||
"author": "lingdocs.com",
|
"author": "lingdocs.com",
|
||||||
"description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations",
|
"description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations",
|
||||||
"homepage": "https://verbs.lingdocs.com",
|
"homepage": "https://verbs.lingdocs.com",
|
||||||
|
@ -28,6 +28,7 @@
|
||||||
"react-bootstrap": "^1.5.1",
|
"react-bootstrap": "^1.5.1",
|
||||||
"react-dom": "^17.0.1",
|
"react-dom": "^17.0.1",
|
||||||
"react-scripts": "4.0.3",
|
"react-scripts": "4.0.3",
|
||||||
|
"tsx": "^3.14.0",
|
||||||
"typescript": "^5.1.6",
|
"typescript": "^5.1.6",
|
||||||
"web-vitals": "^1.0.1"
|
"web-vitals": "^1.0.1"
|
||||||
},
|
},
|
||||||
|
@ -44,7 +45,8 @@
|
||||||
"build-website": "node get-words.js && npm run build",
|
"build-website": "node get-words.js && npm run build",
|
||||||
"build-library": "cd src/components && rimraf dist && tsc --project lib-tsconfig.json && node post-build.cjs && cd ../lib && rimraf dist && tsc --project lib-tsconfig.json && node_modules/rollup/dist/bin/rollup -c",
|
"build-library": "cd src/components && rimraf dist && tsc --project lib-tsconfig.json && node post-build.cjs && cd ../lib && rimraf dist && tsc --project lib-tsconfig.json && node_modules/rollup/dist/bin/rollup -c",
|
||||||
"test-ci": "npm run test -- --watchAll=false",
|
"test-ci": "npm run test -- --watchAll=false",
|
||||||
"get-words": "node get-words.js"
|
"get-words": "node get-words.js",
|
||||||
|
"check-all-inflections": "tsx check-all-inflections.ts"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"extends": [
|
"extends": [
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "@lingdocs/ps-react",
|
"name": "@lingdocs/ps-react",
|
||||||
"version": "7.3.2",
|
"version": "7.4.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@lingdocs/ps-react",
|
"name": "@lingdocs/ps-react",
|
||||||
"version": "7.3.2",
|
"version": "7.4.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@formkit/auto-animate": "^1.0.0-beta.3",
|
"@formkit/auto-animate": "^1.0.0-beta.3",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@lingdocs/ps-react",
|
"name": "@lingdocs/ps-react",
|
||||||
"version": "7.3.2",
|
"version": "7.4.0",
|
||||||
"description": "Pashto inflector library module with React components",
|
"description": "Pashto inflector library module with React components",
|
||||||
"main": "dist/components/library.js",
|
"main": "dist/components/library.js",
|
||||||
"module": "dist/components/library.js",
|
"module": "dist/components/library.js",
|
||||||
|
@ -32,6 +32,7 @@
|
||||||
"lz-string": "^1.4.4",
|
"lz-string": "^1.4.4",
|
||||||
"pbf": "^3.2.1",
|
"pbf": "^3.2.1",
|
||||||
"rambda": "^7.3.0",
|
"rambda": "^7.3.0",
|
||||||
|
"react-error-boundary": "^4.0.13",
|
||||||
"react-select": "^5.4.0"
|
"react-select": "^5.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
@ -1,18 +1,30 @@
|
||||||
import * as T from "../../types";
|
import * as T from "../../types";
|
||||||
import InlinePs from "./InlinePs";
|
import InlinePs from "./InlinePs";
|
||||||
|
|
||||||
export default function HumanReadableInflectionPattern(p: T.InflectionPattern, textOptions: T.TextOptions): JSX.Element | null {
|
export default function HumanReadableInflectionPattern(
|
||||||
return p === 1
|
p: T.InflectionPattern,
|
||||||
? <span>#1 Basic</span>
|
textOptions: T.TextOptions
|
||||||
: p === 2
|
): JSX.Element | null {
|
||||||
? <span>#2 Unstressed <InlinePs opts={textOptions}>{{ p: "ی", f: "ey", e: "" }}</InlinePs></span>
|
return p === 1 ? (
|
||||||
: p === 3
|
<span>#1 Basic</span>
|
||||||
? <span>#3 Stressed <InlinePs opts={textOptions}>{{ p: "ی", f: "éy", e: "" }}</InlinePs></span>
|
) : p === 2 ? (
|
||||||
: p === 4
|
<span>
|
||||||
? <span>#4 "Pashtoon"</span>
|
#2 Unstressed{" "}
|
||||||
: p === 5
|
<InlinePs opts={textOptions}>{{ p: "ی", f: "ay", e: "" }}</InlinePs>
|
||||||
? <span>#5 Short Squish</span>
|
</span>
|
||||||
: p === 6
|
) : p === 3 ? (
|
||||||
? <span>#6 Fem. inan. <InlinePs opts={textOptions}>{{ p: "ي", f: "ee", e: "" }}</InlinePs></span>
|
<span>
|
||||||
: null;
|
#3 Stressed{" "}
|
||||||
|
<InlinePs opts={textOptions}>{{ p: "ی", f: "áy", e: "" }}</InlinePs>
|
||||||
|
</span>
|
||||||
|
) : p === 4 ? (
|
||||||
|
<span>#4 "Pashtoon"</span>
|
||||||
|
) : p === 5 ? (
|
||||||
|
<span>#5 Short Squish</span>
|
||||||
|
) : p === 6 ? (
|
||||||
|
<span>
|
||||||
|
#6 Fem. inan.{" "}
|
||||||
|
<InlinePs opts={textOptions}>{{ p: "ي", f: "ee", e: "" }}</InlinePs>
|
||||||
|
</span>
|
||||||
|
) : null;
|
||||||
}
|
}
|
|
@ -24,6 +24,7 @@ function ChartDisplay({
|
||||||
transitivity: T.Transitivity;
|
transitivity: T.Transitivity;
|
||||||
objectNP: T.NPSelection | undefined;
|
objectNP: T.NPSelection | undefined;
|
||||||
}) {
|
}) {
|
||||||
|
try {
|
||||||
const verbChart = buildVerbChart({
|
const verbChart = buildVerbChart({
|
||||||
verb,
|
verb,
|
||||||
tense,
|
tense,
|
||||||
|
@ -45,6 +46,10 @@ function ChartDisplay({
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
return <h4>Error conjugating verb!</h4>;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ChartDisplay;
|
export default ChartDisplay;
|
||||||
|
|
|
@ -1,72 +1,138 @@
|
||||||
import { compileVP } from "../../../lib/src/phrase-building/compile";
|
import { compileVP } from "../../../lib/src/phrase-building/compile";
|
||||||
import * as T from "../../../types";
|
import * as T from "../../../types";
|
||||||
import AbbreviationFormSelector from "./AbbreviationFormSelector";
|
import AbbreviationFormSelector from "./AbbreviationFormSelector";
|
||||||
import { getObjectSelection, getSubjectSelection } from "../../../lib/src/phrase-building/blocks-utils";
|
import {
|
||||||
|
getObjectSelection,
|
||||||
|
getSubjectSelection,
|
||||||
|
} from "../../../lib/src/phrase-building/blocks-utils";
|
||||||
import { completeVPSelection } from "../../../lib/src/phrase-building/vp-tools";
|
import { completeVPSelection } from "../../../lib/src/phrase-building/vp-tools";
|
||||||
import { renderVP } from "../../../lib/src/phrase-building/render-vp";
|
import { renderVP } from "../../../lib/src/phrase-building/render-vp";
|
||||||
import ModeSelect, { LengthSelect, Mode, ScriptSelect } from "../DisplayModeSelect";
|
import ModeSelect, {
|
||||||
|
LengthSelect,
|
||||||
|
Mode,
|
||||||
|
ScriptSelect,
|
||||||
|
} from "../DisplayModeSelect";
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import CompiledPTextDisplay from "../CompiledPTextDisplay";
|
import CompiledPTextDisplay from "../CompiledPTextDisplay";
|
||||||
import RenderedBlocksDisplay from "../RenderedBlocksDisplay";
|
import RenderedBlocksDisplay from "../RenderedBlocksDisplay";
|
||||||
import useStickyState from "../useStickyState";
|
import useStickyState from "../useStickyState";
|
||||||
|
|
||||||
function VPDisplay({ VPS, opts, setForm, justify, onlyOne, length, mode: preferredMode, script: preferredScript, onLengthChange, inlineFormChoice }: {
|
function VPDisplay({
|
||||||
VPS: T.VPSelectionState,
|
VPS,
|
||||||
opts: T.TextOptions,
|
opts,
|
||||||
setForm: "disable" | ((form: T.FormVersion) => void),
|
setForm,
|
||||||
justify?: "left" | "right" | "center",
|
justify,
|
||||||
onlyOne?: boolean | "concat",
|
onlyOne,
|
||||||
length?: "long" | "short",
|
length,
|
||||||
mode?: Mode,
|
mode: preferredMode,
|
||||||
script?: "p" | "f",
|
script: preferredScript,
|
||||||
onLengthChange?: (length: "long" | "short") => void,
|
onLengthChange,
|
||||||
inlineFormChoice?: boolean,
|
inlineFormChoice,
|
||||||
|
}: {
|
||||||
|
VPS: T.VPSelectionState;
|
||||||
|
opts: T.TextOptions;
|
||||||
|
setForm: "disable" | ((form: T.FormVersion) => void);
|
||||||
|
justify?: "left" | "right" | "center";
|
||||||
|
onlyOne?: boolean | "concat";
|
||||||
|
length?: "long" | "short";
|
||||||
|
mode?: Mode;
|
||||||
|
script?: "p" | "f";
|
||||||
|
onLengthChange?: (length: "long" | "short") => void;
|
||||||
|
inlineFormChoice?: boolean;
|
||||||
}) {
|
}) {
|
||||||
const [mode, setMode] = useState<Mode>(preferredMode || "text");
|
const [mode, setMode] = useState<Mode>(preferredMode || "text");
|
||||||
const [script, setScript] = useStickyState<"p" | "f">(preferredScript || "f", "blockScriptChoice");
|
const [script, setScript] = useStickyState<"p" | "f">(
|
||||||
|
preferredScript || "f",
|
||||||
|
"blockScriptChoice"
|
||||||
|
);
|
||||||
const VP = completeVPSelection(VPS);
|
const VP = completeVPSelection(VPS);
|
||||||
if (!VP) {
|
if (!VP) {
|
||||||
return <div className="lead text-muted text-center mt-4">
|
return (
|
||||||
|
<div className="lead text-muted text-center mt-4">
|
||||||
{(() => {
|
{(() => {
|
||||||
const subject = getSubjectSelection(VPS.blocks).selection;
|
const subject = getSubjectSelection(VPS.blocks).selection;
|
||||||
const object = getObjectSelection(VPS.blocks).selection;
|
const object = getObjectSelection(VPS.blocks).selection;
|
||||||
if (subject === undefined || object === undefined) {
|
if (subject === undefined || object === undefined) {
|
||||||
return `Choose NP${((subject === undefined) && (object === undefined)) ? "s " : ""} to make a phrase`;
|
return `Choose NP${
|
||||||
|
subject === undefined && object === undefined ? "s " : ""
|
||||||
|
} to make a phrase`;
|
||||||
}
|
}
|
||||||
return `Choose/remove AP to complete the phrase`;
|
return `Choose/remove AP to complete the phrase`;
|
||||||
})()}
|
})()}
|
||||||
</div>;
|
</div>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
const rendered = renderVP(VP);
|
const rendered = renderVP(VP);
|
||||||
const result = compileVP(rendered, rendered.form, true);
|
const result = compileVP(rendered, rendered.form, true);
|
||||||
return <div className={`text-${justify ? justify : "center"} mt-1`}>
|
return (
|
||||||
{typeof setForm === "function" && !inlineFormChoice && <AbbreviationFormSelector
|
<div className={`text-${justify ? justify : "center"} mt-1`}>
|
||||||
|
{typeof setForm === "function" && !inlineFormChoice && (
|
||||||
|
<AbbreviationFormSelector
|
||||||
adjustable={rendered.whatsAdjustable}
|
adjustable={rendered.whatsAdjustable}
|
||||||
form={rendered.form}
|
form={rendered.form}
|
||||||
onChange={setForm}
|
onChange={setForm}
|
||||||
/>}
|
/>
|
||||||
|
)}
|
||||||
<div className="d-flex flex-row mb-2">
|
<div className="d-flex flex-row mb-2">
|
||||||
<ModeSelect value={mode} onChange={setMode} />
|
<ModeSelect value={mode} onChange={setMode} />
|
||||||
{mode === "blocks" && <ScriptSelect value={script} onChange={setScript} />}
|
{mode === "blocks" && (
|
||||||
{mode === "text" && length && "long" in result.ps && onLengthChange && <LengthSelect value={length} onChange={onLengthChange} />}
|
<ScriptSelect value={script} onChange={setScript} />
|
||||||
{typeof setForm === "function" && inlineFormChoice && <AbbreviationFormSelector
|
)}
|
||||||
|
{mode === "text" &&
|
||||||
|
length &&
|
||||||
|
"long" in result.ps &&
|
||||||
|
onLengthChange && (
|
||||||
|
<LengthSelect value={length} onChange={onLengthChange} />
|
||||||
|
)}
|
||||||
|
{typeof setForm === "function" && inlineFormChoice && (
|
||||||
|
<AbbreviationFormSelector
|
||||||
adjustable={rendered.whatsAdjustable}
|
adjustable={rendered.whatsAdjustable}
|
||||||
form={rendered.form}
|
form={rendered.form}
|
||||||
onChange={setForm}
|
onChange={setForm}
|
||||||
inline
|
inline
|
||||||
/>}
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
{mode === "text"
|
{mode === "text" ? (
|
||||||
? <CompiledPTextDisplay opts={opts} compiled={result} justify={justify} onlyOne={!!onlyOne} length={length} />
|
<CompiledPTextDisplay
|
||||||
: <RenderedBlocksDisplay opts={opts} rendered={rendered} justify={justify} script={script} />}
|
opts={opts}
|
||||||
{result.e && <div className={`text-muted mt-2 text-${justify === "left" ? "left" : justify === "right" ? "right" : "center"}`}>
|
compiled={result}
|
||||||
|
justify={justify}
|
||||||
|
onlyOne={!!onlyOne}
|
||||||
|
length={length}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<RenderedBlocksDisplay
|
||||||
|
opts={opts}
|
||||||
|
rendered={rendered}
|
||||||
|
justify={justify}
|
||||||
|
script={script}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
{result.e && (
|
||||||
|
<div
|
||||||
|
className={`text-muted mt-2 text-${
|
||||||
|
justify === "left"
|
||||||
|
? "left"
|
||||||
|
: justify === "right"
|
||||||
|
? "right"
|
||||||
|
: "center"
|
||||||
|
}`}
|
||||||
|
>
|
||||||
{onlyOne === "concat"
|
{onlyOne === "concat"
|
||||||
? result.e.join(" • ")
|
? result.e.join(" • ")
|
||||||
: onlyOne
|
: onlyOne
|
||||||
? [result.e[0]]
|
? [result.e[0]]
|
||||||
: result.e.map((e, i) => <div key={i}>{e}</div>)}
|
: result.e.map((e, i) => <div key={i}>{e}</div>)}
|
||||||
</div>}
|
|
||||||
</div>
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
return <h4>Error conjugating verb!</h4>;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default VPDisplay;
|
export default VPDisplay;
|
|
@ -144,6 +144,7 @@ function VPExplorerQuiz(props: {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
const rendered = renderVP(quizState.vps);
|
const rendered = renderVP(quizState.vps);
|
||||||
const subject: T.Rendered<T.NPSelection> = getSubjectSelectionFromBlocks(
|
const subject: T.Rendered<T.NPSelection> = getSubjectSelectionFromBlocks(
|
||||||
rendered.blocks
|
rendered.blocks
|
||||||
|
@ -256,7 +257,10 @@ function VPExplorerQuiz(props: {
|
||||||
onChange={(e) => setAnswerBlank(e.target.value)}
|
onChange={(e) => setAnswerBlank(e.target.value)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="form-check mb-4" style={{ fontSize: "large" }}>
|
<div
|
||||||
|
className="form-check mb-4"
|
||||||
|
style={{ fontSize: "large" }}
|
||||||
|
>
|
||||||
<input
|
<input
|
||||||
className="form-check-input"
|
className="form-check-input"
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
|
@ -294,7 +298,9 @@ function VPExplorerQuiz(props: {
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div>
|
<div>
|
||||||
<div className="my-4 lead">Possible correct answers were:</div>
|
<div className="my-4 lead">
|
||||||
|
Possible correct answers were:
|
||||||
|
</div>
|
||||||
{quizState.answer.ps.map((p, i) => (
|
{quizState.answer.ps.map((p, i) => (
|
||||||
<div key={i}>
|
<div key={i}>
|
||||||
<InlinePs opts={props.opts}>{p}</InlinePs>
|
<InlinePs opts={props.opts}>{p}</InlinePs>
|
||||||
|
@ -306,8 +312,8 @@ function VPExplorerQuiz(props: {
|
||||||
? "With"
|
? "With"
|
||||||
: "without"}
|
: "without"}
|
||||||
</strong>
|
</strong>
|
||||||
{` `}a <InlinePs opts={props.opts}>{baParticle}</InlinePs> in
|
{` `}a <InlinePs opts={props.opts}>{baParticle}</InlinePs>{" "}
|
||||||
the phrase
|
in the phrase
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
@ -324,6 +330,10 @@ function VPExplorerQuiz(props: {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
return <h4>Error conjugating verb!</h4>;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function blanksAnswerCorrect(
|
function blanksAnswerCorrect(
|
||||||
|
|
|
@ -72,7 +72,16 @@ function VPPicker({
|
||||||
const subject = getSubjectSelection(vps.blocks).selection;
|
const subject = getSubjectSelection(vps.blocks).selection;
|
||||||
const VPS = completeVPSelection(vps);
|
const VPS = completeVPSelection(vps);
|
||||||
const phraseIsComplete = !!VPS;
|
const phraseIsComplete = !!VPS;
|
||||||
const rendered = VPS ? renderVP(VPS) : undefined;
|
const rendered = VPS
|
||||||
|
? (() => {
|
||||||
|
try {
|
||||||
|
return renderVP(VPS);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
})()
|
||||||
|
: undefined;
|
||||||
const servantIsShrunk = includesShrunkenServant(rendered?.kids);
|
const servantIsShrunk = includesShrunkenServant(rendered?.kids);
|
||||||
const isPast = isPastTense(
|
const isPast = isPastTense(
|
||||||
vps.verb.tenseCategory === "perfect"
|
vps.verb.tenseCategory === "perfect"
|
||||||
|
|
|
@ -8236,6 +8236,13 @@ react-element-to-jsx-string@^14.3.4:
|
||||||
is-plain-object "5.0.0"
|
is-plain-object "5.0.0"
|
||||||
react-is "17.0.2"
|
react-is "17.0.2"
|
||||||
|
|
||||||
|
react-error-boundary@^4.0.13:
|
||||||
|
version "4.0.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-4.0.13.tgz#80386b7b27b1131c5fbb7368b8c0d983354c7947"
|
||||||
|
integrity sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/runtime" "^7.12.5"
|
||||||
|
|
||||||
react-inspector@^5.1.0:
|
react-inspector@^5.1.0:
|
||||||
version "5.1.1"
|
version "5.1.1"
|
||||||
resolved "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz"
|
resolved "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@lingdocs/inflect",
|
"name": "@lingdocs/inflect",
|
||||||
"version": "7.3.2",
|
"version": "7.4.0",
|
||||||
"description": "Pashto inflector library",
|
"description": "Pashto inflector library",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"types": "dist/lib/library.d.ts",
|
"types": "dist/lib/library.d.ts",
|
||||||
|
|
|
@ -66,6 +66,8 @@ export function getInfsAndVocative(
|
||||||
pattern === 0 &&
|
pattern === 0 &&
|
||||||
isFemNounEntry(entry) &&
|
isFemNounEntry(entry) &&
|
||||||
isAnimNounEntry(entry) &&
|
isAnimNounEntry(entry) &&
|
||||||
|
entry.ppp &&
|
||||||
|
entry.ppf &&
|
||||||
endsInConsonant(entry)
|
endsInConsonant(entry)
|
||||||
) {
|
) {
|
||||||
return {
|
return {
|
||||||
|
@ -114,8 +116,8 @@ const patternFuncs: Record<
|
||||||
Record<T.Gender, (inp: PatternInput) => InflectionsAndVocative>
|
Record<T.Gender, (inp: PatternInput) => InflectionsAndVocative>
|
||||||
> = {
|
> = {
|
||||||
1: {
|
1: {
|
||||||
masc: vocPattern1Masc,
|
masc: pattern1Masc,
|
||||||
fem: vocPattern1Fem,
|
fem: pattern1Fem,
|
||||||
},
|
},
|
||||||
2: {
|
2: {
|
||||||
masc: pattern2Masc,
|
masc: pattern2Masc,
|
||||||
|
@ -130,7 +132,7 @@ const patternFuncs: Record<
|
||||||
fem: pattern4Fem,
|
fem: pattern4Fem,
|
||||||
},
|
},
|
||||||
5: {
|
5: {
|
||||||
masc: vocPattern5Masc,
|
masc: pattern5Masc,
|
||||||
fem: pattern5Fem,
|
fem: pattern5Fem,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -191,7 +193,7 @@ function vocFemAnimException({
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function vocPattern1Masc({
|
function pattern1Masc({
|
||||||
entry,
|
entry,
|
||||||
plurals,
|
plurals,
|
||||||
}: PatternInput): InflectionsAndVocative {
|
}: PatternInput): InflectionsAndVocative {
|
||||||
|
@ -236,10 +238,7 @@ function vocPattern1Masc({
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO this is HUGELY repetitive refactor this!
|
// TODO this is HUGELY repetitive refactor this!
|
||||||
function vocPattern1Fem({
|
function pattern1Fem({ entry, plurals }: PatternInput): InflectionsAndVocative {
|
||||||
entry,
|
|
||||||
plurals,
|
|
||||||
}: PatternInput): InflectionsAndVocative {
|
|
||||||
const shwaEnding = hasShwaEnding(entry);
|
const shwaEnding = hasShwaEnding(entry);
|
||||||
const hasFemEnding = endsWith([{ p: "ه", f: "a" }], entry) || shwaEnding;
|
const hasFemEnding = endsWith([{ p: "ه", f: "a" }], entry) || shwaEnding;
|
||||||
const endAccented = accentIsOnEnd(entry);
|
const endAccented = accentIsOnEnd(entry);
|
||||||
|
@ -333,7 +332,7 @@ function vocPattern1Fem({
|
||||||
}
|
}
|
||||||
if (isFemNounEntry(entry) && endsInConsonant(entry)) {
|
if (isFemNounEntry(entry) && endsInConsonant(entry)) {
|
||||||
const baseForInf =
|
const baseForInf =
|
||||||
countSyllables(entry) === 1 ? accentOnNFromEnd(entry, 0) : e;
|
countSyllables(entry) === 1 ? accentOnNFromEnd(entry, 0) : entry;
|
||||||
const inflections: T.InflectionSet = [
|
const inflections: T.InflectionSet = [
|
||||||
[psStringFromEntry(entry)],
|
[psStringFromEntry(entry)],
|
||||||
[concatPs(baseForInf, e)],
|
[concatPs(baseForInf, e)],
|
||||||
|
@ -494,7 +493,7 @@ function pattern4Fem({ entry }: PatternInput): InflectionsAndVocative {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function vocPattern5Masc({
|
function pattern5Masc({
|
||||||
entry,
|
entry,
|
||||||
plurals,
|
plurals,
|
||||||
}: PatternInput): InflectionsAndVocative {
|
}: PatternInput): InflectionsAndVocative {
|
||||||
|
|
|
@ -1794,6 +1794,33 @@ const nouns: {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
in: {
|
||||||
|
ts: 1715165815298,
|
||||||
|
i: 17989,
|
||||||
|
p: "وریندار",
|
||||||
|
f: "wreendáar",
|
||||||
|
g: "wreendaar",
|
||||||
|
e: "brother's wife, sister-in-law (of male)",
|
||||||
|
r: 4,
|
||||||
|
c: "n. f. anim.",
|
||||||
|
},
|
||||||
|
out: {
|
||||||
|
inflections: {
|
||||||
|
fem: [
|
||||||
|
[{ p: "وریندار", f: "wreendáar" }],
|
||||||
|
[{ p: "وریندارې", f: "wreendáare" }],
|
||||||
|
[{ p: "وریندارو", f: "wreendáaro" }],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
vocative: {
|
||||||
|
fem: [
|
||||||
|
[{ p: "وریندارې", f: "wreendáare" }],
|
||||||
|
[{ p: "وریندارو", f: "wreendáaro" }],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
// Feminine regular inanimate ending in ي
|
// Feminine regular inanimate ending in ي
|
||||||
{
|
{
|
||||||
in: {
|
in: {
|
||||||
|
|
|
@ -40,7 +40,8 @@ export function inflectWord(word: T.DictionaryEntry): T.InflectorOutput {
|
||||||
inflected[0].inflections,
|
inflected[0].inflections,
|
||||||
inflected[1].inflections
|
inflected[1].inflections
|
||||||
) as T.UnisexInflections,
|
) as T.UnisexInflections,
|
||||||
...(vocatives.length
|
// in case there's only one vocative check to make sure we have both
|
||||||
|
...(vocatives.length === 2
|
||||||
? { vocative: concatPlurals(vocatives[0], vocatives[1]) }
|
? { vocative: concatPlurals(vocatives[0], vocatives[1]) }
|
||||||
: {}),
|
: {}),
|
||||||
};
|
};
|
||||||
|
|
|
@ -180,7 +180,7 @@ export function isPattern1Entry<T extends T.InflectableEntry>(
|
||||||
e
|
e
|
||||||
) &&
|
) &&
|
||||||
!e.p.endsWith("اع")) ||
|
!e.p.endsWith("اع")) ||
|
||||||
(endsWith({ p: pashtoConsonants }, e) && !e.c.includes("anim."))
|
(endsWith({ p: pashtoConsonants }, e) && !(e.ppp && e.ppf))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return endsInConsonant(e) || hasShwaEnding(e);
|
return endsInConsonant(e) || hasShwaEnding(e);
|
||||||
|
|
|
@ -6,7 +6,10 @@ module.exports = [
|
||||||
{ ts: 1527816724, e: `room, chamber` }, // اتاق - Utaaq
|
{ ts: 1527816724, e: `room, chamber` }, // اتاق - Utaaq
|
||||||
{ ts: 1527811859, e: `union, alliance` }, // اتحاد - itihaad
|
{ ts: 1527811859, e: `union, alliance` }, // اتحاد - itihaad
|
||||||
{ ts: 1527822033, e: `joining, connection, contiguity, junction` }, // اتصال - ittisáal
|
{ ts: 1527822033, e: `joining, connection, contiguity, junction` }, // اتصال - ittisáal
|
||||||
{ ts: 1527811858, e: `unity, alliance, agreement, understanding, consent; coincidence` }, // اتفاق - itifaaq
|
{
|
||||||
|
ts: 1527811858,
|
||||||
|
e: `unity, alliance, agreement, understanding, consent; coincidence`,
|
||||||
|
}, // اتفاق - itifaaq
|
||||||
{ ts: 1527813560, e: `accusation, charge, indictment` }, // اتهام - itihaam
|
{ ts: 1527813560, e: `accusation, charge, indictment` }, // اتهام - itihaam
|
||||||
{ ts: 1527812105, e: `respect, honor, esteem, deference` }, // احترام - ihtiraam
|
{ ts: 1527812105, e: `respect, honor, esteem, deference` }, // احترام - ihtiraam
|
||||||
{ ts: 1527819653, e: `possibility, probability, likelihood` }, // احتمال - ihtimaal
|
{ ts: 1527819653, e: `possibility, probability, likelihood` }, // احتمال - ihtimaal
|
||||||
|
@ -42,7 +45,7 @@ module.exports = [
|
||||||
{ ts: 1527821586, e: `pity, sympathy` }, // ترحم - tarahhÚm
|
{ ts: 1527821586, e: `pity, sympathy` }, // ترحم - tarahhÚm
|
||||||
{ ts: 1527811389, e: `picture` }, // تصویر - tasweer
|
{ ts: 1527811389, e: `picture` }, // تصویر - tasweer
|
||||||
{ ts: 1527814679, e: `guarantee, insurance, security` }, // تضمین - tazmeen
|
{ ts: 1527814679, e: `guarantee, insurance, security` }, // تضمین - tazmeen
|
||||||
{ ts: 1527814258, e: `speech, lecture` }, // تقریر - taqreer
|
{ ts: 1702629785933, e: `speech, lecture` }, // تقریر - taqreer
|
||||||
{ ts: 1527821670, e: `cheating, deception, fraud, forgery` }, // تقلب - taqalÚb
|
{ ts: 1527821670, e: `cheating, deception, fraud, forgery` }, // تقلب - taqalÚb
|
||||||
{ ts: 1527811602, e: `attempt, aspiration, intention, effort` }, // تکل - takál
|
{ ts: 1527811602, e: `attempt, aspiration, intention, effort` }, // تکل - takál
|
||||||
{ ts: 1527813398, e: `movement, motion, going` }, // تګ - tug, tag
|
{ ts: 1527813398, e: `movement, motion, going` }, // تګ - tug, tag
|
||||||
|
@ -61,7 +64,10 @@ module.exports = [
|
||||||
{ ts: 1527811705, e: `structure` }, // جوړښت - joRuxt
|
{ ts: 1527811705, e: `structure` }, // جوړښت - joRuxt
|
||||||
{ ts: 1527814058, e: `answer, reply` }, // ځواب - dzawaab
|
{ ts: 1527814058, e: `answer, reply` }, // ځواب - dzawaab
|
||||||
{ ts: 1527816887, e: `life, existence, energy, force` }, // ځواک - dzwaak
|
{ ts: 1527816887, e: `life, existence, energy, force` }, // ځواک - dzwaak
|
||||||
{ ts: 1527814649, e: `market square, crossroads, paved area in front of entrance` }, // چوک - chok
|
{
|
||||||
|
ts: 1527814649,
|
||||||
|
e: `market square, crossroads, paved area in front of entrance`,
|
||||||
|
}, // چوک - chok
|
||||||
{ ts: 1527815065, e: `hammer` }, // څټک - tsaTak, tsTuk
|
{ ts: 1527815065, e: `hammer` }, // څټک - tsaTak, tsTuk
|
||||||
{ ts: 1527814589, e: `side` }, // څنګ - tsang
|
{ ts: 1527814589, e: `side` }, // څنګ - tsang
|
||||||
{ ts: 1527816228, e: `boundary, limit, extent` }, // حد - had
|
{ ts: 1527816228, e: `boundary, limit, extent` }, // حد - had
|
||||||
|
@ -96,8 +102,14 @@ module.exports = [
|
||||||
{ ts: 1527811441, e: `door, gate, entrance` }, // ور - war
|
{ ts: 1527811441, e: `door, gate, entrance` }, // ور - war
|
||||||
{ ts: 1527815406, e: `homeland, home country` }, // وطن - watán
|
{ ts: 1527815406, e: `homeland, home country` }, // وطن - watán
|
||||||
{ ts: 1573149648251, e: `fellow country-man` }, // وطن وال - watanwaal
|
{ ts: 1573149648251, e: `fellow country-man` }, // وطن وال - watanwaal
|
||||||
{ ts: 1586428847646, e: `national (person), a citizen or person of that land` }, // وطنوال - watanwáal
|
{
|
||||||
|
ts: 1586428847646,
|
||||||
|
e: `national (person), a citizen or person of that land`,
|
||||||
|
}, // وطنوال - watanwáal
|
||||||
{ ts: 1527822208, e: `bat, coward, pipsqueak, hesitant person` }, // وطواط - watwáat
|
{ ts: 1527822208, e: `bat, coward, pipsqueak, hesitant person` }, // وطواط - watwáat
|
||||||
{ ts: 1527819571, e: `apprehension, anxiety, suspicion; imagination, whims, some problem made up in someone’s head` }, // وهم - wáhum, wahm
|
{
|
||||||
|
ts: 1527819571,
|
||||||
|
e: `apprehension, anxiety, suspicion; imagination, whims, some problem made up in someone’s head`,
|
||||||
|
}, // وهم - wáhum, wahm
|
||||||
{ ts: 1527816332, e: `pride, glory` }, // ویاړ - wyaaR
|
{ ts: 1527816332, e: `pride, glory` }, // ویاړ - wyaaR
|
||||||
];
|
];
|
|
@ -26,7 +26,7 @@ module.exports = [
|
||||||
1527817582, // بېزارېدل - to be fed up with, tired of, repulsed by, dissatisfied with, done with, disgusted by
|
1527817582, // بېزارېدل - to be fed up with, tired of, repulsed by, dissatisfied with, done with, disgusted by
|
||||||
1527815844, // بېلېدل - to be separated
|
1527815844, // بېلېدل - to be separated
|
||||||
1588073731662, // پاکېدل - to be cleaned, become clean, to be cleansed, purified
|
1588073731662, // پاکېدل - to be cleaned, become clean, to be cleansed, purified
|
||||||
1527813895, // پټېدل - to hide, to be hidden
|
1715816590539, // پټېدل - to hide, to be hidden
|
||||||
1527812011, // پخلا کېدل - to be reconciled, brought to an agreement
|
1527812011, // پخلا کېدل - to be reconciled, brought to an agreement
|
||||||
1581906176268, // پخېدل - to be cooked, prepared, ripened, matured
|
1581906176268, // پخېدل - to be cooked, prepared, ripened, matured
|
||||||
1584689265872, // پستېدل - to become soft, tender, gentle, loosened
|
1584689265872, // پستېدل - to become soft, tender, gentle, loosened
|
||||||
|
@ -137,4 +137,4 @@ module.exports = [
|
||||||
1527812941, // یادېدل - to be remembered, to be missed
|
1527812941, // یادېدل - to be remembered, to be missed
|
||||||
1527814768, // یخېدل - to chill, cool down, freeze
|
1527814768, // یخېدل - to chill, cool down, freeze
|
||||||
1579824223049, // یو ځای کېدل - to be gathered, brought together, come together
|
1579824223049, // یو ځای کېدل - to be gathered, brought together, come together
|
||||||
]
|
];
|
||||||
|
|
|
@ -43,8 +43,8 @@ module.exports = [
|
||||||
1527816945, // جوتول - to make clear, evident, apparent, explained, established
|
1527816945, // جوتول - to make clear, evident, apparent, explained, established
|
||||||
1527816947, // جوتول - to harness, hitch up
|
1527816947, // جوتول - to harness, hitch up
|
||||||
1527812712, // جوړول - to make, form, build, mend, fix
|
1527812712, // جوړول - to make, form, build, mend, fix
|
||||||
1527817455, // ځایول - to place, put, accommodate, make room for, to make fit
|
1718311465186, // ځایول - to place, put, accommodate, make room for, to make fit
|
||||||
1527815074, // چاپول - to print, publish
|
1718377727926, // چاپول - to print, publish
|
||||||
1527811693, // چاغول - to fatten up, to fatten, to make stout, plump
|
1527811693, // چاغول - to fatten up, to fatten, to make stout, plump
|
||||||
1527816239, // خبرول - to inform, communicate, make known, notify
|
1527816239, // خبرول - to inform, communicate, make known, notify
|
||||||
1527811395, // خپرول - to spread, disperse, open, unfold, publicize, distribute
|
1527811395, // خپرول - to spread, disperse, open, unfold, publicize, distribute
|
||||||
|
|
171
yarn.lock
171
yarn.lock
|
@ -1237,6 +1237,121 @@
|
||||||
resolved "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz"
|
resolved "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz"
|
||||||
integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==
|
integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==
|
||||||
|
|
||||||
|
"@esbuild/aix-ppc64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
|
||||||
|
integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
|
||||||
|
|
||||||
|
"@esbuild/android-arm64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
|
||||||
|
integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
|
||||||
|
|
||||||
|
"@esbuild/android-arm@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
|
||||||
|
integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
|
||||||
|
|
||||||
|
"@esbuild/android-x64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
|
||||||
|
integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
|
||||||
|
|
||||||
|
"@esbuild/darwin-arm64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
|
||||||
|
integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
|
||||||
|
|
||||||
|
"@esbuild/darwin-x64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
|
||||||
|
integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
|
||||||
|
|
||||||
|
"@esbuild/freebsd-arm64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
|
||||||
|
integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
|
||||||
|
|
||||||
|
"@esbuild/freebsd-x64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
|
||||||
|
integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
|
||||||
|
|
||||||
|
"@esbuild/linux-arm64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
|
||||||
|
integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
|
||||||
|
|
||||||
|
"@esbuild/linux-arm@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
|
||||||
|
integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
|
||||||
|
|
||||||
|
"@esbuild/linux-ia32@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
|
||||||
|
integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
|
||||||
|
|
||||||
|
"@esbuild/linux-loong64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
|
||||||
|
integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
|
||||||
|
|
||||||
|
"@esbuild/linux-mips64el@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
|
||||||
|
integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
|
||||||
|
|
||||||
|
"@esbuild/linux-ppc64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
|
||||||
|
integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
|
||||||
|
|
||||||
|
"@esbuild/linux-riscv64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
|
||||||
|
integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
|
||||||
|
|
||||||
|
"@esbuild/linux-s390x@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
|
||||||
|
integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
|
||||||
|
|
||||||
|
"@esbuild/linux-x64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
|
||||||
|
integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
|
||||||
|
|
||||||
|
"@esbuild/netbsd-x64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
|
||||||
|
integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
|
||||||
|
|
||||||
|
"@esbuild/openbsd-x64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
|
||||||
|
integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
|
||||||
|
|
||||||
|
"@esbuild/sunos-x64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
|
||||||
|
integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
|
||||||
|
|
||||||
|
"@esbuild/win32-arm64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
|
||||||
|
integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
|
||||||
|
|
||||||
|
"@esbuild/win32-ia32@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
|
||||||
|
integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
|
||||||
|
|
||||||
|
"@esbuild/win32-x64@0.21.5":
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
|
||||||
|
integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
|
||||||
|
|
||||||
"@eslint/eslintrc@^0.4.3":
|
"@eslint/eslintrc@^0.4.3":
|
||||||
version "0.4.3"
|
version "0.4.3"
|
||||||
resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz"
|
resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz"
|
||||||
|
@ -4646,6 +4761,35 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3:
|
||||||
d "^1.0.1"
|
d "^1.0.1"
|
||||||
ext "^1.1.2"
|
ext "^1.1.2"
|
||||||
|
|
||||||
|
esbuild@~0.21.5:
|
||||||
|
version "0.21.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
|
||||||
|
integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
|
||||||
|
optionalDependencies:
|
||||||
|
"@esbuild/aix-ppc64" "0.21.5"
|
||||||
|
"@esbuild/android-arm" "0.21.5"
|
||||||
|
"@esbuild/android-arm64" "0.21.5"
|
||||||
|
"@esbuild/android-x64" "0.21.5"
|
||||||
|
"@esbuild/darwin-arm64" "0.21.5"
|
||||||
|
"@esbuild/darwin-x64" "0.21.5"
|
||||||
|
"@esbuild/freebsd-arm64" "0.21.5"
|
||||||
|
"@esbuild/freebsd-x64" "0.21.5"
|
||||||
|
"@esbuild/linux-arm" "0.21.5"
|
||||||
|
"@esbuild/linux-arm64" "0.21.5"
|
||||||
|
"@esbuild/linux-ia32" "0.21.5"
|
||||||
|
"@esbuild/linux-loong64" "0.21.5"
|
||||||
|
"@esbuild/linux-mips64el" "0.21.5"
|
||||||
|
"@esbuild/linux-ppc64" "0.21.5"
|
||||||
|
"@esbuild/linux-riscv64" "0.21.5"
|
||||||
|
"@esbuild/linux-s390x" "0.21.5"
|
||||||
|
"@esbuild/linux-x64" "0.21.5"
|
||||||
|
"@esbuild/netbsd-x64" "0.21.5"
|
||||||
|
"@esbuild/openbsd-x64" "0.21.5"
|
||||||
|
"@esbuild/sunos-x64" "0.21.5"
|
||||||
|
"@esbuild/win32-arm64" "0.21.5"
|
||||||
|
"@esbuild/win32-ia32" "0.21.5"
|
||||||
|
"@esbuild/win32-x64" "0.21.5"
|
||||||
|
|
||||||
escalade@^3.0.2, escalade@^3.1.1:
|
escalade@^3.0.2, escalade@^3.1.1:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
|
resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
|
||||||
|
@ -5415,6 +5559,11 @@ fsevents@^2.1.2, fsevents@^2.1.3, fsevents@~2.3.2:
|
||||||
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
|
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
|
||||||
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
||||||
|
|
||||||
|
fsevents@~2.3.3:
|
||||||
|
version "2.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
|
||||||
|
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
||||||
|
|
||||||
function-bind@^1.1.1:
|
function-bind@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
|
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
|
||||||
|
@ -5476,6 +5625,13 @@ get-symbol-description@^1.0.0:
|
||||||
call-bind "^1.0.2"
|
call-bind "^1.0.2"
|
||||||
get-intrinsic "^1.1.1"
|
get-intrinsic "^1.1.1"
|
||||||
|
|
||||||
|
get-tsconfig@^4.7.5:
|
||||||
|
version "4.7.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.6.tgz#118fd5b7b9bae234cc7705a00cd771d7eb65d62a"
|
||||||
|
integrity sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==
|
||||||
|
dependencies:
|
||||||
|
resolve-pkg-maps "^1.0.0"
|
||||||
|
|
||||||
get-value@^2.0.3, get-value@^2.0.6:
|
get-value@^2.0.3, get-value@^2.0.6:
|
||||||
version "2.0.6"
|
version "2.0.6"
|
||||||
resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz"
|
resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz"
|
||||||
|
@ -9806,6 +9962,11 @@ resolve-from@^5.0.0:
|
||||||
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz"
|
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz"
|
||||||
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
|
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
|
||||||
|
|
||||||
|
resolve-pkg-maps@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
|
||||||
|
integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
|
||||||
|
|
||||||
resolve-protobuf-schema@^2.1.0:
|
resolve-protobuf-schema@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz"
|
resolved "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz"
|
||||||
|
@ -11016,6 +11177,16 @@ tsutils@^3.17.1, tsutils@^3.21.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.8.1"
|
tslib "^1.8.1"
|
||||||
|
|
||||||
|
tsx@^4.16.5:
|
||||||
|
version "4.16.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.16.5.tgz#49c2a8f4d4d66bd7cf538e23e7368a1919a9a1ca"
|
||||||
|
integrity sha512-ArsiAQHEW2iGaqZ8fTA1nX0a+lN5mNTyuGRRO6OW3H/Yno1y9/t1f9YOI1Cfoqz63VAthn++ZYcbDP7jPflc+A==
|
||||||
|
dependencies:
|
||||||
|
esbuild "~0.21.5"
|
||||||
|
get-tsconfig "^4.7.5"
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "~2.3.3"
|
||||||
|
|
||||||
tty-browserify@0.0.0:
|
tty-browserify@0.0.0:
|
||||||
version "0.0.0"
|
version "0.0.0"
|
||||||
resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz"
|
resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz"
|
||||||
|
|
Loading…
Reference in New Issue