@nocobase/plugin-ai 2.2.19 → 2.2.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/tools/knowledge-base-retrieve.js +13 -2
- package/dist/client/index.js +1 -1
- package/dist/client-v2/index.js +1 -1
- package/dist/externalVersion.js +16 -16
- package/dist/node_modules/@langchain/mistralai/dist/index.cjs +2 -2
- package/dist/node_modules/@langchain/mistralai/package.json +1 -1
- package/dist/node_modules/@langchain/xai/dist/index.cjs +2 -2
- package/dist/node_modules/@langchain/xai/package.json +1 -1
- package/dist/node_modules/fs-extra/package.json +1 -1
- package/dist/node_modules/jsonrepair/package.json +1 -1
- package/dist/node_modules/just-bash/dist/bundle/index.cjs +239 -239
- package/dist/node_modules/just-bash/node_modules/sprintf-js/dist/.gitattributes +4 -0
- package/dist/node_modules/just-bash/node_modules/sprintf-js/dist/angular-sprintf.min.js +3 -0
- package/dist/node_modules/just-bash/node_modules/sprintf-js/dist/sprintf.min.js +3 -0
- package/dist/node_modules/just-bash/node_modules/sprintf-js/package.json +35 -0
- package/dist/node_modules/just-bash/node_modules/sprintf-js/src/angular-sprintf.js +24 -0
- package/dist/node_modules/just-bash/node_modules/sprintf-js/src/sprintf.js +231 -0
- package/dist/node_modules/just-bash/package.json +1 -1
- package/dist/node_modules/nodejs-snowflake/package.json +1 -1
- package/dist/node_modules/openai/package.json +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/ai-employees/ai-employee.d.ts +15 -1
- package/dist/server/ai-employees/ai-employee.js +107 -38
- package/dist/server/ai-employees/ai-knowledge-base.d.ts +7 -1
- package/dist/server/ai-employees/ai-knowledge-base.js +30 -7
- package/dist/server/features/knowledge-base.d.ts +2 -1
- package/dist/server/types/knowledge-base.type.d.ts +6 -0
- package/package.json +2 -2
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/bin/uuid +0 -2
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/index.js +0 -104
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/max.js +0 -7
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/md5.js +0 -200
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/native.js +0 -10
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/nil.js +0 -7
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/parse.js +0 -44
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/regex.js +0 -7
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/rng.js +0 -23
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/sha1.js +0 -82
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/stringify.js +0 -38
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/v1.js +0 -131
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/v1ToV6.js +0 -26
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/v3.js +0 -11
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/v35.js +0 -63
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/v4.js +0 -32
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/v5.js +0 -11
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/v6.js +0 -42
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/v6ToV1.js +0 -26
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/v7.js +0 -152
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/validate.js +0 -12
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/commonjs-browser/version.js +0 -15
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/index.js +0 -14
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/max.js +0 -1
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/md5.js +0 -194
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/native.js +0 -4
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/nil.js +0 -1
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/parse.js +0 -37
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/regex.js +0 -1
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/rng.js +0 -17
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/sha1.js +0 -76
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/stringify.js +0 -31
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/v1.js +0 -125
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/v1ToV6.js +0 -20
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/v3.js +0 -4
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/v35.js +0 -55
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/v4.js +0 -25
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/v5.js +0 -4
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/v6.js +0 -36
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/v6ToV1.js +0 -20
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/v7.js +0 -146
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/validate.js +0 -5
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-browser/version.js +0 -8
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/index.js +0 -14
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/max.js +0 -1
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/md5.js +0 -10
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/native.js +0 -4
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/nil.js +0 -1
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/parse.js +0 -37
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/regex.js +0 -1
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/rng.js +0 -10
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/sha1.js +0 -10
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/stringify.js +0 -31
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/v1.js +0 -125
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/v1ToV6.js +0 -20
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/v3.js +0 -4
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/v35.js +0 -55
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/v4.js +0 -25
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/v5.js +0 -4
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/v6.js +0 -32
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/v6ToV1.js +0 -20
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/v7.js +0 -146
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/validate.js +0 -5
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/esm-node/version.js +0 -8
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/index.js +0 -104
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/max.js +0 -7
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/md5-browser.js +0 -200
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/md5.js +0 -17
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/native-browser.js +0 -10
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/native.js +0 -11
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/nil.js +0 -7
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/parse.js +0 -44
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/regex.js +0 -7
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/rng-browser.js +0 -23
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/rng.js +0 -17
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/sha1-browser.js +0 -82
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/sha1.js +0 -17
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/stringify.js +0 -38
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/uuid-bin.js +0 -75
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/v1.js +0 -131
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/v1ToV6.js +0 -26
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/v3.js +0 -11
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/v35.js +0 -63
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/v4.js +0 -32
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/v5.js +0 -11
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/v6.js +0 -38
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/v6ToV1.js +0 -26
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/v7.js +0 -152
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/validate.js +0 -12
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/dist/version.js +0 -15
- package/dist/node_modules/@langchain/mistralai/node_modules/uuid/package.json +0 -142
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@langchain/xai","version":"1.3.19","description":"xAI integration for LangChain.js","author":"LangChain","license":"MIT","type":"module","engines":{"node":">=20"},"repository":{"type":"git","url":"git@github.com:langchain-ai/langchainjs.git"},"homepage":"https://github.com/langchain-ai/langchainjs/tree/main/libs/providers/langchain-xai/","dependencies":{"@langchain/openai":"1.4.7"},"peerDependencies":{"@langchain/core":"^1.0.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.3","@vitest/coverage-v8":"^3.2.4","dotenv":"^17.4.0","dpdm":"^3.14.0","typescript":"~5.8.3","vitest":"^4.1.2","zod":"^3.25.76","@langchain/openai":"^1.4.7","@langchain/core":"^1.1.48","@langchain/standard-tests":"0.0.23","@langchain/tsconfig":"0.0.1"},"publishConfig":{"access":"public"},"main":"./dist/index.cjs","types":"./dist/index.d.cts","exports":{".":{"input":"./src/index.ts","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"files":["dist/","CHANGELOG.md","README.md","LICENSE"],"module":"./dist/index.js","scripts":{"build":"turbo build:compile --filter @langchain/xai --output-logs new-only","build:compile":"tsdown","clean":"rm -rf .turbo dist/","test":"vitest run","test:watch":"vitest --watch","test:int":"vitest --mode int","test:standard:unit":"vitest --mode standard-unit","test:standard:int":"vitest --mode standard-int","test:standard":"pnpm test:standard:unit && pnpm test:standard:int","typegen":"pnpm run typegen:profiles","typegen:profiles":"pnpm --filter @langchain/model-profiles make --config profiles.toml"},"_lastModified":"2026-09-
|
|
1
|
+
{"name":"@langchain/xai","version":"1.3.19","description":"xAI integration for LangChain.js","author":"LangChain","license":"MIT","type":"module","engines":{"node":">=20"},"repository":{"type":"git","url":"git@github.com:langchain-ai/langchainjs.git"},"homepage":"https://github.com/langchain-ai/langchainjs/tree/main/libs/providers/langchain-xai/","dependencies":{"@langchain/openai":"1.4.7"},"peerDependencies":{"@langchain/core":"^1.0.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.3","@vitest/coverage-v8":"^3.2.4","dotenv":"^17.4.0","dpdm":"^3.14.0","typescript":"~5.8.3","vitest":"^4.1.2","zod":"^3.25.76","@langchain/openai":"^1.4.7","@langchain/core":"^1.1.48","@langchain/standard-tests":"0.0.23","@langchain/tsconfig":"0.0.1"},"publishConfig":{"access":"public"},"main":"./dist/index.cjs","types":"./dist/index.d.cts","exports":{".":{"input":"./src/index.ts","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"files":["dist/","CHANGELOG.md","README.md","LICENSE"],"module":"./dist/index.js","scripts":{"build":"turbo build:compile --filter @langchain/xai --output-logs new-only","build:compile":"tsdown","clean":"rm -rf .turbo dist/","test":"vitest run","test:watch":"vitest --watch","test:int":"vitest --mode int","test:standard:unit":"vitest --mode standard-unit","test:standard:int":"vitest --mode standard-int","test:standard":"pnpm test:standard:unit && pnpm test:standard:int","typegen":"pnpm run typegen:profiles","typegen:profiles":"pnpm --filter @langchain/model-profiles make --config profiles.toml"},"_lastModified":"2026-09-30T14:03:46.205Z"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"fs-extra","version":"9.1.0","description":"fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.","engines":{"node":">=10"},"homepage":"https://github.com/jprichardson/node-fs-extra","repository":{"type":"git","url":"https://github.com/jprichardson/node-fs-extra"},"keywords":["fs","file","file system","copy","directory","extra","mkdirp","mkdir","mkdirs","recursive","json","read","write","extra","delete","remove","touch","create","text","output","move","promise"],"author":"JP Richardson <jprichardson@gmail.com>","license":"MIT","dependencies":{"at-least-node":"^1.0.0","graceful-fs":"^4.2.0","jsonfile":"^6.0.1","universalify":"^2.0.0"},"devDependencies":{"coveralls":"^3.0.0","klaw":"^2.1.1","klaw-sync":"^3.0.2","minimist":"^1.1.1","mocha":"^5.0.5","nyc":"^15.0.0","proxyquire":"^2.0.1","read-dir-files":"^0.1.1","standard":"^14.1.0"},"main":"./lib/index.js","files":["lib/","!lib/**/__tests__/"],"scripts":{"full-ci":"npm run lint && npm run coverage","coverage":"nyc -r lcovonly npm run unit","coveralls":"coveralls < coverage/lcov.info","lint":"standard","test-find":"find ./lib/**/__tests__ -name *.test.js | xargs mocha","test":"npm run lint && npm run unit","unit":"node test.js"},"_lastModified":"2026-09-
|
|
1
|
+
{"name":"fs-extra","version":"9.1.0","description":"fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.","engines":{"node":">=10"},"homepage":"https://github.com/jprichardson/node-fs-extra","repository":{"type":"git","url":"https://github.com/jprichardson/node-fs-extra"},"keywords":["fs","file","file system","copy","directory","extra","mkdirp","mkdir","mkdirs","recursive","json","read","write","extra","delete","remove","touch","create","text","output","move","promise"],"author":"JP Richardson <jprichardson@gmail.com>","license":"MIT","dependencies":{"at-least-node":"^1.0.0","graceful-fs":"^4.2.0","jsonfile":"^6.0.1","universalify":"^2.0.0"},"devDependencies":{"coveralls":"^3.0.0","klaw":"^2.1.1","klaw-sync":"^3.0.2","minimist":"^1.1.1","mocha":"^5.0.5","nyc":"^15.0.0","proxyquire":"^2.0.1","read-dir-files":"^0.1.1","standard":"^14.1.0"},"main":"./lib/index.js","files":["lib/","!lib/**/__tests__/"],"scripts":{"full-ci":"npm run lint && npm run coverage","coverage":"nyc -r lcovonly npm run unit","coveralls":"coveralls < coverage/lcov.info","lint":"standard","test-find":"find ./lib/**/__tests__ -name *.test.js | xargs mocha","test":"npm run lint && npm run unit","unit":"node test.js"},"_lastModified":"2026-09-30T14:03:46.354Z"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"jsonrepair","version":"3.13.1","description":"Repair broken JSON documents","repository":{"type":"git","url":"https://github.com/josdejong/jsonrepair.git"},"type":"module","main":"lib/cjs/index.js","module":"lib/esm/index.js","browser":"lib/umd/jsonrepair.min.js","types":"lib/types/index.d.ts","sideEffects":false,"exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js","types":"./lib/types/index.d.ts"},"./stream":{"import":"./lib/esm/stream.js","require":"./lib/cjs/stream.js","types":"./lib/types/stream.d.ts"}},"keywords":["simple","json","repair","fix","invalid","stream","streaming"],"bin":{"jsonrepair":"./bin/cli.js"},"scripts":{"test":"vitest watch src","test:it":"vitest run src","build":"npm-run-all build:**","build:clean":"del-cli lib","build:esm":"babel src --out-dir lib/esm --extensions \".ts\" --source-maps --config-file ./babel.config.json","build:cjs":"babel src --out-dir lib/cjs --extensions \".ts\" --source-maps --config-file ./babel-cjs.config.json && cpy tools/cjs lib/cjs --flat","build:umd":"rollup lib/esm/index.js --format umd --name JSONRepair --sourcemap --output.file lib/umd/jsonrepair.js && cpy tools/cjs/package.json lib/umd --flat","build:umd:min":"uglifyjs --compress --mangle --source-map --comments --output lib/umd/jsonrepair.min.js -- lib/umd/jsonrepair.js","build:types":"tsc --project tsconfig-types.json","build:validate":"vitest run test-lib","lint":"biome check","format":"biome check --write","benchmark":"npm run build:esm && node tools/benchmark/run.mjs","build-and-test":"npm run lint && npm run test:it && npm run build","release":"npm-run-all release:**","release:build-and-test":"npm run build-and-test","release:version":"standard-version","release:push":"git push && git push --tag","release:publish":"npm publish","release-dry-run":"npm run build-and-test && standard-version --dry-run","prepare":"husky"},"files":["README.md","LICENSE.md","lib"],"author":"Jos de Jong","license":"ISC","devDependencies":{"@babel/cli":"7.28.3","@babel/core":"7.28.4","@babel/plugin-transform-typescript":"7.28.0","@babel/preset-env":"7.28.3","@babel/preset-typescript":"7.27.1","@biomejs/biome":"2.2.4","@commitlint/cli":"19.8.1","@commitlint/config-conventional":"19.8.1","@types/node":"24.5.2","cpy-cli":"6.0.0","del-cli":"7.0.0","husky":"9.1.7","npm-run-all":"4.1.5","rollup":"4.51.0","standard-version":"9.5.0","tinybench":"5.0.1","ts-node":"10.9.2","typescript":"5.9.2","uglify-js":"3.19.3","vitest":"3.2.4"},"_lastModified":"2026-09-
|
|
1
|
+
{"name":"jsonrepair","version":"3.13.1","description":"Repair broken JSON documents","repository":{"type":"git","url":"https://github.com/josdejong/jsonrepair.git"},"type":"module","main":"lib/cjs/index.js","module":"lib/esm/index.js","browser":"lib/umd/jsonrepair.min.js","types":"lib/types/index.d.ts","sideEffects":false,"exports":{".":{"import":"./lib/esm/index.js","require":"./lib/cjs/index.js","types":"./lib/types/index.d.ts"},"./stream":{"import":"./lib/esm/stream.js","require":"./lib/cjs/stream.js","types":"./lib/types/stream.d.ts"}},"keywords":["simple","json","repair","fix","invalid","stream","streaming"],"bin":{"jsonrepair":"./bin/cli.js"},"scripts":{"test":"vitest watch src","test:it":"vitest run src","build":"npm-run-all build:**","build:clean":"del-cli lib","build:esm":"babel src --out-dir lib/esm --extensions \".ts\" --source-maps --config-file ./babel.config.json","build:cjs":"babel src --out-dir lib/cjs --extensions \".ts\" --source-maps --config-file ./babel-cjs.config.json && cpy tools/cjs lib/cjs --flat","build:umd":"rollup lib/esm/index.js --format umd --name JSONRepair --sourcemap --output.file lib/umd/jsonrepair.js && cpy tools/cjs/package.json lib/umd --flat","build:umd:min":"uglifyjs --compress --mangle --source-map --comments --output lib/umd/jsonrepair.min.js -- lib/umd/jsonrepair.js","build:types":"tsc --project tsconfig-types.json","build:validate":"vitest run test-lib","lint":"biome check","format":"biome check --write","benchmark":"npm run build:esm && node tools/benchmark/run.mjs","build-and-test":"npm run lint && npm run test:it && npm run build","release":"npm-run-all release:**","release:build-and-test":"npm run build-and-test","release:version":"standard-version","release:push":"git push && git push --tag","release:publish":"npm publish","release-dry-run":"npm run build-and-test && standard-version --dry-run","prepare":"husky"},"files":["README.md","LICENSE.md","lib"],"author":"Jos de Jong","license":"ISC","devDependencies":{"@babel/cli":"7.28.3","@babel/core":"7.28.4","@babel/plugin-transform-typescript":"7.28.0","@babel/preset-env":"7.28.3","@babel/preset-typescript":"7.27.1","@biomejs/biome":"2.2.4","@commitlint/cli":"19.8.1","@commitlint/config-conventional":"19.8.1","@types/node":"24.5.2","cpy-cli":"6.0.0","del-cli":"7.0.0","husky":"9.1.7","npm-run-all":"4.1.5","rollup":"4.51.0","standard-version":"9.5.0","tinybench":"5.0.1","ts-node":"10.9.2","typescript":"5.9.2","uglify-js":"3.19.3","vitest":"3.2.4"},"_lastModified":"2026-09-30T14:03:50.790Z"}
|
|
@@ -17129,6 +17129,244 @@ function isValidQName(s) {
|
|
|
17129
17129
|
}
|
|
17130
17130
|
|
|
17131
17131
|
|
|
17132
|
+
/***/ }),
|
|
17133
|
+
|
|
17134
|
+
/***/ 7525:
|
|
17135
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
17136
|
+
|
|
17137
|
+
/* global window, exports, define */
|
|
17138
|
+
|
|
17139
|
+
!function() {
|
|
17140
|
+
'use strict'
|
|
17141
|
+
|
|
17142
|
+
var re = {
|
|
17143
|
+
not_string: /[^s]/,
|
|
17144
|
+
not_bool: /[^t]/,
|
|
17145
|
+
not_type: /[^T]/,
|
|
17146
|
+
not_primitive: /[^v]/,
|
|
17147
|
+
number: /[diefg]/,
|
|
17148
|
+
numeric_arg: /[bcdiefguxX]/,
|
|
17149
|
+
json: /[j]/,
|
|
17150
|
+
not_json: /[^j]/,
|
|
17151
|
+
text: /^[^\x25]+/,
|
|
17152
|
+
modulo: /^\x25{2}/,
|
|
17153
|
+
placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,
|
|
17154
|
+
key: /^([a-z_][a-z_\d]*)/i,
|
|
17155
|
+
key_access: /^\.([a-z_][a-z_\d]*)/i,
|
|
17156
|
+
index_access: /^\[(\d+)\]/,
|
|
17157
|
+
sign: /^[+-]/
|
|
17158
|
+
}
|
|
17159
|
+
|
|
17160
|
+
function sprintf(key) {
|
|
17161
|
+
// `arguments` is not an array, but should be fine for this call
|
|
17162
|
+
return sprintf_format(sprintf_parse(key), arguments)
|
|
17163
|
+
}
|
|
17164
|
+
|
|
17165
|
+
function vsprintf(fmt, argv) {
|
|
17166
|
+
return sprintf.apply(null, [fmt].concat(argv || []))
|
|
17167
|
+
}
|
|
17168
|
+
|
|
17169
|
+
function sprintf_format(parse_tree, argv) {
|
|
17170
|
+
var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign
|
|
17171
|
+
for (i = 0; i < tree_length; i++) {
|
|
17172
|
+
if (typeof parse_tree[i] === 'string') {
|
|
17173
|
+
output += parse_tree[i]
|
|
17174
|
+
}
|
|
17175
|
+
else if (typeof parse_tree[i] === 'object') {
|
|
17176
|
+
ph = parse_tree[i] // convenience purposes only
|
|
17177
|
+
if (ph.keys) { // keyword argument
|
|
17178
|
+
arg = argv[cursor]
|
|
17179
|
+
for (k = 0; k < ph.keys.length; k++) {
|
|
17180
|
+
if (arg == undefined) {
|
|
17181
|
+
throw new Error(sprintf('[sprintf] Cannot access property "%s" of undefined value "%s"', ph.keys[k], ph.keys[k-1]))
|
|
17182
|
+
}
|
|
17183
|
+
arg = arg[ph.keys[k]]
|
|
17184
|
+
}
|
|
17185
|
+
}
|
|
17186
|
+
else if (ph.param_no) { // positional argument (explicit)
|
|
17187
|
+
arg = argv[ph.param_no]
|
|
17188
|
+
}
|
|
17189
|
+
else { // positional argument (implicit)
|
|
17190
|
+
arg = argv[cursor++]
|
|
17191
|
+
}
|
|
17192
|
+
|
|
17193
|
+
if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {
|
|
17194
|
+
arg = arg()
|
|
17195
|
+
}
|
|
17196
|
+
|
|
17197
|
+
if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {
|
|
17198
|
+
throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))
|
|
17199
|
+
}
|
|
17200
|
+
|
|
17201
|
+
if (re.number.test(ph.type)) {
|
|
17202
|
+
is_positive = arg >= 0
|
|
17203
|
+
}
|
|
17204
|
+
|
|
17205
|
+
switch (ph.type) {
|
|
17206
|
+
case 'b':
|
|
17207
|
+
arg = parseInt(arg, 10).toString(2)
|
|
17208
|
+
break
|
|
17209
|
+
case 'c':
|
|
17210
|
+
arg = String.fromCharCode(parseInt(arg, 10))
|
|
17211
|
+
break
|
|
17212
|
+
case 'd':
|
|
17213
|
+
case 'i':
|
|
17214
|
+
arg = parseInt(arg, 10)
|
|
17215
|
+
break
|
|
17216
|
+
case 'j':
|
|
17217
|
+
arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)
|
|
17218
|
+
break
|
|
17219
|
+
case 'e':
|
|
17220
|
+
arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()
|
|
17221
|
+
break
|
|
17222
|
+
case 'f':
|
|
17223
|
+
arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)
|
|
17224
|
+
break
|
|
17225
|
+
case 'g':
|
|
17226
|
+
arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)
|
|
17227
|
+
break
|
|
17228
|
+
case 'o':
|
|
17229
|
+
arg = (parseInt(arg, 10) >>> 0).toString(8)
|
|
17230
|
+
break
|
|
17231
|
+
case 's':
|
|
17232
|
+
arg = String(arg)
|
|
17233
|
+
arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
|
|
17234
|
+
break
|
|
17235
|
+
case 't':
|
|
17236
|
+
arg = String(!!arg)
|
|
17237
|
+
arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
|
|
17238
|
+
break
|
|
17239
|
+
case 'T':
|
|
17240
|
+
arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()
|
|
17241
|
+
arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
|
|
17242
|
+
break
|
|
17243
|
+
case 'u':
|
|
17244
|
+
arg = parseInt(arg, 10) >>> 0
|
|
17245
|
+
break
|
|
17246
|
+
case 'v':
|
|
17247
|
+
arg = arg.valueOf()
|
|
17248
|
+
arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
|
|
17249
|
+
break
|
|
17250
|
+
case 'x':
|
|
17251
|
+
arg = (parseInt(arg, 10) >>> 0).toString(16)
|
|
17252
|
+
break
|
|
17253
|
+
case 'X':
|
|
17254
|
+
arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()
|
|
17255
|
+
break
|
|
17256
|
+
}
|
|
17257
|
+
if (re.json.test(ph.type)) {
|
|
17258
|
+
output += arg
|
|
17259
|
+
}
|
|
17260
|
+
else {
|
|
17261
|
+
if (re.number.test(ph.type) && (!is_positive || ph.sign)) {
|
|
17262
|
+
sign = is_positive ? '+' : '-'
|
|
17263
|
+
arg = arg.toString().replace(re.sign, '')
|
|
17264
|
+
}
|
|
17265
|
+
else {
|
|
17266
|
+
sign = ''
|
|
17267
|
+
}
|
|
17268
|
+
pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '
|
|
17269
|
+
pad_length = ph.width - (sign + arg).length
|
|
17270
|
+
pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''
|
|
17271
|
+
output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)
|
|
17272
|
+
}
|
|
17273
|
+
}
|
|
17274
|
+
}
|
|
17275
|
+
return output
|
|
17276
|
+
}
|
|
17277
|
+
|
|
17278
|
+
var sprintf_cache = Object.create(null)
|
|
17279
|
+
|
|
17280
|
+
function sprintf_parse(fmt) {
|
|
17281
|
+
if (sprintf_cache[fmt]) {
|
|
17282
|
+
return sprintf_cache[fmt]
|
|
17283
|
+
}
|
|
17284
|
+
|
|
17285
|
+
var _fmt = fmt, match, parse_tree = [], arg_names = 0
|
|
17286
|
+
while (_fmt) {
|
|
17287
|
+
if ((match = re.text.exec(_fmt)) !== null) {
|
|
17288
|
+
parse_tree.push(match[0])
|
|
17289
|
+
}
|
|
17290
|
+
else if ((match = re.modulo.exec(_fmt)) !== null) {
|
|
17291
|
+
parse_tree.push('%')
|
|
17292
|
+
}
|
|
17293
|
+
else if ((match = re.placeholder.exec(_fmt)) !== null) {
|
|
17294
|
+
if (match[2]) {
|
|
17295
|
+
arg_names |= 1
|
|
17296
|
+
var field_list = [], replacement_field = match[2], field_match = []
|
|
17297
|
+
if ((field_match = re.key.exec(replacement_field)) !== null) {
|
|
17298
|
+
field_list.push(field_match[1])
|
|
17299
|
+
while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
|
|
17300
|
+
if ((field_match = re.key_access.exec(replacement_field)) !== null) {
|
|
17301
|
+
field_list.push(field_match[1])
|
|
17302
|
+
}
|
|
17303
|
+
else if ((field_match = re.index_access.exec(replacement_field)) !== null) {
|
|
17304
|
+
field_list.push(field_match[1])
|
|
17305
|
+
}
|
|
17306
|
+
else {
|
|
17307
|
+
throw new SyntaxError('[sprintf] failed to parse named argument key')
|
|
17308
|
+
}
|
|
17309
|
+
}
|
|
17310
|
+
}
|
|
17311
|
+
else {
|
|
17312
|
+
throw new SyntaxError('[sprintf] failed to parse named argument key')
|
|
17313
|
+
}
|
|
17314
|
+
match[2] = field_list
|
|
17315
|
+
}
|
|
17316
|
+
else {
|
|
17317
|
+
arg_names |= 2
|
|
17318
|
+
}
|
|
17319
|
+
if (arg_names === 3) {
|
|
17320
|
+
throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')
|
|
17321
|
+
}
|
|
17322
|
+
|
|
17323
|
+
parse_tree.push(
|
|
17324
|
+
{
|
|
17325
|
+
placeholder: match[0],
|
|
17326
|
+
param_no: match[1],
|
|
17327
|
+
keys: match[2],
|
|
17328
|
+
sign: match[3],
|
|
17329
|
+
pad_char: match[4],
|
|
17330
|
+
align: match[5],
|
|
17331
|
+
width: match[6],
|
|
17332
|
+
precision: match[7],
|
|
17333
|
+
type: match[8]
|
|
17334
|
+
}
|
|
17335
|
+
)
|
|
17336
|
+
}
|
|
17337
|
+
else {
|
|
17338
|
+
throw new SyntaxError('[sprintf] unexpected placeholder')
|
|
17339
|
+
}
|
|
17340
|
+
_fmt = _fmt.substring(match[0].length)
|
|
17341
|
+
}
|
|
17342
|
+
return sprintf_cache[fmt] = parse_tree
|
|
17343
|
+
}
|
|
17344
|
+
|
|
17345
|
+
/**
|
|
17346
|
+
* export to either browser or node.js
|
|
17347
|
+
*/
|
|
17348
|
+
/* eslint-disable quote-props */
|
|
17349
|
+
if (true) {
|
|
17350
|
+
exports.sprintf = sprintf
|
|
17351
|
+
exports.vsprintf = vsprintf
|
|
17352
|
+
}
|
|
17353
|
+
if (typeof window !== 'undefined') {
|
|
17354
|
+
window['sprintf'] = sprintf
|
|
17355
|
+
window['vsprintf'] = vsprintf
|
|
17356
|
+
|
|
17357
|
+
if (typeof define === 'function' && define['amd']) {
|
|
17358
|
+
define(function() {
|
|
17359
|
+
return {
|
|
17360
|
+
'sprintf': sprintf,
|
|
17361
|
+
'vsprintf': vsprintf
|
|
17362
|
+
}
|
|
17363
|
+
})
|
|
17364
|
+
}
|
|
17365
|
+
}
|
|
17366
|
+
/* eslint-enable quote-props */
|
|
17367
|
+
}(); // eslint-disable-line
|
|
17368
|
+
|
|
17369
|
+
|
|
17132
17370
|
/***/ }),
|
|
17133
17371
|
|
|
17134
17372
|
/***/ 8982:
|
|
@@ -18002,244 +18240,6 @@ Stream.prototype.flush = function() {
|
|
|
18002
18240
|
module.exports = Stream;
|
|
18003
18241
|
|
|
18004
18242
|
|
|
18005
|
-
/***/ }),
|
|
18006
|
-
|
|
18007
|
-
/***/ 3988:
|
|
18008
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
18009
|
-
|
|
18010
|
-
/* global window, exports, define */
|
|
18011
|
-
|
|
18012
|
-
!function() {
|
|
18013
|
-
'use strict'
|
|
18014
|
-
|
|
18015
|
-
var re = {
|
|
18016
|
-
not_string: /[^s]/,
|
|
18017
|
-
not_bool: /[^t]/,
|
|
18018
|
-
not_type: /[^T]/,
|
|
18019
|
-
not_primitive: /[^v]/,
|
|
18020
|
-
number: /[diefg]/,
|
|
18021
|
-
numeric_arg: /[bcdiefguxX]/,
|
|
18022
|
-
json: /[j]/,
|
|
18023
|
-
not_json: /[^j]/,
|
|
18024
|
-
text: /^[^\x25]+/,
|
|
18025
|
-
modulo: /^\x25{2}/,
|
|
18026
|
-
placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,
|
|
18027
|
-
key: /^([a-z_][a-z_\d]*)/i,
|
|
18028
|
-
key_access: /^\.([a-z_][a-z_\d]*)/i,
|
|
18029
|
-
index_access: /^\[(\d+)\]/,
|
|
18030
|
-
sign: /^[+-]/
|
|
18031
|
-
}
|
|
18032
|
-
|
|
18033
|
-
function sprintf(key) {
|
|
18034
|
-
// `arguments` is not an array, but should be fine for this call
|
|
18035
|
-
return sprintf_format(sprintf_parse(key), arguments)
|
|
18036
|
-
}
|
|
18037
|
-
|
|
18038
|
-
function vsprintf(fmt, argv) {
|
|
18039
|
-
return sprintf.apply(null, [fmt].concat(argv || []))
|
|
18040
|
-
}
|
|
18041
|
-
|
|
18042
|
-
function sprintf_format(parse_tree, argv) {
|
|
18043
|
-
var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign
|
|
18044
|
-
for (i = 0; i < tree_length; i++) {
|
|
18045
|
-
if (typeof parse_tree[i] === 'string') {
|
|
18046
|
-
output += parse_tree[i]
|
|
18047
|
-
}
|
|
18048
|
-
else if (typeof parse_tree[i] === 'object') {
|
|
18049
|
-
ph = parse_tree[i] // convenience purposes only
|
|
18050
|
-
if (ph.keys) { // keyword argument
|
|
18051
|
-
arg = argv[cursor]
|
|
18052
|
-
for (k = 0; k < ph.keys.length; k++) {
|
|
18053
|
-
if (arg == undefined) {
|
|
18054
|
-
throw new Error(sprintf('[sprintf] Cannot access property "%s" of undefined value "%s"', ph.keys[k], ph.keys[k-1]))
|
|
18055
|
-
}
|
|
18056
|
-
arg = arg[ph.keys[k]]
|
|
18057
|
-
}
|
|
18058
|
-
}
|
|
18059
|
-
else if (ph.param_no) { // positional argument (explicit)
|
|
18060
|
-
arg = argv[ph.param_no]
|
|
18061
|
-
}
|
|
18062
|
-
else { // positional argument (implicit)
|
|
18063
|
-
arg = argv[cursor++]
|
|
18064
|
-
}
|
|
18065
|
-
|
|
18066
|
-
if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {
|
|
18067
|
-
arg = arg()
|
|
18068
|
-
}
|
|
18069
|
-
|
|
18070
|
-
if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {
|
|
18071
|
-
throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))
|
|
18072
|
-
}
|
|
18073
|
-
|
|
18074
|
-
if (re.number.test(ph.type)) {
|
|
18075
|
-
is_positive = arg >= 0
|
|
18076
|
-
}
|
|
18077
|
-
|
|
18078
|
-
switch (ph.type) {
|
|
18079
|
-
case 'b':
|
|
18080
|
-
arg = parseInt(arg, 10).toString(2)
|
|
18081
|
-
break
|
|
18082
|
-
case 'c':
|
|
18083
|
-
arg = String.fromCharCode(parseInt(arg, 10))
|
|
18084
|
-
break
|
|
18085
|
-
case 'd':
|
|
18086
|
-
case 'i':
|
|
18087
|
-
arg = parseInt(arg, 10)
|
|
18088
|
-
break
|
|
18089
|
-
case 'j':
|
|
18090
|
-
arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)
|
|
18091
|
-
break
|
|
18092
|
-
case 'e':
|
|
18093
|
-
arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()
|
|
18094
|
-
break
|
|
18095
|
-
case 'f':
|
|
18096
|
-
arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)
|
|
18097
|
-
break
|
|
18098
|
-
case 'g':
|
|
18099
|
-
arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)
|
|
18100
|
-
break
|
|
18101
|
-
case 'o':
|
|
18102
|
-
arg = (parseInt(arg, 10) >>> 0).toString(8)
|
|
18103
|
-
break
|
|
18104
|
-
case 's':
|
|
18105
|
-
arg = String(arg)
|
|
18106
|
-
arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
|
|
18107
|
-
break
|
|
18108
|
-
case 't':
|
|
18109
|
-
arg = String(!!arg)
|
|
18110
|
-
arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
|
|
18111
|
-
break
|
|
18112
|
-
case 'T':
|
|
18113
|
-
arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()
|
|
18114
|
-
arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
|
|
18115
|
-
break
|
|
18116
|
-
case 'u':
|
|
18117
|
-
arg = parseInt(arg, 10) >>> 0
|
|
18118
|
-
break
|
|
18119
|
-
case 'v':
|
|
18120
|
-
arg = arg.valueOf()
|
|
18121
|
-
arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
|
|
18122
|
-
break
|
|
18123
|
-
case 'x':
|
|
18124
|
-
arg = (parseInt(arg, 10) >>> 0).toString(16)
|
|
18125
|
-
break
|
|
18126
|
-
case 'X':
|
|
18127
|
-
arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()
|
|
18128
|
-
break
|
|
18129
|
-
}
|
|
18130
|
-
if (re.json.test(ph.type)) {
|
|
18131
|
-
output += arg
|
|
18132
|
-
}
|
|
18133
|
-
else {
|
|
18134
|
-
if (re.number.test(ph.type) && (!is_positive || ph.sign)) {
|
|
18135
|
-
sign = is_positive ? '+' : '-'
|
|
18136
|
-
arg = arg.toString().replace(re.sign, '')
|
|
18137
|
-
}
|
|
18138
|
-
else {
|
|
18139
|
-
sign = ''
|
|
18140
|
-
}
|
|
18141
|
-
pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '
|
|
18142
|
-
pad_length = ph.width - (sign + arg).length
|
|
18143
|
-
pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''
|
|
18144
|
-
output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)
|
|
18145
|
-
}
|
|
18146
|
-
}
|
|
18147
|
-
}
|
|
18148
|
-
return output
|
|
18149
|
-
}
|
|
18150
|
-
|
|
18151
|
-
var sprintf_cache = Object.create(null)
|
|
18152
|
-
|
|
18153
|
-
function sprintf_parse(fmt) {
|
|
18154
|
-
if (sprintf_cache[fmt]) {
|
|
18155
|
-
return sprintf_cache[fmt]
|
|
18156
|
-
}
|
|
18157
|
-
|
|
18158
|
-
var _fmt = fmt, match, parse_tree = [], arg_names = 0
|
|
18159
|
-
while (_fmt) {
|
|
18160
|
-
if ((match = re.text.exec(_fmt)) !== null) {
|
|
18161
|
-
parse_tree.push(match[0])
|
|
18162
|
-
}
|
|
18163
|
-
else if ((match = re.modulo.exec(_fmt)) !== null) {
|
|
18164
|
-
parse_tree.push('%')
|
|
18165
|
-
}
|
|
18166
|
-
else if ((match = re.placeholder.exec(_fmt)) !== null) {
|
|
18167
|
-
if (match[2]) {
|
|
18168
|
-
arg_names |= 1
|
|
18169
|
-
var field_list = [], replacement_field = match[2], field_match = []
|
|
18170
|
-
if ((field_match = re.key.exec(replacement_field)) !== null) {
|
|
18171
|
-
field_list.push(field_match[1])
|
|
18172
|
-
while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
|
|
18173
|
-
if ((field_match = re.key_access.exec(replacement_field)) !== null) {
|
|
18174
|
-
field_list.push(field_match[1])
|
|
18175
|
-
}
|
|
18176
|
-
else if ((field_match = re.index_access.exec(replacement_field)) !== null) {
|
|
18177
|
-
field_list.push(field_match[1])
|
|
18178
|
-
}
|
|
18179
|
-
else {
|
|
18180
|
-
throw new SyntaxError('[sprintf] failed to parse named argument key')
|
|
18181
|
-
}
|
|
18182
|
-
}
|
|
18183
|
-
}
|
|
18184
|
-
else {
|
|
18185
|
-
throw new SyntaxError('[sprintf] failed to parse named argument key')
|
|
18186
|
-
}
|
|
18187
|
-
match[2] = field_list
|
|
18188
|
-
}
|
|
18189
|
-
else {
|
|
18190
|
-
arg_names |= 2
|
|
18191
|
-
}
|
|
18192
|
-
if (arg_names === 3) {
|
|
18193
|
-
throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')
|
|
18194
|
-
}
|
|
18195
|
-
|
|
18196
|
-
parse_tree.push(
|
|
18197
|
-
{
|
|
18198
|
-
placeholder: match[0],
|
|
18199
|
-
param_no: match[1],
|
|
18200
|
-
keys: match[2],
|
|
18201
|
-
sign: match[3],
|
|
18202
|
-
pad_char: match[4],
|
|
18203
|
-
align: match[5],
|
|
18204
|
-
width: match[6],
|
|
18205
|
-
precision: match[7],
|
|
18206
|
-
type: match[8]
|
|
18207
|
-
}
|
|
18208
|
-
)
|
|
18209
|
-
}
|
|
18210
|
-
else {
|
|
18211
|
-
throw new SyntaxError('[sprintf] unexpected placeholder')
|
|
18212
|
-
}
|
|
18213
|
-
_fmt = _fmt.substring(match[0].length)
|
|
18214
|
-
}
|
|
18215
|
-
return sprintf_cache[fmt] = parse_tree
|
|
18216
|
-
}
|
|
18217
|
-
|
|
18218
|
-
/**
|
|
18219
|
-
* export to either browser or node.js
|
|
18220
|
-
*/
|
|
18221
|
-
/* eslint-disable quote-props */
|
|
18222
|
-
if (true) {
|
|
18223
|
-
exports.sprintf = sprintf
|
|
18224
|
-
exports.vsprintf = vsprintf
|
|
18225
|
-
}
|
|
18226
|
-
if (typeof window !== 'undefined') {
|
|
18227
|
-
window['sprintf'] = sprintf
|
|
18228
|
-
window['vsprintf'] = vsprintf
|
|
18229
|
-
|
|
18230
|
-
if (typeof define === 'function' && define['amd']) {
|
|
18231
|
-
define(function() {
|
|
18232
|
-
return {
|
|
18233
|
-
'sprintf': sprintf,
|
|
18234
|
-
'vsprintf': vsprintf
|
|
18235
|
-
}
|
|
18236
|
-
})
|
|
18237
|
-
}
|
|
18238
|
-
}
|
|
18239
|
-
/* eslint-enable quote-props */
|
|
18240
|
-
}(); // eslint-disable-line
|
|
18241
|
-
|
|
18242
|
-
|
|
18243
18243
|
/***/ }),
|
|
18244
18244
|
|
|
18245
18245
|
/***/ 4552:
|
|
@@ -24415,7 +24415,7 @@ Notes:
|
|
|
24415
24415
|
`}}}}function Ite(t,e){let r=t.match(/^%[-+0 #' ]*(\d*)(?:\.(\d*))?/);if(!r)return;let n=r[1]?Number(r[1]):0,s=r[2]!==void 0?Number(r[2]):-1;ii(n,e,"width"),s!==-1&&ii(s,e,"precision")}function Ag(t){Mi=!1;let e=t.trimStart(),r=e!==e.trimEnd();if(t=e.trimEnd(),t.startsWith("'")&&t.length>=2||t.startsWith('"')&&t.length>=2)return t.charCodeAt(1);if(t.startsWith("\\'")&&t.length>=3||t.startsWith('\\"')&&t.length>=3)return t.charCodeAt(2);if(t.startsWith("+")&&(t=t.slice(1)),t.startsWith("0x")||t.startsWith("0X")){let n=parseInt(t,16);return Number.isNaN(n)?(Mi=!0,0):(r&&(Mi=!0),n)}if(t.startsWith("0")&&t.length>1&&/^-?0[0-7]+$/.test(t))return r&&(Mi=!0),parseInt(t,8)||0;if(/^\d+#/.test(t)){Mi=!0;let n=t.match(/^(\d+)#/);return n?parseInt(n[1],10):0}if(t!==""&&!/^-?\d+$/.test(t)){Mi=!0;let n=parseInt(t,10);return Number.isNaN(n)?0:n}return r&&(Mi=!0),parseInt(t,10)||0}function O3(t,e){let r=t.match(/^%([- +#0']*)(\d*)(\.(\d*))?[diu]$/);if(!r)return(0,Zl.sprintf)(t.replace(/\.\d*/,""),e);let n=r[1]||"",s=r[2]?parseInt(r[2],10):0,i=r[3]!==void 0?r[4]?parseInt(r[4],10):0:-1,o=e<0,a=Math.abs(e),l=String(a);i>=0&&(l=l.padStart(i,"0"));let c="";o?c="-":n.includes("+")?c="+":n.includes(" ")&&(c=" ");let u=c+l;return s>u.length&&(n.includes("-")?u=u.padEnd(s," "):n.includes("0")&&i<0?u=c+l.padStart(s-c.length,"0"):u=u.padStart(s," ")),u}function bte(t,e){let r=t.match(/^%([- +#0']*)(\d*)(\.(\d*))?o$/);if(!r)return(0,Zl.sprintf)(t,e);let n=r[1]||"",s=r[2]?parseInt(r[2],10):0,i=r[3]!==void 0?r[4]?parseInt(r[4],10):0:-1,o=Math.abs(e).toString(8);i>=0&&(o=o.padStart(i,"0")),n.includes("#")&&!o.startsWith("0")&&(o=`0${o}`);let a=o;return s>a.length&&(n.includes("-")?a=a.padEnd(s," "):n.includes("0")&&i<0?a=a.padStart(s,"0"):a=a.padStart(s," ")),a}function Bte(t,e){let r=t.includes("X"),n=t.match(/^%([- +#0']*)(\d*)(\.(\d*))?[xX]$/);if(!n)return(0,Zl.sprintf)(t,e);let s=n[1]||"",i=n[2]?parseInt(n[2],10):0,o=n[3]!==void 0?n[4]?parseInt(n[4],10):0:-1,a=Math.abs(e).toString(16);r&&(a=a.toUpperCase()),o>=0&&(a=a.padStart(o,"0"));let l="";s.includes("#")&&e!==0&&(l=r?"0X":"0x");let c=l+a;return i>c.length&&(s.includes("-")?c=c.padEnd(i," "):s.includes("0")&&o<0?c=l+a.padStart(i-l.length,"0"):c=c.padStart(i," ")),c}function Ste(t,e){if(t===""){if(e<2)throw new B(`printf: output size limit exceeded (${e} bytes)`,"string_length");return"''"}if(/^[a-zA-Z0-9_./-]+$/.test(t)){if(W(t)>e)throw new B(`printf: output size limit exceeded (${e} bytes)`,"string_length");return t}let r=/[\x00-\x1f\x7f-\xff]/.test(t),n=r?3:0;for(let i of t){let o=i.charCodeAt(0);if(r?i==="'"||i==="\\"||i===`
|
|
24416
24416
|
`||i===" "||i==="\r"||i==="\x07"||i==="\b"||i==="\f"||i==="\v"||i==="\x1B"||i==='"'?n+=2:o<32||o>=127&&o<=255?n+=4:n+=W(i):n+=W(i)+(" |&;<>()$`\\\"'*?[#~=%!{}".includes(i)?1:0),n>e)throw new B(`printf: output size limit exceeded (${e} bytes)`,"string_length")}if(r){let i="$'";for(let o of t){let a=o.charCodeAt(0);o==="'"?i+="\\'":o==="\\"?i+="\\\\":o===`
|
|
24417
24417
|
`?i+="\\n":o===" "?i+="\\t":o==="\r"?i+="\\r":o==="\x07"?i+="\\a":o==="\b"?i+="\\b":o==="\f"?i+="\\f":o==="\v"?i+="\\v":o==="\x1B"?i+="\\E":a<32||a>=127&&a<=255?i+=`\\${a.toString(8).padStart(3,"0")}`:o==='"'?i+='\\"':i+=o}return i+="'",i}let s="";for(let i of t)" |&;<>()$`\\\"'*?[#~=%!{}".includes(i)?s+=`\\${i}`:s+=i;return s}function xte(t,e,r){let n=t.match(/^%(-?)(\d*)(\.(\d*))?s$/);if(!n)return(0,Zl.sprintf)(t.replace(/0+(?=\d)/,""),e);let s=n[1]==="-",i=n[2]?parseInt(n[2],10):0,o=n[3]!==void 0?n[4]?parseInt(n[4],10):0:-1,a=s?-i:i;return Pu(e,a,o,r)}function Qte(t,e,r){let n=Ste(e,r),s=t.match(/^%(-?)(\d*)q$/);if(!s)return n;let i=s[1]==="-",o=s[2]?parseInt(s[2],10):0;return Pu(n,i?-o:o,-1,r)}function Nte(t,e,r){let n=t.match(/^%([- +#0']*)(\d*)(\.(\d*))?[eEfFgG]$/);if(!n)return(0,Zl.sprintf)(t,r);let s=n[1]||"",i=n[2]?parseInt(n[2],10):0,o=n[3]!==void 0?n[4]?parseInt(n[4],10):0:6,a,l=e.toLowerCase();if(l==="e"?(a=r.toExponential(o),a=a.replace(/e([+-])(\d)$/,"e$10$2"),e==="E"&&(a=a.toUpperCase())):l==="f"?(a=r.toFixed(o),s.includes("#")&&o===0&&!a.includes(".")&&(a+=".")):l==="g"?(a=r.toPrecision(o||1),s.includes("#")||(a=a.replace(/\.?0+$/,""),a=a.replace(/\.?0+e/,"e")),a=a.replace(/e([+-])(\d)$/,"e$10$2"),e==="G"&&(a=a.toUpperCase())):a=r.toString(),r>=0&&(s.includes("+")?a=`+${a}`:s.includes(" ")&&(a=` ${a}`)),i>a.length)if(s.includes("-"))a=a.padEnd(i," ");else if(s.includes("0")){let c=a.match(/^[+ -]/)?.[0]||"",u=c?a.slice(1):a;a=c+u.padStart(i-c.length,"0")}else a=a.padStart(i," ");return a}function kte(t,e){if(W(t)>e)throw new B(`printf: output size limit exceeded (${e} bytes)`,"string_length");let r="",n=0;for(;n<t.length;)if(t[n]==="\\"&&n+1<t.length)switch(t[n+1]){case"n":r+=`
|
|
24418
|
-
`,n+=2;break;case"t":r+=" ",n+=2;break;case"r":r+="\r",n+=2;break;case"\\":r+="\\",n+=2;break;case"a":r+="\x07",n+=2;break;case"b":r+="\b",n+=2;break;case"f":r+="\f",n+=2;break;case"v":r+="\v",n+=2;break;case"c":return{value:r,stopped:!0};case"x":{let i=[],o=n;for(;o+1<t.length&&t[o]==="\\"&&t[o+1]==="x";){let a="",l=o+2;for(;l<t.length&&l<o+4&&/[0-9a-fA-F]/.test(t[l]);)a+=t[l],l++;if(a)i.push(parseInt(a,16)),o=l;else break}i.length>0?(r+=mte(i),n=o):(r+="\\x",n+=2);break}case"u":{let i="",o=n+2;for(;o<t.length&&o<n+6&&/[0-9a-fA-F]/.test(t[o]);)i+=t[o],o++;i?(r+=String.fromCodePoint(parseInt(i,16)),n=o):(r+="\\u",n+=2);break}case"0":{let i="",o=n+2;for(;o<t.length&&o<n+5&&/[0-7]/.test(t[o]);)i+=t[o],o++;i?r+=String.fromCharCode(parseInt(i,8)):r+="\0",n=o;break}case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let i="",o=n+1;for(;o<t.length&&o<n+4&&/[0-7]/.test(t[o]);)i+=t[o],o++;r+=String.fromCharCode(parseInt(i,8)),n=o;break}default:r+=t[n],n++}else r+=t[n],n++;return{value:r,stopped:!1}}var Zl,yte,Ete,Mi,jC,JC=M(()=>{"use strict";Zl=__nccwpck_require__(
|
|
24418
|
+
`,n+=2;break;case"t":r+=" ",n+=2;break;case"r":r+="\r",n+=2;break;case"\\":r+="\\",n+=2;break;case"a":r+="\x07",n+=2;break;case"b":r+="\b",n+=2;break;case"f":r+="\f",n+=2;break;case"v":r+="\v",n+=2;break;case"c":return{value:r,stopped:!0};case"x":{let i=[],o=n;for(;o+1<t.length&&t[o]==="\\"&&t[o+1]==="x";){let a="",l=o+2;for(;l<t.length&&l<o+4&&/[0-9a-fA-F]/.test(t[l]);)a+=t[l],l++;if(a)i.push(parseInt(a,16)),o=l;else break}i.length>0?(r+=mte(i),n=o):(r+="\\x",n+=2);break}case"u":{let i="",o=n+2;for(;o<t.length&&o<n+6&&/[0-9a-fA-F]/.test(t[o]);)i+=t[o],o++;i?(r+=String.fromCodePoint(parseInt(i,16)),n=o):(r+="\\u",n+=2);break}case"0":{let i="",o=n+2;for(;o<t.length&&o<n+5&&/[0-7]/.test(t[o]);)i+=t[o],o++;i?r+=String.fromCharCode(parseInt(i,8)):r+="\0",n=o;break}case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let i="",o=n+1;for(;o<t.length&&o<n+4&&/[0-7]/.test(t[o]);)i+=t[o],o++;r+=String.fromCharCode(parseInt(i,8)),n=o;break}default:r+=t[n],n++}else r+=t[n],n++;return{value:r,stopped:!1}}var Zl,yte,Ete,Mi,jC,JC=M(()=>{"use strict";Zl=__nccwpck_require__(7525);K();Rn();Ie();mr();YC();yte={name:"printf",summary:"format and print data",usage:"printf [-v var] FORMAT [ARGUMENT...]",options:[" -v var assign the output to shell variable VAR rather than display it"," --help display this help and exit"],notes:["FORMAT controls the output like in C printf.","Escape sequences: \\n (newline), \\t (tab), \\\\ (backslash)","Format specifiers: %s (string), %d (integer), %f (float), %x (hex), %o (octal), %% (literal %)","Width and precision: %10s (width 10), %.2f (2 decimal places), %010d (zero-padded)","Flags: %- (left-justify), %+ (show sign), %0 (zero-pad)"]},Ete={name:"printf",async execute(t,e){if(Z(t))return j(yte);if(t.length===0)return{stdout:"",stderr:`printf: usage: printf format [arguments]
|
|
24419
24419
|
`,exitCode:2,internalStdinConsumed:0};let r=null,n=0;for(;n<t.length;){let o=t[n];if(o==="--"){n++;break}if(o==="-v"){if(n+1>=t.length)return{stdout:"",stderr:`printf: -v: option requires an argument
|
|
24420
24420
|
`,exitCode:1,internalStdinConsumed:0};if(r=t[n+1],!/^[a-zA-Z_][a-zA-Z0-9_]*(?:\[[^\]\n]+\])?$/.test(r)||/[;\r\\]/.test(r)||r.includes(".."))return{stdout:"",stderr:`printf: \`${r}': not a valid identifier
|
|
24421
24421
|
`,exitCode:2,internalStdinConsumed:0};n+=2}else{if(o.startsWith("-")&&o!=="-")break;break}}if(n>=t.length)return{stdout:"",stderr:`printf: usage: printf format [arguments]
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! sprintf-js v1.1.3 | Copyright (c) 2007-present, Alexandru Mărășteanu <hello@alexei.ro> | BSD-3-Clause */
|
|
2
|
+
!function(){"use strict";angular.module("sprintf",[]).filter("sprintf",function(){return function(){return sprintf.apply(null,arguments)}}).filter("fmt",["$filter",function(t){return t("sprintf")}]).filter("vsprintf",function(){return function(t,n){return vsprintf(t,n)}}).filter("vfmt",["$filter",function(t){return t("vsprintf")}])}();
|
|
3
|
+
//# sourceMappingURL=angular-sprintf.min.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! sprintf-js v1.1.3 | Copyright (c) 2007-present, Alexandru Mărășteanu <hello@alexei.ro> | BSD-3-Clause */
|
|
2
|
+
!function(){"use strict";var g={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function y(e){return function(e,t){var r,n,i,s,a,o,p,c,l,u=1,f=e.length,d="";for(n=0;n<f;n++)if("string"==typeof e[n])d+=e[n];else if("object"==typeof e[n]){if((s=e[n]).keys)for(r=t[u],i=0;i<s.keys.length;i++){if(null==r)throw new Error(y('[sprintf] Cannot access property "%s" of undefined value "%s"',s.keys[i],s.keys[i-1]));r=r[s.keys[i]]}else r=s.param_no?t[s.param_no]:t[u++];if(g.not_type.test(s.type)&&g.not_primitive.test(s.type)&&r instanceof Function&&(r=r()),g.numeric_arg.test(s.type)&&"number"!=typeof r&&isNaN(r))throw new TypeError(y("[sprintf] expecting number but found %T",r));switch(g.number.test(s.type)&&(c=0<=r),s.type){case"b":r=parseInt(r,10).toString(2);break;case"c":r=String.fromCharCode(parseInt(r,10));break;case"d":case"i":r=parseInt(r,10);break;case"j":r=JSON.stringify(r,null,s.width?parseInt(s.width):0);break;case"e":r=s.precision?parseFloat(r).toExponential(s.precision):parseFloat(r).toExponential();break;case"f":r=s.precision?parseFloat(r).toFixed(s.precision):parseFloat(r);break;case"g":r=s.precision?String(Number(r.toPrecision(s.precision))):parseFloat(r);break;case"o":r=(parseInt(r,10)>>>0).toString(8);break;case"s":r=String(r),r=s.precision?r.substring(0,s.precision):r;break;case"t":r=String(!!r),r=s.precision?r.substring(0,s.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=s.precision?r.substring(0,s.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=s.precision?r.substring(0,s.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}g.json.test(s.type)?d+=r:(!g.number.test(s.type)||c&&!s.sign?l="":(l=c?"+":"-",r=r.toString().replace(g.sign,"")),o=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",p=s.width-(l+r).length,a=s.width&&0<p?o.repeat(p):"",d+=s.align?l+r+a:"0"===o?l+a+r:a+l+r)}return d}(function(e){if(p[e])return p[e];var t,r=e,n=[],i=0;for(;r;){if(null!==(t=g.text.exec(r)))n.push(t[0]);else if(null!==(t=g.modulo.exec(r)))n.push("%");else{if(null===(t=g.placeholder.exec(r)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){i|=1;var s=[],a=t[2],o=[];if(null===(o=g.key.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(s.push(o[1]);""!==(a=a.substring(o[0].length));)if(null!==(o=g.key_access.exec(a)))s.push(o[1]);else{if(null===(o=g.index_access.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");s.push(o[1])}t[2]=s}else i|=2;if(3===i)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return p[e]=n}(e),arguments)}function e(e,t){return y.apply(null,[e].concat(t||[]))}var p=Object.create(null);"undefined"!=typeof exports&&(exports.sprintf=y,exports.vsprintf=e),"undefined"!=typeof window&&(window.sprintf=y,window.vsprintf=e,"function"==typeof define&&define.amd&&define(function(){return{sprintf:y,vsprintf:e}}))}();
|
|
3
|
+
//# sourceMappingURL=sprintf.min.js.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sprintf-js",
|
|
3
|
+
"version": "1.1.3",
|
|
4
|
+
"description": "JavaScript sprintf implementation",
|
|
5
|
+
"author": "Alexandru Mărășteanu <hello@alexei.ro>",
|
|
6
|
+
"main": "src/sprintf.js",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"test": "mocha test/*.js",
|
|
9
|
+
"pretest": "npm run lint",
|
|
10
|
+
"lint": "eslint .",
|
|
11
|
+
"lint:fix": "eslint --fix ."
|
|
12
|
+
},
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "https://github.com/alexei/sprintf.js.git"
|
|
16
|
+
},
|
|
17
|
+
"license": "BSD-3-Clause",
|
|
18
|
+
"readmeFilename": "README.md",
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"benchmark": "^2.1.4",
|
|
21
|
+
"eslint": "^5.10.0",
|
|
22
|
+
"gulp": "^3.9.1",
|
|
23
|
+
"gulp-benchmark": "^1.1.1",
|
|
24
|
+
"gulp-eslint": "^5.0.0",
|
|
25
|
+
"gulp-header": "^2.0.5",
|
|
26
|
+
"gulp-mocha": "^6.0.0",
|
|
27
|
+
"gulp-rename": "^1.4.0",
|
|
28
|
+
"gulp-sourcemaps": "^2.6.4",
|
|
29
|
+
"gulp-uglify": "^3.0.1",
|
|
30
|
+
"mocha": "^5.2.0"
|
|
31
|
+
},
|
|
32
|
+
"overrides": {
|
|
33
|
+
"graceful-fs": "^4.2.11"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* global angular, sprintf, vsprintf */
|
|
2
|
+
|
|
3
|
+
!function() {
|
|
4
|
+
'use strict'
|
|
5
|
+
|
|
6
|
+
angular.
|
|
7
|
+
module('sprintf', []).
|
|
8
|
+
filter('sprintf', function() {
|
|
9
|
+
return function() {
|
|
10
|
+
return sprintf.apply(null, arguments)
|
|
11
|
+
}
|
|
12
|
+
}).
|
|
13
|
+
filter('fmt', ['$filter', function($filter) {
|
|
14
|
+
return $filter('sprintf')
|
|
15
|
+
}]).
|
|
16
|
+
filter('vsprintf', function() {
|
|
17
|
+
return function(format, argv) {
|
|
18
|
+
return vsprintf(format, argv)
|
|
19
|
+
}
|
|
20
|
+
}).
|
|
21
|
+
filter('vfmt', ['$filter', function($filter) {
|
|
22
|
+
return $filter('vsprintf')
|
|
23
|
+
}])
|
|
24
|
+
}(); // eslint-disable-line
|