Preparing core package for use by other packages.
This commit is contained in:
parent
0196cd5c87
commit
a0791b0c69
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
experiments
|
@ -1,7 +1,8 @@
|
|||||||
struct terrace_linedata_s {
|
struct terrace_linedata_s {
|
||||||
char type;
|
char type;
|
||||||
unsigned int level;
|
unsigned int level;
|
||||||
unsigned int offset;
|
unsigned int offsetHead;
|
||||||
|
unsigned int offsetTail;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct terrace_linedata_s terrace_linedata_t;
|
typedef struct terrace_linedata_s terrace_linedata_t;
|
||||||
@ -9,15 +10,28 @@ typedef struct terrace_linedata_s terrace_linedata_t;
|
|||||||
void terrace_parse_line(char* line, terrace_linedata_t *lineData) {
|
void terrace_parse_line(char* line, terrace_linedata_t *lineData) {
|
||||||
char type = 0;
|
char type = 0;
|
||||||
unsigned int level = 0;
|
unsigned int level = 0;
|
||||||
|
unsigned int offsetTail = 0;
|
||||||
|
|
||||||
if (line[0] == '\n') {
|
if (line[0] == '\n') {
|
||||||
if (lineData->type == 1) level++;
|
if (lineData->type == 1) level++;
|
||||||
if (lineData->type == 0) level = lineData->level;
|
if (lineData->type == 0) level = lineData->level;
|
||||||
|
|
||||||
|
lineData->type = type;
|
||||||
|
lineData->level = level;
|
||||||
|
lineData->offsetHead = 0;
|
||||||
|
lineData->offsetTail = 0;
|
||||||
} else {
|
} else {
|
||||||
type = 1;
|
type = 1;
|
||||||
while(line[level] == ' ' && level <= lineData->level + 1) ++level;
|
while (line[level] == ' ' && level <= lineData->level + 1) ++level;
|
||||||
|
lineData->type = type;
|
||||||
|
lineData->level = level;
|
||||||
|
lineData->offsetHead = level;
|
||||||
|
lineData->offsetTail = level;
|
||||||
|
|
||||||
|
while (line[lineData->offsetTail] != '\0' && line[lineData->offsetTail] != ' ') ++lineData->offsetTail;
|
||||||
}
|
}
|
||||||
|
|
||||||
lineData->type = type;
|
lineData->type = type;
|
||||||
lineData->level = level;
|
lineData->level = level;
|
||||||
|
lineData->offsetHead = level;
|
||||||
}
|
}
|
||||||
|
1
packages/js/core/dist/document.cjs
vendored
Normal file
1
packages/js/core/dist/document.cjs
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("./parser.cjs");function s(a,i=" "){let e=null,t=l.LineData(),n=!1;async function r(){return e=await a(),e===null?n=!0:l.parseLine(e,t,i),{line:e,lineData:t,ended:n,next:r,current:u}}function u(){return{line:e,lineData:t,ended:n,next:r,current:u}}return{next:r,current:u}}exports.document=s;
|
14
packages/js/core/dist/document.js
vendored
Normal file
14
packages/js/core/dist/document.js
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import { parseLine as a, LineData as o } from "./parser.js";
|
||||||
|
function f(u, i = " ") {
|
||||||
|
let e = null, n = o(), t = !1;
|
||||||
|
async function r() {
|
||||||
|
return e = await u(), e === null ? t = !0 : a(e, n, i), { line: e, lineData: n, ended: t, next: r, current: l };
|
||||||
|
}
|
||||||
|
function l() {
|
||||||
|
return { line: e, lineData: n, ended: t, next: r, current: l };
|
||||||
|
}
|
||||||
|
return { next: r, current: l };
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
f as document
|
||||||
|
};
|
1
packages/js/core/dist/index.cjs
vendored
Normal file
1
packages/js/core/dist/index.cjs
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./parser.cjs"),r=require("./document.cjs");exports.LineData=e.LineData;exports.parseLine=e.parseLine;exports.document=r.document;
|
7
packages/js/core/dist/index.js
vendored
Normal file
7
packages/js/core/dist/index.js
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import { LineData as r, parseLine as t } from "./parser.js";
|
||||||
|
import { document as m } from "./document.js";
|
||||||
|
export {
|
||||||
|
r as LineData,
|
||||||
|
m as document,
|
||||||
|
t as parseLine
|
||||||
|
};
|
1
packages/js/core/dist/parser.cjs
vendored
Normal file
1
packages/js/core/dist/parser.cjs
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});function s(){return{type:0,level:0,offsetHead:0,offsetTail:0}}function p(r,e,f=" "){if(typeof r!="string")throw new Error("'line' must be a string");if(typeof e!="object"||!e||typeof e.type!="number"||typeof e.level!="number")throw new Error("'lineData' must be an object with 'type' and 'level' integer properties");if(typeof f!="string"||f.length===0||f.length>1)throw new Error("'indent' must be a single-character string");let o=0,t=0;if(!r.length)e.type===1&&(t+=1),e.type===0&&(t=e.level),e.type=o,e.level=t,e.offsetHead=0,e.offsetTail=0;else{for(o=1;r[t]===f&&t<=e.level+1;)++t;for(e.type=o,e.level=t,e.offsetHead=t,e.offsetTail=t;r[e.offsetTail]&&r[e.offsetTail]!==" ";)++e.offsetTail}return e}exports.LineData=s;exports.parseLine=p;
|
25
packages/js/core/dist/parser.js
vendored
Normal file
25
packages/js/core/dist/parser.js
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
function s() {
|
||||||
|
return { type: 0, level: 0, offsetHead: 0, offsetTail: 0 };
|
||||||
|
}
|
||||||
|
function p(r, e, t = " ") {
|
||||||
|
if (typeof r != "string")
|
||||||
|
throw new Error("'line' must be a string");
|
||||||
|
if (typeof e != "object" || !e || typeof e.type != "number" || typeof e.level != "number")
|
||||||
|
throw new Error("'lineData' must be an object with 'type' and 'level' integer properties");
|
||||||
|
if (typeof t != "string" || t.length === 0 || t.length > 1)
|
||||||
|
throw new Error("'indent' must be a single-character string");
|
||||||
|
let o = 0, f = 0;
|
||||||
|
if (!r.length)
|
||||||
|
e.type === 1 && (f += 1), e.type === 0 && (f = e.level), e.type = o, e.level = f, e.offsetHead = 0, e.offsetTail = 0;
|
||||||
|
else {
|
||||||
|
for (o = 1; r[f] === t && f <= e.level + 1; )
|
||||||
|
++f;
|
||||||
|
for (e.type = o, e.level = f, e.offsetHead = f, e.offsetTail = f; r[e.offsetTail] && r[e.offsetTail] !== " "; )
|
||||||
|
++e.offsetTail;
|
||||||
|
}
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
s as LineData,
|
||||||
|
p as parseLine
|
||||||
|
};
|
507
packages/js/core/package-lock.json
generated
507
packages/js/core/package-lock.json
generated
@ -1,20 +1,25 @@
|
|||||||
{
|
{
|
||||||
"name": "@terrace/core",
|
"name": "@terrace/core",
|
||||||
"version": "0.0.0",
|
"version": "0.0.1",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@terrace/core",
|
"name": "@terrace/core",
|
||||||
"version": "0.0.0",
|
"version": "0.0.1",
|
||||||
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"esbuild": "^0.15.13",
|
||||||
|
"husky": "^8.0.2",
|
||||||
|
"typescript": "^4.8.4",
|
||||||
|
"vite": "^3.2.3",
|
||||||
"vitest": "^0.24.5"
|
"vitest": "^0.24.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/android-arm": {
|
"node_modules/@esbuild/android-arm": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz",
|
||||||
"integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==",
|
"integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
@ -28,9 +33,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/linux-loong64": {
|
"node_modules/@esbuild/linux-loong64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz",
|
||||||
"integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==",
|
"integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"loong64"
|
"loong64"
|
||||||
],
|
],
|
||||||
@ -44,9 +49,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/chai": {
|
"node_modules/@types/chai": {
|
||||||
"version": "4.3.3",
|
"version": "4.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz",
|
||||||
"integrity": "sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==",
|
"integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/chai-subset": {
|
"node_modules/@types/chai-subset": {
|
||||||
@ -59,9 +64,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.7.14",
|
"version": "18.11.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
|
||||||
"integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==",
|
"integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/acorn": {
|
"node_modules/acorn": {
|
||||||
@ -86,14 +91,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/chai": {
|
"node_modules/chai": {
|
||||||
"version": "4.3.6",
|
"version": "4.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
|
"resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz",
|
||||||
"integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
|
"integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"assertion-error": "^1.1.0",
|
"assertion-error": "^1.1.0",
|
||||||
"check-error": "^1.0.2",
|
"check-error": "^1.0.2",
|
||||||
"deep-eql": "^3.0.1",
|
"deep-eql": "^4.1.2",
|
||||||
"get-func-name": "^2.0.0",
|
"get-func-name": "^2.0.0",
|
||||||
"loupe": "^2.3.1",
|
"loupe": "^2.3.1",
|
||||||
"pathval": "^1.1.1",
|
"pathval": "^1.1.1",
|
||||||
@ -130,21 +135,21 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/deep-eql": {
|
"node_modules/deep-eql": {
|
||||||
"version": "3.0.1",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz",
|
||||||
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
|
"integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"type-detect": "^4.0.0"
|
"type-detect": "^4.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.12"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild": {
|
"node_modules/esbuild": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz",
|
||||||
"integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==",
|
"integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
@ -154,34 +159,34 @@
|
|||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@esbuild/android-arm": "0.15.12",
|
"@esbuild/android-arm": "0.15.13",
|
||||||
"@esbuild/linux-loong64": "0.15.12",
|
"@esbuild/linux-loong64": "0.15.13",
|
||||||
"esbuild-android-64": "0.15.12",
|
"esbuild-android-64": "0.15.13",
|
||||||
"esbuild-android-arm64": "0.15.12",
|
"esbuild-android-arm64": "0.15.13",
|
||||||
"esbuild-darwin-64": "0.15.12",
|
"esbuild-darwin-64": "0.15.13",
|
||||||
"esbuild-darwin-arm64": "0.15.12",
|
"esbuild-darwin-arm64": "0.15.13",
|
||||||
"esbuild-freebsd-64": "0.15.12",
|
"esbuild-freebsd-64": "0.15.13",
|
||||||
"esbuild-freebsd-arm64": "0.15.12",
|
"esbuild-freebsd-arm64": "0.15.13",
|
||||||
"esbuild-linux-32": "0.15.12",
|
"esbuild-linux-32": "0.15.13",
|
||||||
"esbuild-linux-64": "0.15.12",
|
"esbuild-linux-64": "0.15.13",
|
||||||
"esbuild-linux-arm": "0.15.12",
|
"esbuild-linux-arm": "0.15.13",
|
||||||
"esbuild-linux-arm64": "0.15.12",
|
"esbuild-linux-arm64": "0.15.13",
|
||||||
"esbuild-linux-mips64le": "0.15.12",
|
"esbuild-linux-mips64le": "0.15.13",
|
||||||
"esbuild-linux-ppc64le": "0.15.12",
|
"esbuild-linux-ppc64le": "0.15.13",
|
||||||
"esbuild-linux-riscv64": "0.15.12",
|
"esbuild-linux-riscv64": "0.15.13",
|
||||||
"esbuild-linux-s390x": "0.15.12",
|
"esbuild-linux-s390x": "0.15.13",
|
||||||
"esbuild-netbsd-64": "0.15.12",
|
"esbuild-netbsd-64": "0.15.13",
|
||||||
"esbuild-openbsd-64": "0.15.12",
|
"esbuild-openbsd-64": "0.15.13",
|
||||||
"esbuild-sunos-64": "0.15.12",
|
"esbuild-sunos-64": "0.15.13",
|
||||||
"esbuild-windows-32": "0.15.12",
|
"esbuild-windows-32": "0.15.13",
|
||||||
"esbuild-windows-64": "0.15.12",
|
"esbuild-windows-64": "0.15.13",
|
||||||
"esbuild-windows-arm64": "0.15.12"
|
"esbuild-windows-arm64": "0.15.13"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-android-64": {
|
"node_modules/esbuild-android-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==",
|
"integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -195,9 +200,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-android-arm64": {
|
"node_modules/esbuild-android-arm64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz",
|
||||||
"integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==",
|
"integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@ -211,9 +216,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-darwin-64": {
|
"node_modules/esbuild-darwin-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==",
|
"integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -227,9 +232,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-darwin-arm64": {
|
"node_modules/esbuild-darwin-arm64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz",
|
||||||
"integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==",
|
"integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@ -243,9 +248,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-freebsd-64": {
|
"node_modules/esbuild-freebsd-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==",
|
"integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -259,9 +264,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-freebsd-arm64": {
|
"node_modules/esbuild-freebsd-arm64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz",
|
||||||
"integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==",
|
"integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@ -275,9 +280,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-linux-32": {
|
"node_modules/esbuild-linux-32": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz",
|
||||||
"integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==",
|
"integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@ -291,9 +296,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-linux-64": {
|
"node_modules/esbuild-linux-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==",
|
"integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -307,9 +312,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-linux-arm": {
|
"node_modules/esbuild-linux-arm": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz",
|
||||||
"integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==",
|
"integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm"
|
"arm"
|
||||||
],
|
],
|
||||||
@ -323,9 +328,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-linux-arm64": {
|
"node_modules/esbuild-linux-arm64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz",
|
||||||
"integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==",
|
"integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@ -339,9 +344,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-linux-mips64le": {
|
"node_modules/esbuild-linux-mips64le": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz",
|
||||||
"integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==",
|
"integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"mips64el"
|
"mips64el"
|
||||||
],
|
],
|
||||||
@ -355,9 +360,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-linux-ppc64le": {
|
"node_modules/esbuild-linux-ppc64le": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz",
|
||||||
"integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==",
|
"integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ppc64"
|
"ppc64"
|
||||||
],
|
],
|
||||||
@ -371,9 +376,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-linux-riscv64": {
|
"node_modules/esbuild-linux-riscv64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz",
|
||||||
"integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==",
|
"integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"riscv64"
|
"riscv64"
|
||||||
],
|
],
|
||||||
@ -387,9 +392,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-linux-s390x": {
|
"node_modules/esbuild-linux-s390x": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz",
|
||||||
"integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==",
|
"integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"s390x"
|
"s390x"
|
||||||
],
|
],
|
||||||
@ -403,9 +408,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-netbsd-64": {
|
"node_modules/esbuild-netbsd-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==",
|
"integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -419,9 +424,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-openbsd-64": {
|
"node_modules/esbuild-openbsd-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==",
|
"integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -435,9 +440,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-sunos-64": {
|
"node_modules/esbuild-sunos-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==",
|
"integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -451,9 +456,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-windows-32": {
|
"node_modules/esbuild-windows-32": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz",
|
||||||
"integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==",
|
"integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@ -467,9 +472,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-windows-64": {
|
"node_modules/esbuild-windows-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==",
|
"integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@ -483,9 +488,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esbuild-windows-arm64": {
|
"node_modules/esbuild-windows-arm64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz",
|
||||||
"integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==",
|
"integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@ -539,6 +544,21 @@
|
|||||||
"node": ">= 0.4.0"
|
"node": ">= 0.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/husky": {
|
||||||
|
"version": "8.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz",
|
||||||
|
"integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"husky": "lib/bin.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/typicode"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/is-core-module": {
|
"node_modules/is-core-module": {
|
||||||
"version": "2.11.0",
|
"version": "2.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
|
||||||
@ -564,9 +584,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/loupe": {
|
"node_modules/loupe": {
|
||||||
"version": "2.3.4",
|
"version": "2.3.6",
|
||||||
"resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
|
||||||
"integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
|
"integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"get-func-name": "^2.0.0"
|
"get-func-name": "^2.0.0"
|
||||||
@ -612,9 +632,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.4.18",
|
"version": "8.4.19",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz",
|
||||||
"integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
|
"integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -733,10 +753,23 @@
|
|||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/typescript": {
|
||||||
|
"version": "4.8.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
|
||||||
|
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
|
||||||
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"tsc": "bin/tsc",
|
||||||
|
"tsserver": "bin/tsserver"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "3.2.2",
|
"version": "3.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz",
|
||||||
"integrity": "sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==",
|
"integrity": "sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "^0.15.9",
|
"esbuild": "^0.15.9",
|
||||||
@ -754,6 +787,7 @@
|
|||||||
"fsevents": "~2.3.2"
|
"fsevents": "~2.3.2"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
"@types/node": ">= 14",
|
||||||
"less": "*",
|
"less": "*",
|
||||||
"sass": "*",
|
"sass": "*",
|
||||||
"stylus": "*",
|
"stylus": "*",
|
||||||
@ -761,6 +795,9 @@
|
|||||||
"terser": "^5.4.0"
|
"terser": "^5.4.0"
|
||||||
},
|
},
|
||||||
"peerDependenciesMeta": {
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
"less": {
|
"less": {
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
@ -833,23 +870,23 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@esbuild/android-arm": {
|
"@esbuild/android-arm": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz",
|
||||||
"integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==",
|
"integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@esbuild/linux-loong64": {
|
"@esbuild/linux-loong64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz",
|
||||||
"integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==",
|
"integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"@types/chai": {
|
"@types/chai": {
|
||||||
"version": "4.3.3",
|
"version": "4.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz",
|
||||||
"integrity": "sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==",
|
"integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/chai-subset": {
|
"@types/chai-subset": {
|
||||||
@ -862,9 +899,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.7.14",
|
"version": "18.11.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
|
||||||
"integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==",
|
"integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"acorn": {
|
"acorn": {
|
||||||
@ -880,14 +917,14 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"chai": {
|
"chai": {
|
||||||
"version": "4.3.6",
|
"version": "4.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
|
"resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz",
|
||||||
"integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
|
"integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"assertion-error": "^1.1.0",
|
"assertion-error": "^1.1.0",
|
||||||
"check-error": "^1.0.2",
|
"check-error": "^1.0.2",
|
||||||
"deep-eql": "^3.0.1",
|
"deep-eql": "^4.1.2",
|
||||||
"get-func-name": "^2.0.0",
|
"get-func-name": "^2.0.0",
|
||||||
"loupe": "^2.3.1",
|
"loupe": "^2.3.1",
|
||||||
"pathval": "^1.1.1",
|
"pathval": "^1.1.1",
|
||||||
@ -910,181 +947,181 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"deep-eql": {
|
"deep-eql": {
|
||||||
"version": "3.0.1",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.2.tgz",
|
||||||
"integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
|
"integrity": "sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"type-detect": "^4.0.0"
|
"type-detect": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"esbuild": {
|
"esbuild": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz",
|
||||||
"integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==",
|
"integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@esbuild/android-arm": "0.15.12",
|
"@esbuild/android-arm": "0.15.13",
|
||||||
"@esbuild/linux-loong64": "0.15.12",
|
"@esbuild/linux-loong64": "0.15.13",
|
||||||
"esbuild-android-64": "0.15.12",
|
"esbuild-android-64": "0.15.13",
|
||||||
"esbuild-android-arm64": "0.15.12",
|
"esbuild-android-arm64": "0.15.13",
|
||||||
"esbuild-darwin-64": "0.15.12",
|
"esbuild-darwin-64": "0.15.13",
|
||||||
"esbuild-darwin-arm64": "0.15.12",
|
"esbuild-darwin-arm64": "0.15.13",
|
||||||
"esbuild-freebsd-64": "0.15.12",
|
"esbuild-freebsd-64": "0.15.13",
|
||||||
"esbuild-freebsd-arm64": "0.15.12",
|
"esbuild-freebsd-arm64": "0.15.13",
|
||||||
"esbuild-linux-32": "0.15.12",
|
"esbuild-linux-32": "0.15.13",
|
||||||
"esbuild-linux-64": "0.15.12",
|
"esbuild-linux-64": "0.15.13",
|
||||||
"esbuild-linux-arm": "0.15.12",
|
"esbuild-linux-arm": "0.15.13",
|
||||||
"esbuild-linux-arm64": "0.15.12",
|
"esbuild-linux-arm64": "0.15.13",
|
||||||
"esbuild-linux-mips64le": "0.15.12",
|
"esbuild-linux-mips64le": "0.15.13",
|
||||||
"esbuild-linux-ppc64le": "0.15.12",
|
"esbuild-linux-ppc64le": "0.15.13",
|
||||||
"esbuild-linux-riscv64": "0.15.12",
|
"esbuild-linux-riscv64": "0.15.13",
|
||||||
"esbuild-linux-s390x": "0.15.12",
|
"esbuild-linux-s390x": "0.15.13",
|
||||||
"esbuild-netbsd-64": "0.15.12",
|
"esbuild-netbsd-64": "0.15.13",
|
||||||
"esbuild-openbsd-64": "0.15.12",
|
"esbuild-openbsd-64": "0.15.13",
|
||||||
"esbuild-sunos-64": "0.15.12",
|
"esbuild-sunos-64": "0.15.13",
|
||||||
"esbuild-windows-32": "0.15.12",
|
"esbuild-windows-32": "0.15.13",
|
||||||
"esbuild-windows-64": "0.15.12",
|
"esbuild-windows-64": "0.15.13",
|
||||||
"esbuild-windows-arm64": "0.15.12"
|
"esbuild-windows-arm64": "0.15.13"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"esbuild-android-64": {
|
"esbuild-android-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==",
|
"integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-android-arm64": {
|
"esbuild-android-arm64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz",
|
||||||
"integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==",
|
"integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-darwin-64": {
|
"esbuild-darwin-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==",
|
"integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-darwin-arm64": {
|
"esbuild-darwin-arm64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz",
|
||||||
"integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==",
|
"integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-freebsd-64": {
|
"esbuild-freebsd-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==",
|
"integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-freebsd-arm64": {
|
"esbuild-freebsd-arm64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz",
|
||||||
"integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==",
|
"integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-linux-32": {
|
"esbuild-linux-32": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz",
|
||||||
"integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==",
|
"integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-linux-64": {
|
"esbuild-linux-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==",
|
"integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-linux-arm": {
|
"esbuild-linux-arm": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz",
|
||||||
"integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==",
|
"integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-linux-arm64": {
|
"esbuild-linux-arm64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz",
|
||||||
"integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==",
|
"integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-linux-mips64le": {
|
"esbuild-linux-mips64le": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz",
|
||||||
"integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==",
|
"integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-linux-ppc64le": {
|
"esbuild-linux-ppc64le": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz",
|
||||||
"integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==",
|
"integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-linux-riscv64": {
|
"esbuild-linux-riscv64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz",
|
||||||
"integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==",
|
"integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-linux-s390x": {
|
"esbuild-linux-s390x": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz",
|
||||||
"integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==",
|
"integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-netbsd-64": {
|
"esbuild-netbsd-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==",
|
"integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-openbsd-64": {
|
"esbuild-openbsd-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==",
|
"integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-sunos-64": {
|
"esbuild-sunos-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==",
|
"integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-windows-32": {
|
"esbuild-windows-32": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz",
|
||||||
"integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==",
|
"integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-windows-64": {
|
"esbuild-windows-64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz",
|
||||||
"integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==",
|
"integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"esbuild-windows-arm64": {
|
"esbuild-windows-arm64": {
|
||||||
"version": "0.15.12",
|
"version": "0.15.13",
|
||||||
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz",
|
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz",
|
||||||
"integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==",
|
"integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
@ -1116,6 +1153,12 @@
|
|||||||
"function-bind": "^1.1.1"
|
"function-bind": "^1.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"husky": {
|
||||||
|
"version": "8.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz",
|
||||||
|
"integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-core-module": {
|
"is-core-module": {
|
||||||
"version": "2.11.0",
|
"version": "2.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
|
||||||
@ -1132,9 +1175,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"loupe": {
|
"loupe": {
|
||||||
"version": "2.3.4",
|
"version": "2.3.6",
|
||||||
"resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
|
||||||
"integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
|
"integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"get-func-name": "^2.0.0"
|
"get-func-name": "^2.0.0"
|
||||||
@ -1171,9 +1214,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"postcss": {
|
"postcss": {
|
||||||
"version": "8.4.18",
|
"version": "8.4.19",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz",
|
||||||
"integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==",
|
"integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"nanoid": "^3.3.4",
|
"nanoid": "^3.3.4",
|
||||||
@ -1246,10 +1289,16 @@
|
|||||||
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
|
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"typescript": {
|
||||||
|
"version": "4.8.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
|
||||||
|
"integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"vite": {
|
"vite": {
|
||||||
"version": "3.2.2",
|
"version": "3.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.3.tgz",
|
||||||
"integrity": "sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==",
|
"integrity": "sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"esbuild": "^0.15.9",
|
"esbuild": "^0.15.9",
|
||||||
|
@ -3,10 +3,16 @@
|
|||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
"import": "./dist/index.js",
|
||||||
|
"require": "./dist/index.cjs"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "vitest"
|
"test": "vitest ./src",
|
||||||
|
"build": "vite build"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"vite": "^3.2.3",
|
||||||
"vitest": "^0.24.5"
|
"vitest": "^0.24.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
import { LineData, parseLine } from './parser.js'
|
import { LineData, parseLine } from './parser'
|
||||||
|
|
||||||
export function document(nextFn, indent = ' ') {
|
export function document (nextFn: () => Promise<string|null>, indent: string = ' ') {
|
||||||
let line = null
|
let line: string|null = null
|
||||||
let lineData = LineData()
|
let lineData = LineData()
|
||||||
let ended = false
|
let ended = false
|
||||||
|
|
||||||
async function next() {
|
async function next() {
|
||||||
line = await nextFn()
|
line = await nextFn()
|
||||||
if (line == null) ended = true
|
if (line === null) ended = true
|
||||||
else parseLine(line, lineData, indent)
|
else parseLine(line, lineData, indent)
|
||||||
return { line, lineData, ended, next, current }
|
return { line, lineData, ended, next, current }
|
||||||
}
|
}
|
2
packages/js/core/src/index.ts
Normal file
2
packages/js/core/src/index.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export * from './parser'
|
||||||
|
export * from './document'
|
@ -1,4 +1,4 @@
|
|||||||
import { assert, describe, expect, it } from 'vitest'
|
import { describe, expect, it } from 'vitest'
|
||||||
import { LineData, parseLine } from './parser'
|
import { LineData, parseLine } from './parser'
|
||||||
|
|
||||||
describe(`LineData`, () => {
|
describe(`LineData`, () => {
|
||||||
@ -7,9 +7,9 @@ describe(`LineData`, () => {
|
|||||||
expect(lineData).toBeTypeOf(`object`)
|
expect(lineData).toBeTypeOf(`object`)
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`has three properties`, () => {
|
it(`has four properties`, () => {
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
expect(Object.keys(lineData).length).to.equal(3)
|
expect(Object.keys(lineData).length).to.equal(4)
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`'type' is an integer initialized to zero`, () => {
|
it(`'type' is an integer initialized to zero`, () => {
|
||||||
@ -22,9 +22,14 @@ describe(`LineData`, () => {
|
|||||||
expect(lineData.type).to.equal(0)
|
expect(lineData.type).to.equal(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`'offset' is an integer initialized to zero`, () => {
|
it(`'offsetHead' is an integer initialized to zero`, () => {
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
expect(lineData.offset).to.equal(0)
|
expect(lineData.offsetHead).to.equal(0)
|
||||||
|
})
|
||||||
|
|
||||||
|
it(`'offsetTail' is an integer initialized to zero`, () => {
|
||||||
|
const lineData = LineData()
|
||||||
|
expect(lineData.offsetTail).to.equal(0)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -32,106 +37,109 @@ describe(`parseLine`, () => {
|
|||||||
it(`Requres 'line' to be a string`, () => {
|
it(`Requres 'line' to be a string`, () => {
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
expect(() => parseLine(0, lineData)).toThrowError(`'line' must be a string`)
|
expect(() => parseLine(0, lineData)).toThrowError(`'line' must be a string`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine([], lineData)).toThrowError(`'line' must be a string`)
|
expect(() => parseLine([], lineData)).toThrowError(`'line' must be a string`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine({}, lineData)).toThrowError(`'line' must be a string`)
|
expect(() => parseLine({}, lineData)).toThrowError(`'line' must be a string`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(null, lineData)).toThrowError(`'line' must be a string`)
|
expect(() => parseLine(null, lineData)).toThrowError(`'line' must be a string`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(true, lineData)).toThrowError(`'line' must be a string`)
|
expect(() => parseLine(true, lineData)).toThrowError(`'line' must be a string`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(() => {}, lineData)).toThrowError(`'line' must be a string`)
|
expect(() => parseLine(() => {}, lineData)).toThrowError(`'line' must be a string`)
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Requres 'lineData' to be an object with a numeric level and type property`, () => {
|
it(`Requres 'lineData' to be an object with numeric level and type properties`, () => {
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, 0)).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
expect(() => parseLine(``, 0)).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, [])).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
expect(() => parseLine(``, [])).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, {})).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
expect(() => parseLine(``, {})).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, null)).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
expect(() => parseLine(``, null)).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, true)).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
expect(() => parseLine(``, true)).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, () => {})).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
expect(() => parseLine(``, () => {})).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, { level: '', type: 0 })).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
expect(() => parseLine(``, { level: '', type: 0 })).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, { level: 0, type: null })).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
expect(() => parseLine(``, { level: 0, type: null })).toThrowError(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Requres 'indent' to be a single-character string`, () => {
|
it(`Requres 'indent' to be a single-character string`, () => {
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, lineData, 0)).toThrowError(`'indent' must be a single-character string`)
|
expect(() => parseLine(``, lineData, 0)).toThrowError(`'indent' must be a single-character string`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, lineData, [])).toThrowError(`'indent' must be a single-character string`)
|
expect(() => parseLine(``, lineData, [])).toThrowError(`'indent' must be a single-character string`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, lineData, {})).toThrowError(`'indent' must be a single-character string`)
|
expect(() => parseLine(``, lineData, {})).toThrowError(`'indent' must be a single-character string`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, lineData, null)).toThrowError(`'indent' must be a single-character string`)
|
expect(() => parseLine(``, lineData, null)).toThrowError(`'indent' must be a single-character string`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, lineData, true)).toThrowError(`'indent' must be a single-character string`)
|
expect(() => parseLine(``, lineData, true)).toThrowError(`'indent' must be a single-character string`)
|
||||||
|
// @ts-ignore
|
||||||
expect(() => parseLine(``, lineData, () => {})).toThrowError(`'indent' must be a single-character string`)
|
expect(() => parseLine(``, lineData, () => {})).toThrowError(`'indent' must be a single-character string`)
|
||||||
expect(() => parseLine(``, lineData, ` `)).toThrowError(`'indent' must be a single-character string`)
|
expect(() => parseLine(``, lineData, ` `)).toThrowError(`'indent' must be a single-character string`)
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Outputs { type: 0, level: 0, offset: 0 } for a blank line at indent level 0`, () => {
|
it(`Handles a blank line at indent level 0`, () => {
|
||||||
const line = ``
|
const line = ``
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
parseLine(line, lineData)
|
parseLine(line, lineData)
|
||||||
expect(lineData.type).to.equal(0)
|
expect(lineData).to.deep.equal({ type: 0, level: 0, offsetHead: 0, offsetTail: 0 })
|
||||||
expect(lineData.level).to.equal(0)
|
|
||||||
expect(lineData.offset).to.equal(0)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Outputs { type: 1, level: 1, offset: 0 } for line with a single space at indent level 1`, () => {
|
it(`Handles a line with a single space at indent level 1`, () => {
|
||||||
const line = ` `
|
const line = ` `
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
parseLine(line, lineData)
|
parseLine(line, lineData)
|
||||||
expect(lineData.type).to.equal(1)
|
expect(lineData).to.deep.equal({ type: 1, level: 1, offsetHead: 1, offsetTail: 1 })
|
||||||
expect(lineData.level).to.equal(1)
|
|
||||||
expect(lineData.offset).to.equal(0)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Outputs { type: 1, level: 2, offset: 0 } for line with two spaces`, () => {
|
it(`Handles a line with two spaces`, () => {
|
||||||
const line = ` `
|
const line = ` `
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
parseLine(line, lineData)
|
parseLine(line, lineData)
|
||||||
expect(lineData.type).to.equal(1)
|
expect(lineData).to.deep.equal({ type: 1, level: 2, offsetHead: 2, offsetTail: 2 })
|
||||||
expect(lineData.level).to.equal(2)
|
|
||||||
expect(lineData.offset).to.equal(0)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Outputs { type: 1, level: 0, offset: 0 } for a normal line at indent level 0`, () => {
|
it(`Handles a normal line at indent level 0`, () => {
|
||||||
const line = `line 1`
|
const line = `line 1`
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
parseLine(line, lineData)
|
parseLine(line, lineData)
|
||||||
expect(lineData.type).to.equal(1)
|
expect(lineData).to.deep.equal({ type: 1, level: 0, offsetHead: 0, offsetTail: 4 })
|
||||||
expect(lineData.level).to.equal(0)
|
|
||||||
expect(lineData.offset).to.equal(0)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Outputs { type: 1, level: 1, offset: 0 } for a normal line at indent level 1`, () => {
|
it(`Handles a normal line at indent level 1`, () => {
|
||||||
const line = ` line 1`
|
const line = ` line 1`
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
parseLine(line, lineData)
|
parseLine(line, lineData)
|
||||||
expect(lineData.type).to.equal(1)
|
expect(lineData).to.deep.equal({ type: 1, level: 1, offsetHead: 1, offsetTail: 5 })
|
||||||
expect(lineData.level).to.equal(1)
|
|
||||||
expect(lineData.offset).to.equal(0)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Outputs { type: 1, level: 1, offset: 0 } for a normal line at indent level 1`, () => {
|
it(`Handles a normal line at indent level 2`, () => {
|
||||||
const line = ` line 1`
|
const line = ` line 1`
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
parseLine(line, lineData)
|
parseLine(line, lineData)
|
||||||
expect(lineData.type).to.equal(1)
|
expect(lineData).to.deep.equal({ type: 1, level: 2, offsetHead: 2, offsetTail: 6 })
|
||||||
expect(lineData.level).to.equal(2)
|
|
||||||
expect(lineData.offset).to.equal(0)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Outputs { type: 1, level: 1, offset: 0 } for a normal line at indent level 1 indented with tabs`, () => {
|
it(`Handles a normal line at indent level 1 indented with tabs`, () => {
|
||||||
const line = `\tline 1`
|
const line = `\tline 1`
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
parseLine(line, lineData, `\t`)
|
parseLine(line, lineData, `\t`)
|
||||||
expect(lineData.type).to.equal(1)
|
expect(lineData).to.deep.equal({ type: 1, level: 1, offsetHead: 1, offsetTail: 5 })
|
||||||
expect(lineData.level).to.equal(1)
|
|
||||||
expect(lineData.offset).to.equal(0)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Outputs { type: 1, level: 2, offset: 0 } for a normal line at indent level 1 indented with tabs`, () => {
|
it(`Handles a normal line at indent level 2 indented with tabs`, () => {
|
||||||
const line = `\t\tline 1`
|
const line = `\t\tline 1`
|
||||||
const lineData = LineData()
|
const lineData = LineData()
|
||||||
parseLine(line, lineData, `\t`)
|
parseLine(line, lineData, `\t`)
|
||||||
expect(lineData.type).to.equal(1)
|
expect(lineData).to.deep.equal({ type: 1, level: 2, offsetHead: 2, offsetTail: 6})
|
||||||
expect(lineData.level).to.equal(2)
|
|
||||||
expect(lineData.offset).to.equal(0)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it(`Nests a normal line under a preceding normal line`, () => {
|
it(`Nests a normal line under a preceding normal line`, () => {
|
||||||
@ -147,8 +155,8 @@ describe(`parseLine`, () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
expect(results).to.deep.equal([
|
expect(results).to.deep.equal([
|
||||||
{ type: 1, level: 0, offset: 0 },
|
{ type: 1, level: 0, offsetHead: 0, offsetTail: 4 },
|
||||||
{ type: 1, level: 1, offset: 0 }
|
{ type: 1, level: 1, offsetHead: 1, offsetTail: 5 }
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -167,10 +175,10 @@ describe(`parseLine`, () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
expect(results).to.deep.equal([
|
expect(results).to.deep.equal([
|
||||||
{ type: 1, level: 0, offset: 0 },
|
{ type: 1, level: 0, offsetHead: 0, offsetTail: 4 },
|
||||||
{ type: 1, level: 1, offset: 0 },
|
{ type: 1, level: 1, offsetHead: 1, offsetTail: 5 },
|
||||||
{ type: 1, level: 1, offset: 0 },
|
{ type: 1, level: 1, offsetHead: 1, offsetTail: 5 },
|
||||||
{ type: 1, level: 1, offset: 0 }
|
{ type: 1, level: 1, offsetHead: 1, offsetTail: 5 }
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -187,8 +195,8 @@ describe(`parseLine`, () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
expect(results).to.deep.equal([
|
expect(results).to.deep.equal([
|
||||||
{ type: 1, level: 0, offset: 0 },
|
{ type: 1, level: 0, offsetHead: 0, offsetTail: 4 },
|
||||||
{ type: 0, level: 1, offset: 0 }
|
{ type: 0, level: 1, offsetHead: 0, offsetTail: 0 }
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -207,10 +215,43 @@ describe(`parseLine`, () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
expect(results).to.deep.equal([
|
expect(results).to.deep.equal([
|
||||||
{ type: 1, level: 0, offset: 0 },
|
{ type: 1, level: 0, offsetHead: 0, offsetTail: 4 },
|
||||||
{ type: 0, level: 1, offset: 0 },
|
{ type: 0, level: 1, offsetHead: 0, offsetTail: 0 },
|
||||||
{ type: 0, level: 1, offset: 0 },
|
{ type: 0, level: 1, offsetHead: 0, offsetTail: 0 },
|
||||||
{ type: 0, level: 1, offset: 0 }
|
{ type: 0, level: 1, offsetHead: 0, offsetTail: 0 }
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it(`Handle head and tail matching for lines with head and tail`, () => {
|
||||||
|
const line = ` head tail1 tail2 tail3`
|
||||||
|
const lineData = LineData()
|
||||||
|
parseLine(line, lineData)
|
||||||
|
|
||||||
|
const head = line.slice(lineData.offsetHead, lineData.offsetTail)
|
||||||
|
const tail = line.slice(lineData.offsetTail + 1)
|
||||||
|
expect(head).to.equal(`head`)
|
||||||
|
expect(tail).to.equal(`tail1 tail2 tail3`)
|
||||||
|
})
|
||||||
|
|
||||||
|
it(`Handle head and tail matching for lines with head but no tail`, () => {
|
||||||
|
const line = ` head`
|
||||||
|
const lineData = LineData()
|
||||||
|
parseLine(line, lineData)
|
||||||
|
|
||||||
|
const head = line.slice(lineData.offsetHead, lineData.offsetTail)
|
||||||
|
const tail = line.slice(lineData.offsetTail + 1)
|
||||||
|
expect(head).to.equal(`head`)
|
||||||
|
expect(tail).to.equal(``)
|
||||||
|
})
|
||||||
|
|
||||||
|
it(`Handle head and tail matching for lines with head and trailing space`, () => {
|
||||||
|
const line = ` head `
|
||||||
|
const lineData = LineData()
|
||||||
|
parseLine(line, lineData)
|
||||||
|
|
||||||
|
const head = line.slice(lineData.offsetHead, lineData.offsetTail)
|
||||||
|
const tail = line.slice(lineData.offsetTail + 1)
|
||||||
|
expect(head).to.equal(`head`)
|
||||||
|
expect(tail).to.equal(``)
|
||||||
|
})
|
||||||
})
|
})
|
@ -1,8 +1,15 @@
|
|||||||
export function LineData() {
|
type LineData = {
|
||||||
return { type: 0, level: 0, offset: 0 }
|
type: number;
|
||||||
|
level: number;
|
||||||
|
offsetHead: number;
|
||||||
|
offsetTail: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function parseLine(line, lineData, indent = ' ') {
|
export function LineData(): LineData {
|
||||||
|
return { type: 0, level: 0, offsetHead: 0, offsetTail: 0 }
|
||||||
|
}
|
||||||
|
|
||||||
|
export function parseLine(line: string, lineData: LineData, indent: string = ' '): LineData {
|
||||||
if (typeof line !== 'string') throw new Error(`'line' must be a string`)
|
if (typeof line !== 'string') throw new Error(`'line' must be a string`)
|
||||||
if ((typeof lineData !== 'object' || !lineData) || typeof lineData.type !== 'number' || typeof lineData.level !== 'number') throw new Error(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
if ((typeof lineData !== 'object' || !lineData) || typeof lineData.type !== 'number' || typeof lineData.level !== 'number') throw new Error(`'lineData' must be an object with 'type' and 'level' integer properties`)
|
||||||
if (typeof indent !== 'string' || indent.length === 0 || indent.length > 1) throw new Error(`'indent' must be a single-character string`)
|
if (typeof indent !== 'string' || indent.length === 0 || indent.length > 1) throw new Error(`'indent' must be a single-character string`)
|
||||||
@ -13,12 +20,22 @@ export function parseLine(line, lineData, indent = ' ') {
|
|||||||
if (!line.length) {
|
if (!line.length) {
|
||||||
if (lineData.type === 1) level += 1
|
if (lineData.type === 1) level += 1
|
||||||
if (lineData.type === 0) level = lineData.level
|
if (lineData.type === 0) level = lineData.level
|
||||||
|
|
||||||
|
lineData.type = type
|
||||||
|
lineData.level = level
|
||||||
|
lineData.offsetHead = 0
|
||||||
|
lineData.offsetTail = 0
|
||||||
} else {
|
} else {
|
||||||
type = 1
|
type = 1
|
||||||
|
|
||||||
while (line[level] === indent && level <= lineData.level + 1) ++level
|
while (line[level] === indent && level <= lineData.level + 1) ++level
|
||||||
|
lineData.type = type
|
||||||
|
lineData.level = level
|
||||||
|
lineData.offsetHead = level
|
||||||
|
lineData.offsetTail = level
|
||||||
|
|
||||||
|
while (line[lineData.offsetTail] && line[lineData.offsetTail] !== ' ') ++lineData.offsetTail
|
||||||
}
|
}
|
||||||
|
|
||||||
lineData.type = type
|
|
||||||
lineData.level = level
|
|
||||||
return lineData
|
return lineData
|
||||||
}
|
}
|
18
packages/js/core/tsconfig.json
Normal file
18
packages/js/core/tsconfig.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json.schemastore.org/tsconfig",
|
||||||
|
"display": "Node 18",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"lib": ["ES2022"],
|
||||||
|
"module": "ES2022",
|
||||||
|
"target": "ES2022",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
|
||||||
|
"strict": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"forceConsistentCasingInFileNames": true
|
||||||
|
},
|
||||||
|
|
||||||
|
"include": ["src/**/*"]
|
||||||
|
}
|
16
packages/js/core/vite.config.js
Normal file
16
packages/js/core/vite.config.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// vite.config.js
|
||||||
|
import { resolve } from 'path'
|
||||||
|
import { defineConfig } from 'vite'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
build: {
|
||||||
|
lib: {
|
||||||
|
// Could also be a dictionary or array of multiple entry points
|
||||||
|
entry: [
|
||||||
|
resolve(__dirname, 'src/index.ts'),
|
||||||
|
resolve(__dirname, 'src/document.ts'),
|
||||||
|
resolve(__dirname, 'src/parser.ts'),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
Loading…
x
Reference in New Issue
Block a user