update
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* @fileoverview A class of identifiers generator for code path segments.
|
||||
*
|
||||
* Each rule uses the identifier of code path segments to store additional
|
||||
* information of the code path.
|
||||
*
|
||||
* @author Toru Nagashima
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Public Interface
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* A generator for unique ids.
|
||||
*/
|
||||
class IdGenerator {
|
||||
/**
|
||||
* @param {string} prefix Optional. A prefix of generated ids.
|
||||
*/
|
||||
constructor(prefix) {
|
||||
this.prefix = String(prefix);
|
||||
this.n = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates id.
|
||||
* @returns {string} A generated id.
|
||||
*/
|
||||
next() {
|
||||
this.n = (1 + this.n) | 0;
|
||||
|
||||
/* c8 ignore start */
|
||||
if (this.n < 0) {
|
||||
this.n = 1;
|
||||
} /* c8 ignore stop */
|
||||
|
||||
return this.prefix + this.n;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = IdGenerator;
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"name": "@jridgewell/sourcemap-codec",
|
||||
"version": "1.5.0",
|
||||
"description": "Encode/decode sourcemap mappings",
|
||||
"keywords": [
|
||||
"sourcemap",
|
||||
"vlq"
|
||||
],
|
||||
"main": "dist/sourcemap-codec.umd.js",
|
||||
"module": "dist/sourcemap-codec.mjs",
|
||||
"types": "dist/types/sourcemap-codec.d.ts",
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"exports": {
|
||||
".": [
|
||||
{
|
||||
"types": "./dist/types/sourcemap-codec.d.ts",
|
||||
"browser": "./dist/sourcemap-codec.umd.js",
|
||||
"require": "./dist/sourcemap-codec.umd.js",
|
||||
"import": "./dist/sourcemap-codec.mjs"
|
||||
},
|
||||
"./dist/sourcemap-codec.umd.js"
|
||||
],
|
||||
"./package.json": "./package.json"
|
||||
},
|
||||
"scripts": {
|
||||
"benchmark": "run-s build:rollup benchmark:*",
|
||||
"benchmark:install": "cd benchmark && npm install",
|
||||
"benchmark:only": "node --expose-gc benchmark/index.js",
|
||||
"build": "run-s -n build:*",
|
||||
"build:rollup": "rollup -c rollup.config.js",
|
||||
"build:ts": "tsc --project tsconfig.build.json",
|
||||
"lint": "run-s -n lint:*",
|
||||
"lint:prettier": "npm run test:lint:prettier -- --write",
|
||||
"lint:ts": "npm run test:lint:ts -- --fix",
|
||||
"prebuild": "rm -rf dist",
|
||||
"prepublishOnly": "npm run preversion",
|
||||
"preversion": "run-s test build",
|
||||
"test": "run-s -n test:lint test:only",
|
||||
"test:debug": "mocha --inspect-brk",
|
||||
"test:lint": "run-s -n test:lint:*",
|
||||
"test:lint:prettier": "prettier --check '{src,test}/**/*.ts'",
|
||||
"test:lint:ts": "eslint '{src,test}/**/*.ts'",
|
||||
"test:only": "mocha",
|
||||
"test:coverage": "c8 mocha",
|
||||
"test:watch": "mocha --watch"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/jridgewell/sourcemap-codec.git"
|
||||
},
|
||||
"author": "Rich Harris",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-typescript": "8.3.0",
|
||||
"@types/mocha": "10.0.6",
|
||||
"@types/node": "17.0.15",
|
||||
"@typescript-eslint/eslint-plugin": "5.10.0",
|
||||
"@typescript-eslint/parser": "5.10.0",
|
||||
"benchmark": "2.1.4",
|
||||
"c8": "7.11.2",
|
||||
"eslint": "8.7.0",
|
||||
"eslint-config-prettier": "8.3.0",
|
||||
"mocha": "9.2.0",
|
||||
"npm-run-all": "4.1.5",
|
||||
"prettier": "2.5.1",
|
||||
"rollup": "2.64.0",
|
||||
"source-map": "0.6.1",
|
||||
"source-map-js": "1.0.2",
|
||||
"sourcemap-codec": "1.4.8",
|
||||
"tsx": "4.7.1",
|
||||
"typescript": "4.5.4"
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"routerContext.cjs","sources":["../../src/routerContext.tsx"],"sourcesContent":["import * as React from 'react'\nimport type { AnyRouter } from '@tanstack/router-core'\n\ndeclare global {\n interface Window {\n __TSR_ROUTER_CONTEXT__?: React.Context<AnyRouter>\n }\n}\n\nconst routerContext = React.createContext<AnyRouter>(null!)\n\nexport function getRouterContext() {\n if (typeof document === 'undefined') {\n return routerContext\n }\n\n if (window.__TSR_ROUTER_CONTEXT__) {\n return window.__TSR_ROUTER_CONTEXT__\n }\n\n window.__TSR_ROUTER_CONTEXT__ = routerContext as any\n\n return routerContext\n}\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;AASA,MAAM,gBAAgBA,iBAAM,cAAyB,IAAK;AAEnD,SAAS,mBAAmB;AAC7B,MAAA,OAAO,aAAa,aAAa;AAC5B,WAAA;AAAA,EAAA;AAGT,MAAI,OAAO,wBAAwB;AACjC,WAAO,OAAO;AAAA,EAAA;AAGhB,SAAO,yBAAyB;AAEzB,SAAA;AACT;;"}
|
||||
@@ -0,0 +1,19 @@
|
||||
Copyright (C) 2012-2014 by various contributors (see AUTHORS)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -0,0 +1,5 @@
|
||||
[
|
||||
"esnext.promise.all-settled",
|
||||
"esnext.string.match-all",
|
||||
"esnext.global-this"
|
||||
]
|
||||
@@ -0,0 +1,335 @@
|
||||
'use strict';
|
||||
module.exports = function generate_properties(it, $keyword, $ruleType) {
|
||||
var out = ' ';
|
||||
var $lvl = it.level;
|
||||
var $dataLvl = it.dataLevel;
|
||||
var $schema = it.schema[$keyword];
|
||||
var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
|
||||
var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
|
||||
var $breakOnError = !it.opts.allErrors;
|
||||
var $data = 'data' + ($dataLvl || '');
|
||||
var $errs = 'errs__' + $lvl;
|
||||
var $it = it.util.copy(it);
|
||||
var $closingBraces = '';
|
||||
$it.level++;
|
||||
var $nextValid = 'valid' + $it.level;
|
||||
var $key = 'key' + $lvl,
|
||||
$idx = 'idx' + $lvl,
|
||||
$dataNxt = $it.dataLevel = it.dataLevel + 1,
|
||||
$nextData = 'data' + $dataNxt,
|
||||
$dataProperties = 'dataProperties' + $lvl;
|
||||
var $schemaKeys = Object.keys($schema || {}).filter(notProto),
|
||||
$pProperties = it.schema.patternProperties || {},
|
||||
$pPropertyKeys = Object.keys($pProperties).filter(notProto),
|
||||
$aProperties = it.schema.additionalProperties,
|
||||
$someProperties = $schemaKeys.length || $pPropertyKeys.length,
|
||||
$noAdditional = $aProperties === false,
|
||||
$additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,
|
||||
$removeAdditional = it.opts.removeAdditional,
|
||||
$checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,
|
||||
$ownProperties = it.opts.ownProperties,
|
||||
$currentBaseId = it.baseId;
|
||||
var $required = it.schema.required;
|
||||
if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {
|
||||
var $requiredHash = it.util.toHash($required);
|
||||
}
|
||||
|
||||
function notProto(p) {
|
||||
return p !== '__proto__';
|
||||
}
|
||||
out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';
|
||||
if ($ownProperties) {
|
||||
out += ' var ' + ($dataProperties) + ' = undefined;';
|
||||
}
|
||||
if ($checkAdditional) {
|
||||
if ($ownProperties) {
|
||||
out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
|
||||
} else {
|
||||
out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
|
||||
}
|
||||
if ($someProperties) {
|
||||
out += ' var isAdditional' + ($lvl) + ' = !(false ';
|
||||
if ($schemaKeys.length) {
|
||||
if ($schemaKeys.length > 8) {
|
||||
out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';
|
||||
} else {
|
||||
var arr1 = $schemaKeys;
|
||||
if (arr1) {
|
||||
var $propertyKey, i1 = -1,
|
||||
l1 = arr1.length - 1;
|
||||
while (i1 < l1) {
|
||||
$propertyKey = arr1[i1 += 1];
|
||||
out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($pPropertyKeys.length) {
|
||||
var arr2 = $pPropertyKeys;
|
||||
if (arr2) {
|
||||
var $pProperty, $i = -1,
|
||||
l2 = arr2.length - 1;
|
||||
while ($i < l2) {
|
||||
$pProperty = arr2[$i += 1];
|
||||
out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';
|
||||
}
|
||||
}
|
||||
}
|
||||
out += ' ); if (isAdditional' + ($lvl) + ') { ';
|
||||
}
|
||||
if ($removeAdditional == 'all') {
|
||||
out += ' delete ' + ($data) + '[' + ($key) + ']; ';
|
||||
} else {
|
||||
var $currentErrorPath = it.errorPath;
|
||||
var $additionalProperty = '\' + ' + $key + ' + \'';
|
||||
if (it.opts._errorDataPathProperty) {
|
||||
it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
|
||||
}
|
||||
if ($noAdditional) {
|
||||
if ($removeAdditional) {
|
||||
out += ' delete ' + ($data) + '[' + ($key) + ']; ';
|
||||
} else {
|
||||
out += ' ' + ($nextValid) + ' = false; ';
|
||||
var $currErrSchemaPath = $errSchemaPath;
|
||||
$errSchemaPath = it.errSchemaPath + '/additionalProperties';
|
||||
var $$outStack = $$outStack || [];
|
||||
$$outStack.push(out);
|
||||
out = ''; /* istanbul ignore else */
|
||||
if (it.createErrors !== false) {
|
||||
out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } ';
|
||||
if (it.opts.messages !== false) {
|
||||
out += ' , message: \'';
|
||||
if (it.opts._errorDataPathProperty) {
|
||||
out += 'is an invalid additional property';
|
||||
} else {
|
||||
out += 'should NOT have additional properties';
|
||||
}
|
||||
out += '\' ';
|
||||
}
|
||||
if (it.opts.verbose) {
|
||||
out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
|
||||
}
|
||||
out += ' } ';
|
||||
} else {
|
||||
out += ' {} ';
|
||||
}
|
||||
var __err = out;
|
||||
out = $$outStack.pop();
|
||||
if (!it.compositeRule && $breakOnError) {
|
||||
/* istanbul ignore if */
|
||||
if (it.async) {
|
||||
out += ' throw new ValidationError([' + (__err) + ']); ';
|
||||
} else {
|
||||
out += ' validate.errors = [' + (__err) + ']; return false; ';
|
||||
}
|
||||
} else {
|
||||
out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
|
||||
}
|
||||
$errSchemaPath = $currErrSchemaPath;
|
||||
if ($breakOnError) {
|
||||
out += ' break; ';
|
||||
}
|
||||
}
|
||||
} else if ($additionalIsSchema) {
|
||||
if ($removeAdditional == 'failing') {
|
||||
out += ' var ' + ($errs) + ' = errors; ';
|
||||
var $wasComposite = it.compositeRule;
|
||||
it.compositeRule = $it.compositeRule = true;
|
||||
$it.schema = $aProperties;
|
||||
$it.schemaPath = it.schemaPath + '.additionalProperties';
|
||||
$it.errSchemaPath = it.errSchemaPath + '/additionalProperties';
|
||||
$it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
|
||||
var $passData = $data + '[' + $key + ']';
|
||||
$it.dataPathArr[$dataNxt] = $key;
|
||||
var $code = it.validate($it);
|
||||
$it.baseId = $currentBaseId;
|
||||
if (it.util.varOccurences($code, $nextData) < 2) {
|
||||
out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
|
||||
} else {
|
||||
out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
|
||||
}
|
||||
out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } ';
|
||||
it.compositeRule = $it.compositeRule = $wasComposite;
|
||||
} else {
|
||||
$it.schema = $aProperties;
|
||||
$it.schemaPath = it.schemaPath + '.additionalProperties';
|
||||
$it.errSchemaPath = it.errSchemaPath + '/additionalProperties';
|
||||
$it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
|
||||
var $passData = $data + '[' + $key + ']';
|
||||
$it.dataPathArr[$dataNxt] = $key;
|
||||
var $code = it.validate($it);
|
||||
$it.baseId = $currentBaseId;
|
||||
if (it.util.varOccurences($code, $nextData) < 2) {
|
||||
out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
|
||||
} else {
|
||||
out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
|
||||
}
|
||||
if ($breakOnError) {
|
||||
out += ' if (!' + ($nextValid) + ') break; ';
|
||||
}
|
||||
}
|
||||
}
|
||||
it.errorPath = $currentErrorPath;
|
||||
}
|
||||
if ($someProperties) {
|
||||
out += ' } ';
|
||||
}
|
||||
out += ' } ';
|
||||
if ($breakOnError) {
|
||||
out += ' if (' + ($nextValid) + ') { ';
|
||||
$closingBraces += '}';
|
||||
}
|
||||
}
|
||||
var $useDefaults = it.opts.useDefaults && !it.compositeRule;
|
||||
if ($schemaKeys.length) {
|
||||
var arr3 = $schemaKeys;
|
||||
if (arr3) {
|
||||
var $propertyKey, i3 = -1,
|
||||
l3 = arr3.length - 1;
|
||||
while (i3 < l3) {
|
||||
$propertyKey = arr3[i3 += 1];
|
||||
var $sch = $schema[$propertyKey];
|
||||
if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {
|
||||
var $prop = it.util.getProperty($propertyKey),
|
||||
$passData = $data + $prop,
|
||||
$hasDefault = $useDefaults && $sch.default !== undefined;
|
||||
$it.schema = $sch;
|
||||
$it.schemaPath = $schemaPath + $prop;
|
||||
$it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);
|
||||
$it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);
|
||||
$it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);
|
||||
var $code = it.validate($it);
|
||||
$it.baseId = $currentBaseId;
|
||||
if (it.util.varOccurences($code, $nextData) < 2) {
|
||||
$code = it.util.varReplace($code, $nextData, $passData);
|
||||
var $useData = $passData;
|
||||
} else {
|
||||
var $useData = $nextData;
|
||||
out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';
|
||||
}
|
||||
if ($hasDefault) {
|
||||
out += ' ' + ($code) + ' ';
|
||||
} else {
|
||||
if ($requiredHash && $requiredHash[$propertyKey]) {
|
||||
out += ' if ( ' + ($useData) + ' === undefined ';
|
||||
if ($ownProperties) {
|
||||
out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
|
||||
}
|
||||
out += ') { ' + ($nextValid) + ' = false; ';
|
||||
var $currentErrorPath = it.errorPath,
|
||||
$currErrSchemaPath = $errSchemaPath,
|
||||
$missingProperty = it.util.escapeQuotes($propertyKey);
|
||||
if (it.opts._errorDataPathProperty) {
|
||||
it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
|
||||
}
|
||||
$errSchemaPath = it.errSchemaPath + '/required';
|
||||
var $$outStack = $$outStack || [];
|
||||
$$outStack.push(out);
|
||||
out = ''; /* istanbul ignore else */
|
||||
if (it.createErrors !== false) {
|
||||
out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } ';
|
||||
if (it.opts.messages !== false) {
|
||||
out += ' , message: \'';
|
||||
if (it.opts._errorDataPathProperty) {
|
||||
out += 'is a required property';
|
||||
} else {
|
||||
out += 'should have required property \\\'' + ($missingProperty) + '\\\'';
|
||||
}
|
||||
out += '\' ';
|
||||
}
|
||||
if (it.opts.verbose) {
|
||||
out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
|
||||
}
|
||||
out += ' } ';
|
||||
} else {
|
||||
out += ' {} ';
|
||||
}
|
||||
var __err = out;
|
||||
out = $$outStack.pop();
|
||||
if (!it.compositeRule && $breakOnError) {
|
||||
/* istanbul ignore if */
|
||||
if (it.async) {
|
||||
out += ' throw new ValidationError([' + (__err) + ']); ';
|
||||
} else {
|
||||
out += ' validate.errors = [' + (__err) + ']; return false; ';
|
||||
}
|
||||
} else {
|
||||
out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
|
||||
}
|
||||
$errSchemaPath = $currErrSchemaPath;
|
||||
it.errorPath = $currentErrorPath;
|
||||
out += ' } else { ';
|
||||
} else {
|
||||
if ($breakOnError) {
|
||||
out += ' if ( ' + ($useData) + ' === undefined ';
|
||||
if ($ownProperties) {
|
||||
out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
|
||||
}
|
||||
out += ') { ' + ($nextValid) + ' = true; } else { ';
|
||||
} else {
|
||||
out += ' if (' + ($useData) + ' !== undefined ';
|
||||
if ($ownProperties) {
|
||||
out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') ';
|
||||
}
|
||||
out += ' ) { ';
|
||||
}
|
||||
}
|
||||
out += ' ' + ($code) + ' } ';
|
||||
}
|
||||
}
|
||||
if ($breakOnError) {
|
||||
out += ' if (' + ($nextValid) + ') { ';
|
||||
$closingBraces += '}';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($pPropertyKeys.length) {
|
||||
var arr4 = $pPropertyKeys;
|
||||
if (arr4) {
|
||||
var $pProperty, i4 = -1,
|
||||
l4 = arr4.length - 1;
|
||||
while (i4 < l4) {
|
||||
$pProperty = arr4[i4 += 1];
|
||||
var $sch = $pProperties[$pProperty];
|
||||
if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {
|
||||
$it.schema = $sch;
|
||||
$it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);
|
||||
$it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);
|
||||
if ($ownProperties) {
|
||||
out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';
|
||||
} else {
|
||||
out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';
|
||||
}
|
||||
out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';
|
||||
$it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
|
||||
var $passData = $data + '[' + $key + ']';
|
||||
$it.dataPathArr[$dataNxt] = $key;
|
||||
var $code = it.validate($it);
|
||||
$it.baseId = $currentBaseId;
|
||||
if (it.util.varOccurences($code, $nextData) < 2) {
|
||||
out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';
|
||||
} else {
|
||||
out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';
|
||||
}
|
||||
if ($breakOnError) {
|
||||
out += ' if (!' + ($nextValid) + ') break; ';
|
||||
}
|
||||
out += ' } ';
|
||||
if ($breakOnError) {
|
||||
out += ' else ' + ($nextValid) + ' = true; ';
|
||||
}
|
||||
out += ' } ';
|
||||
if ($breakOnError) {
|
||||
out += ' if (' + ($nextValid) + ') { ';
|
||||
$closingBraces += '}';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($breakOnError) {
|
||||
out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
|
||||
}
|
||||
return out;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.invariant = factory());
|
||||
})(this, (function () { 'use strict';
|
||||
|
||||
var isProduction = process.env.NODE_ENV === 'production';
|
||||
var prefix = 'Invariant failed';
|
||||
function invariant(condition, message) {
|
||||
if (condition) {
|
||||
return;
|
||||
}
|
||||
if (isProduction) {
|
||||
throw new Error(prefix);
|
||||
}
|
||||
var provided = typeof message === 'function' ? message() : message;
|
||||
var value = provided ? "".concat(prefix, ": ").concat(provided) : prefix;
|
||||
throw new Error(value);
|
||||
}
|
||||
|
||||
return invariant;
|
||||
|
||||
}));
|
||||
@@ -0,0 +1,220 @@
|
||||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Tobias Koppers @sokra
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
/** @typedef {import("./Resolver").FileSystem} FileSystem */
|
||||
/** @typedef {import("./Resolver").ReaddirStringCallback} ReaddirStringCallback */
|
||||
/** @typedef {import("./Resolver").StringCallback} StringCallback */
|
||||
/** @typedef {import("./Resolver").SyncFileSystem} SyncFileSystem */
|
||||
|
||||
/**
|
||||
* @param {SyncFileSystem} fs file system implementation
|
||||
* @constructor
|
||||
*/
|
||||
function SyncAsyncFileSystemDecorator(fs) {
|
||||
this.fs = fs;
|
||||
|
||||
this.lstat = undefined;
|
||||
this.lstatSync = undefined;
|
||||
const lstatSync = fs.lstatSync;
|
||||
if (lstatSync) {
|
||||
this.lstat =
|
||||
/** @type {FileSystem["lstat"]} */
|
||||
(
|
||||
(arg, options, callback) => {
|
||||
let result;
|
||||
try {
|
||||
result = /** @type {Function | undefined} */ (callback)
|
||||
? lstatSync.call(fs, arg, options)
|
||||
: lstatSync.call(fs, arg);
|
||||
} catch (e) {
|
||||
return (callback || options)(
|
||||
/** @type {NodeJS.ErrnoException | null} */ (e)
|
||||
);
|
||||
}
|
||||
|
||||
(callback || options)(null, /** @type {any} */ (result));
|
||||
}
|
||||
);
|
||||
this.lstatSync =
|
||||
/** @type {SyncFileSystem["lstatSync"]} */
|
||||
((arg, options) => lstatSync.call(fs, arg, options));
|
||||
}
|
||||
|
||||
this.stat =
|
||||
/** @type {FileSystem["stat"]} */
|
||||
(
|
||||
(arg, options, callback) => {
|
||||
let result;
|
||||
try {
|
||||
result = /** @type {Function | undefined} */ (callback)
|
||||
? fs.statSync(arg, options)
|
||||
: fs.statSync(arg);
|
||||
} catch (e) {
|
||||
return (callback || options)(
|
||||
/** @type {NodeJS.ErrnoException | null} */ (e)
|
||||
);
|
||||
}
|
||||
|
||||
(callback || options)(null, /** @type {any} */ (result));
|
||||
}
|
||||
);
|
||||
this.statSync =
|
||||
/** @type {SyncFileSystem["statSync"]} */
|
||||
((arg, options) => fs.statSync(arg, options));
|
||||
|
||||
this.readdir =
|
||||
/** @type {FileSystem["readdir"]} */
|
||||
(
|
||||
(arg, options, callback) => {
|
||||
let result;
|
||||
try {
|
||||
result = /** @type {Function | undefined} */ (callback)
|
||||
? fs.readdirSync(
|
||||
arg,
|
||||
/** @type {Exclude<Parameters<FileSystem["readdir"]>[1], ReaddirStringCallback>} */
|
||||
(options)
|
||||
)
|
||||
: fs.readdirSync(arg);
|
||||
} catch (e) {
|
||||
return (callback || options)(
|
||||
/** @type {NodeJS.ErrnoException | null} */ (e)
|
||||
);
|
||||
}
|
||||
|
||||
(callback || options)(null, /** @type {any} */ (result));
|
||||
}
|
||||
);
|
||||
this.readdirSync =
|
||||
/** @type {SyncFileSystem["readdirSync"]} */
|
||||
(
|
||||
(arg, options) =>
|
||||
fs.readdirSync(
|
||||
arg,
|
||||
/** @type {Parameters<SyncFileSystem["readdirSync"]>[1]} */ (options)
|
||||
)
|
||||
);
|
||||
|
||||
this.readFile =
|
||||
/** @type {FileSystem["readFile"]} */
|
||||
(
|
||||
(arg, options, callback) => {
|
||||
let result;
|
||||
try {
|
||||
result = /** @type {Function | undefined} */ (callback)
|
||||
? fs.readFileSync(arg, options)
|
||||
: fs.readFileSync(arg);
|
||||
} catch (e) {
|
||||
return (callback || options)(
|
||||
/** @type {NodeJS.ErrnoException | null} */ (e)
|
||||
);
|
||||
}
|
||||
|
||||
(callback || options)(null, /** @type {any} */ (result));
|
||||
}
|
||||
);
|
||||
this.readFileSync =
|
||||
/** @type {SyncFileSystem["readFileSync"]} */
|
||||
((arg, options) => fs.readFileSync(arg, options));
|
||||
|
||||
this.readlink =
|
||||
/** @type {FileSystem["readlink"]} */
|
||||
(
|
||||
(arg, options, callback) => {
|
||||
let result;
|
||||
try {
|
||||
result = /** @type {Function | undefined} */ (callback)
|
||||
? fs.readlinkSync(
|
||||
arg,
|
||||
/** @type {Exclude<Parameters<FileSystem["readlink"]>[1], StringCallback>} */
|
||||
(options)
|
||||
)
|
||||
: fs.readlinkSync(arg);
|
||||
} catch (e) {
|
||||
return (callback || options)(
|
||||
/** @type {NodeJS.ErrnoException | null} */ (e)
|
||||
);
|
||||
}
|
||||
|
||||
(callback || options)(null, /** @type {any} */ (result));
|
||||
}
|
||||
);
|
||||
this.readlinkSync =
|
||||
/** @type {SyncFileSystem["readlinkSync"]} */
|
||||
(
|
||||
(arg, options) =>
|
||||
fs.readlinkSync(
|
||||
arg,
|
||||
/** @type {Parameters<SyncFileSystem["readlinkSync"]>[1]} */ (options)
|
||||
)
|
||||
);
|
||||
|
||||
this.readJson = undefined;
|
||||
this.readJsonSync = undefined;
|
||||
const readJsonSync = fs.readJsonSync;
|
||||
if (readJsonSync) {
|
||||
this.readJson =
|
||||
/** @type {FileSystem["readJson"]} */
|
||||
(
|
||||
(arg, callback) => {
|
||||
let result;
|
||||
try {
|
||||
result = readJsonSync.call(fs, arg);
|
||||
} catch (e) {
|
||||
return callback(
|
||||
/** @type {NodeJS.ErrnoException | Error | null} */ (e)
|
||||
);
|
||||
}
|
||||
|
||||
callback(null, result);
|
||||
}
|
||||
);
|
||||
this.readJsonSync =
|
||||
/** @type {SyncFileSystem["readJsonSync"]} */
|
||||
(arg => readJsonSync.call(fs, arg));
|
||||
}
|
||||
|
||||
this.realpath = undefined;
|
||||
this.realpathSync = undefined;
|
||||
const realpathSync = fs.realpathSync;
|
||||
if (realpathSync) {
|
||||
this.realpath =
|
||||
/** @type {FileSystem["realpath"]} */
|
||||
(
|
||||
(arg, options, callback) => {
|
||||
let result;
|
||||
try {
|
||||
result = /** @type {Function | undefined} */ (callback)
|
||||
? realpathSync.call(
|
||||
fs,
|
||||
arg,
|
||||
/** @type {Exclude<Parameters<NonNullable<FileSystem["realpath"]>>[1], StringCallback>} */
|
||||
(options)
|
||||
)
|
||||
: realpathSync.call(fs, arg);
|
||||
} catch (e) {
|
||||
return (callback || options)(
|
||||
/** @type {NodeJS.ErrnoException | null} */ (e)
|
||||
);
|
||||
}
|
||||
|
||||
(callback || options)(null, /** @type {any} */ (result));
|
||||
}
|
||||
);
|
||||
this.realpathSync =
|
||||
/** @type {SyncFileSystem["realpathSync"]} */
|
||||
(
|
||||
(arg, options) =>
|
||||
realpathSync.call(
|
||||
fs,
|
||||
arg,
|
||||
/** @type {Parameters<NonNullable<SyncFileSystem["realpathSync"]>>[1]} */
|
||||
(options)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
module.exports = SyncAsyncFileSystemDecorator;
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"names":["_index","require","matchesPattern","member","match","allowPartial","isMemberExpression","parts","Array","isArray","split","nodes","node","object","push","property","length","i","j","value","isIdentifier","name","isStringLiteral","isThisExpression"],"sources":["../../src/validators/matchesPattern.ts"],"sourcesContent":["import {\n isIdentifier,\n isMemberExpression,\n isStringLiteral,\n isThisExpression,\n} from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Determines whether or not the input node `member` matches the\n * input `match`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\nexport default function matchesPattern(\n member: t.Node | null | undefined,\n match: string | string[],\n allowPartial?: boolean,\n): boolean {\n // not a member expression\n if (!isMemberExpression(member)) return false;\n\n const parts = Array.isArray(match) ? match : match.split(\".\");\n const nodes = [];\n\n let node;\n for (node = member; isMemberExpression(node); node = node.object) {\n nodes.push(node.property);\n }\n nodes.push(node);\n\n if (nodes.length < parts.length) return false;\n if (!allowPartial && nodes.length > parts.length) return false;\n\n for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {\n const node = nodes[j];\n let value;\n if (isIdentifier(node)) {\n value = node.name;\n } else if (isStringLiteral(node)) {\n value = node.value;\n } else if (isThisExpression(node)) {\n value = \"this\";\n } else {\n return false;\n }\n\n if (parts[i] !== value) return false;\n }\n\n return true;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAee,SAASC,cAAcA,CACpCC,MAAiC,EACjCC,KAAwB,EACxBC,YAAsB,EACb;EAET,IAAI,CAAC,IAAAC,yBAAkB,EAACH,MAAM,CAAC,EAAE,OAAO,KAAK;EAE7C,MAAMI,KAAK,GAAGC,KAAK,CAACC,OAAO,CAACL,KAAK,CAAC,GAAGA,KAAK,GAAGA,KAAK,CAACM,KAAK,CAAC,GAAG,CAAC;EAC7D,MAAMC,KAAK,GAAG,EAAE;EAEhB,IAAIC,IAAI;EACR,KAAKA,IAAI,GAAGT,MAAM,EAAE,IAAAG,yBAAkB,EAACM,IAAI,CAAC,EAAEA,IAAI,GAAGA,IAAI,CAACC,MAAM,EAAE;IAChEF,KAAK,CAACG,IAAI,CAACF,IAAI,CAACG,QAAQ,CAAC;EAC3B;EACAJ,KAAK,CAACG,IAAI,CAACF,IAAI,CAAC;EAEhB,IAAID,KAAK,CAACK,MAAM,GAAGT,KAAK,CAACS,MAAM,EAAE,OAAO,KAAK;EAC7C,IAAI,CAACX,YAAY,IAAIM,KAAK,CAACK,MAAM,GAAGT,KAAK,CAACS,MAAM,EAAE,OAAO,KAAK;EAE9D,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAGP,KAAK,CAACK,MAAM,GAAG,CAAC,EAAEC,CAAC,GAAGV,KAAK,CAACS,MAAM,EAAEC,CAAC,EAAE,EAAEC,CAAC,EAAE,EAAE;IAChE,MAAMN,IAAI,GAAGD,KAAK,CAACO,CAAC,CAAC;IACrB,IAAIC,KAAK;IACT,IAAI,IAAAC,mBAAY,EAACR,IAAI,CAAC,EAAE;MACtBO,KAAK,GAAGP,IAAI,CAACS,IAAI;IACnB,CAAC,MAAM,IAAI,IAAAC,sBAAe,EAACV,IAAI,CAAC,EAAE;MAChCO,KAAK,GAAGP,IAAI,CAACO,KAAK;IACpB,CAAC,MAAM,IAAI,IAAAI,uBAAgB,EAACX,IAAI,CAAC,EAAE;MACjCO,KAAK,GAAG,MAAM;IAChB,CAAC,MAAM;MACL,OAAO,KAAK;IACd;IAEA,IAAIZ,KAAK,CAACU,CAAC,CAAC,KAAKE,KAAK,EAAE,OAAO,KAAK;EACtC;EAEA,OAAO,IAAI;AACb","ignoreList":[]}
|
||||
@@ -0,0 +1,82 @@
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
var __rest = (this && this.__rest) || function (s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||||
t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
||||
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
||||
t[p[i]] = s[p[i]];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = OutlineItem;
|
||||
const jsx_runtime_1 = require("react/jsx-runtime");
|
||||
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
|
||||
const Ref_js_1 = __importDefault(require("./Ref.js"));
|
||||
const useCachedValue_js_1 = __importDefault(require("./shared/hooks/useCachedValue.js"));
|
||||
const useDocumentContext_js_1 = __importDefault(require("./shared/hooks/useDocumentContext.js"));
|
||||
const useOutlineContext_js_1 = __importDefault(require("./shared/hooks/useOutlineContext.js"));
|
||||
function OutlineItem(props) {
|
||||
const documentContext = (0, useDocumentContext_js_1.default)();
|
||||
const outlineContext = (0, useOutlineContext_js_1.default)();
|
||||
(0, tiny_invariant_1.default)(outlineContext, 'Unable to find Outline context.');
|
||||
const mergedProps = Object.assign(Object.assign(Object.assign({}, documentContext), outlineContext), props);
|
||||
const { item, linkService, onItemClick, pdf } = mergedProps, otherProps = __rest(mergedProps, ["item", "linkService", "onItemClick", "pdf"]);
|
||||
(0, tiny_invariant_1.default)(pdf, 'Attempted to load an outline, but no document was specified. Wrap <Outline /> in a <Document /> or pass explicit `pdf` prop.');
|
||||
const getDestination = (0, useCachedValue_js_1.default)(() => {
|
||||
if (typeof item.dest === 'string') {
|
||||
return pdf.getDestination(item.dest);
|
||||
}
|
||||
return item.dest;
|
||||
});
|
||||
const getPageIndex = (0, useCachedValue_js_1.default)(() => __awaiter(this, void 0, void 0, function* () {
|
||||
const destination = yield getDestination();
|
||||
if (!destination) {
|
||||
throw new Error('Destination not found.');
|
||||
}
|
||||
const [ref] = destination;
|
||||
return pdf.getPageIndex(new Ref_js_1.default(ref));
|
||||
}));
|
||||
const getPageNumber = (0, useCachedValue_js_1.default)(() => __awaiter(this, void 0, void 0, function* () {
|
||||
const pageIndex = yield getPageIndex();
|
||||
return pageIndex + 1;
|
||||
}));
|
||||
function onClick(event) {
|
||||
event.preventDefault();
|
||||
(0, tiny_invariant_1.default)(onItemClick || linkService, 'Either onItemClick callback or linkService must be defined in order to navigate to an outline item.');
|
||||
if (onItemClick) {
|
||||
Promise.all([getDestination(), getPageIndex(), getPageNumber()]).then(([dest, pageIndex, pageNumber]) => {
|
||||
onItemClick({
|
||||
dest,
|
||||
pageIndex,
|
||||
pageNumber,
|
||||
});
|
||||
});
|
||||
}
|
||||
else if (linkService) {
|
||||
linkService.goToDestination(item.dest);
|
||||
}
|
||||
}
|
||||
function renderSubitems() {
|
||||
if (!item.items || !item.items.length) {
|
||||
return null;
|
||||
}
|
||||
const { items: subitems } = item;
|
||||
return ((0, jsx_runtime_1.jsx)("ul", { children: subitems.map((subitem, subitemIndex) => ((0, jsx_runtime_1.jsx)(OutlineItem, Object.assign({ item: subitem, pdf: pdf }, otherProps), typeof subitem.dest === 'string' ? subitem.dest : subitemIndex))) }));
|
||||
}
|
||||
return ((0, jsx_runtime_1.jsxs)("li", { children: [(0, jsx_runtime_1.jsx)("a", { href: "#", onClick: onClick, children: item.title }), renderSubitems()] }));
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import { Derived } from './derived.js';
|
||||
import { Store } from './store.js';
|
||||
/**
|
||||
* This is here to solve the pyramid dependency problem where:
|
||||
* A
|
||||
* / \
|
||||
* B C
|
||||
* \ /
|
||||
* D
|
||||
*
|
||||
* Where we deeply traverse this tree, how do we avoid D being recomputed twice; once when B is updated, once when C is.
|
||||
*
|
||||
* To solve this, we create linkedDeps that allows us to sync avoid writes to the state until all of the deps have been
|
||||
* resolved.
|
||||
*
|
||||
* This is a record of stores, because derived stores are not able to write values to, but stores are
|
||||
*/
|
||||
export declare const __storeToDerived: WeakMap<Store<unknown, (cb: unknown) => unknown>, Set<Derived<unknown, readonly any[]>>>;
|
||||
export declare const __derivedToStore: WeakMap<Derived<unknown, readonly any[]>, Set<Store<unknown, (cb: unknown) => unknown>>>;
|
||||
export declare const __depsThatHaveWrittenThisTick: {
|
||||
current: Array<Derived<unknown> | Store<unknown>>;
|
||||
};
|
||||
/**
|
||||
* @private only to be called from `Store` on write
|
||||
*/
|
||||
export declare function __flush(store: Store<unknown>): void;
|
||||
export declare function batch(fn: () => void): void;
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"urn.js","sourceRoot":"","sources":["../../../src/schemes/urn.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,OAAO,EAAE,MAAM,QAAQ,CAAC;AAW7C,MAAM,IAAI,GAAG,qCAAqC,CAAC;AACnD,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAC7C,MAAM,OAAO,GAAG,mEAAmE,CAAC;AACpF,MAAM,IAAI,GAAG,QAAQ,GAAG,YAAY,GAAG,GAAG,GAAG,OAAO,GAAG,KAAK,CAAC;AAC7D,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACjE,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,MAAM,YAAY,GAAG,iDAAiD,CAAC;AAEvE,UAAU;AACV,MAAM,OAAO,GAA8C;IAC1D,MAAM,EAAG,KAAK;IAEd,KAAK,EAAG,UAAU,UAAwB,EAAE,OAAkB;QAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,aAAa,GAAG,UAA2B,CAAC;QAEhD,IAAI,OAAO,EAAE;YACZ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,KAAK,CAAC;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAEzC,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;YACxB,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;YACxB,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;YAE/B,IAAI,aAAa,EAAE;gBAClB,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAkB,CAAC;aAC7E;SACD;aAAM;YACN,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,wBAAwB,CAAC;SACtE;QAED,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,SAAS,EAAG,UAAU,aAA2B,EAAE,OAAkB;QACpE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,KAAK,CAAC;QAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC9B,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,aAAa,EAAE;YAClB,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAkB,CAAC;SACjF;QAED,MAAM,aAAa,GAAG,aAA8B,CAAC;QACrD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC9B,aAAa,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAEpD,OAAO,aAAa,CAAC;IACtB,CAAC;CACD,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { RouteById } from './routeInfo.cjs';
|
||||
import { AnyRouter } from './router.cjs';
|
||||
import { Expand } from './utils.cjs';
|
||||
export type ResolveUseLoaderDeps<TRouter extends AnyRouter, TFrom> = Expand<RouteById<TRouter['routeTree'], TFrom>['types']['loaderDeps']>;
|
||||
export type UseLoaderDepsResult<TRouter extends AnyRouter, TFrom, TSelected> = unknown extends TSelected ? ResolveUseLoaderDeps<TRouter, TFrom> : TSelected;
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"scroll-restoration.cjs","sources":["../../src/scroll-restoration.tsx"],"sourcesContent":["import {\n defaultGetScrollRestorationKey,\n restoreScroll,\n storageKey,\n} from '@tanstack/router-core'\nimport { useRouter } from './useRouter'\nimport { ScriptOnce } from './ScriptOnce'\n\nexport function ScrollRestoration() {\n const router = useRouter()\n const getKey =\n router.options.getScrollRestorationKey || defaultGetScrollRestorationKey\n const userKey = getKey(router.latestLocation)\n const resolvedKey =\n userKey !== defaultGetScrollRestorationKey(router.latestLocation)\n ? userKey\n : null\n\n if (!router.isScrollRestoring || !router.isServer) {\n return null\n }\n\n return (\n <ScriptOnce\n children={`(${restoreScroll.toString()})(${JSON.stringify(storageKey)},${JSON.stringify(resolvedKey)}, undefined, true)`}\n log={false}\n />\n )\n}\n"],"names":["useRouter","defaultGetScrollRestorationKey","jsx","ScriptOnce","restoreScroll","storageKey"],"mappings":";;;;;;AAQO,SAAS,oBAAoB;AAClC,QAAM,SAASA,UAAAA,UAAU;AACnB,QAAA,SACJ,OAAO,QAAQ,2BAA2BC,WAAA;AACtC,QAAA,UAAU,OAAO,OAAO,cAAc;AAC5C,QAAM,cACJ,YAAYA,WAAA,+BAA+B,OAAO,cAAc,IAC5D,UACA;AAEN,MAAI,CAAC,OAAO,qBAAqB,CAAC,OAAO,UAAU;AAC1C,WAAA;AAAA,EAAA;AAIP,SAAAC,2BAAA;AAAA,IAACC,WAAA;AAAA,IAAA;AAAA,MACC,UAAU,IAAIC,WAAAA,cAAc,SAAU,CAAA,KAAK,KAAK,UAAUC,WAAU,UAAA,CAAC,IAAI,KAAK,UAAU,WAAW,CAAC;AAAA,MACpG,KAAK;AAAA,IAAA;AAAA,EACP;AAEJ;;"}
|
||||
@@ -0,0 +1,38 @@
|
||||
'use strict';
|
||||
|
||||
function checkDCE() {
|
||||
/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
|
||||
if (
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'
|
||||
) {
|
||||
return;
|
||||
}
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
// This branch is unreachable because this function is only called
|
||||
// in production, but the condition is true only in development.
|
||||
// Therefore if the branch is still here, dead code elimination wasn't
|
||||
// properly applied.
|
||||
// Don't change the message. React DevTools relies on it. Also make sure
|
||||
// this message doesn't occur elsewhere in this function, or it will cause
|
||||
// a false positive.
|
||||
throw new Error('^_^');
|
||||
}
|
||||
try {
|
||||
// Verify that the code above has been dead code eliminated (DCE'd).
|
||||
__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
|
||||
} catch (err) {
|
||||
// DevTools shouldn't crash React, no matter what.
|
||||
// We should still report in case we break this code.
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
// DCE check should happen before ReactDOM bundle executes so that
|
||||
// DevTools can report bad minification during injection.
|
||||
checkDCE();
|
||||
module.exports = require('./cjs/react-dom-client.production.js');
|
||||
} else {
|
||||
module.exports = require('./cjs/react-dom-client.development.js');
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
# Retry utility
|
||||
|
||||
by [Nicholas C. Zakas](https://humanwhocodes.com)
|
||||
|
||||
If you find this useful, please consider supporting my work with a [donation](https://humanwhocodes.com/donate) or [nominate me](https://stars.github.com/nominate/) for a GitHub Star.
|
||||
|
||||
## Description
|
||||
|
||||
A utility for retrying failed async JavaScript calls based on the error returned.
|
||||
|
||||
## Usage
|
||||
|
||||
### Node.js
|
||||
|
||||
Install using [npm][npm] or [yarn][yarn]:
|
||||
|
||||
```
|
||||
npm install @humanwhocodes/retry
|
||||
|
||||
# or
|
||||
|
||||
yarn add @humanwhocodes/retry
|
||||
```
|
||||
|
||||
Import into your Node.js project:
|
||||
|
||||
```js
|
||||
// CommonJS
|
||||
const { Retrier } = require("@humanwhocodes/retry");
|
||||
|
||||
// ESM
|
||||
import { Retrier } from "@humanwhocodes/retry";
|
||||
```
|
||||
|
||||
### Deno
|
||||
|
||||
Install using [JSR](https://jsr.io):
|
||||
|
||||
```shell
|
||||
deno add @humanwhocodes/retry
|
||||
|
||||
#or
|
||||
|
||||
jsr add @humanwhocodes/retry
|
||||
```
|
||||
|
||||
Then import into your Deno project:
|
||||
|
||||
```js
|
||||
import { Retrier } from "@humanwhocodes/retry";
|
||||
```
|
||||
|
||||
### Bun
|
||||
|
||||
Install using this command:
|
||||
|
||||
```
|
||||
bun add @humanwhocodes/retry
|
||||
```
|
||||
|
||||
Import into your Bun project:
|
||||
|
||||
```js
|
||||
import { Retrier } from "@humanwhocodes/retry";
|
||||
```
|
||||
|
||||
### Browser
|
||||
|
||||
It's recommended to import the minified version to save bandwidth:
|
||||
|
||||
```js
|
||||
import { Retrier } from "https://cdn.skypack.dev/@humanwhocodes/retry?min";
|
||||
```
|
||||
|
||||
However, you can also import the unminified version for debugging purposes:
|
||||
|
||||
```js
|
||||
import { Retrier } from "https://cdn.skypack.dev/@humanwhocodes/retry";
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
After importing, create a new instance of `Retrier` and specify the function to run on the error. This function should return `true` if you want the call retried and `false` if not.
|
||||
|
||||
```js
|
||||
// this instance will retry if the specific error code is found
|
||||
const retrier = new Retrier(error => {
|
||||
return error.code === "ENFILE" || error.code === "EMFILE";
|
||||
});
|
||||
```
|
||||
|
||||
Then, call the `retry()` method around the function you'd like to retry, such as:
|
||||
|
||||
```js
|
||||
import fs from "fs/promises";
|
||||
|
||||
const retrier = new Retrier(error => {
|
||||
return error.code === "ENFILE" || error.code === "EMFILE";
|
||||
});
|
||||
|
||||
const text = await retrier.retry(() => fs.readFile("README.md", "utf8"));
|
||||
```
|
||||
|
||||
The `retry()` method will either pass through the result on success or wait and retry on failure. Any error that isn't caught by the retrier is automatically rejected so the end result is a transparent passing through of both success and failure.
|
||||
|
||||
### Setting a Timeout
|
||||
|
||||
You can control how long a task will attempt to retry before giving up by passing the `timeout` option to the `Retrier` constructor. By default, the timeout is one minute.
|
||||
|
||||
```js
|
||||
import fs from "fs/promises";
|
||||
|
||||
const retrier = new Retrier(error => {
|
||||
return error.code === "ENFILE" || error.code === "EMFILE";
|
||||
}, { timeout: 100_000 });
|
||||
|
||||
const text = await retrier.retry(() => fs.readFile("README.md", "utf8"));
|
||||
```
|
||||
|
||||
When a call times out, it rejects the first error that was received from calling the function.
|
||||
|
||||
### Setting a Concurrency Limit
|
||||
|
||||
When processing a large number of function calls, you can limit the number of concurrent function calls by passing the `concurrency` option to the `Retrier` constructor. By default, `concurrency` is 1000.
|
||||
|
||||
```js
|
||||
import fs from "fs/promises";
|
||||
|
||||
const retrier = new Retrier(error => {
|
||||
return error.code === "ENFILE" || error.code === "EMFILE";
|
||||
}, { concurrency: 100 });
|
||||
|
||||
const filenames = getFilenames();
|
||||
const contents = await Promise.all(
|
||||
filenames.map(filename => retrier.retry(() => fs.readFile(filename, "utf8"))
|
||||
);
|
||||
```
|
||||
|
||||
### Aborting with `AbortSignal`
|
||||
|
||||
You can also pass an `AbortSignal` to cancel a retry:
|
||||
|
||||
```js
|
||||
import fs from "fs/promises";
|
||||
|
||||
const controller = new AbortController();
|
||||
const retrier = new Retrier(error => {
|
||||
return error.code === "ENFILE" || error.code === "EMFILE";
|
||||
});
|
||||
|
||||
const text = await retrier.retry(
|
||||
() => fs.readFile("README.md", "utf8"),
|
||||
{ signal: controller.signal }
|
||||
);
|
||||
```
|
||||
|
||||
## Developer Setup
|
||||
|
||||
1. Fork the repository
|
||||
2. Clone your fork
|
||||
3. Run `npm install` to setup dependencies
|
||||
4. Run `npm test` to run tests
|
||||
|
||||
### Debug Output
|
||||
|
||||
Enable debugging output by setting the `DEBUG` environment variable to `"@hwc/retry"` before running.
|
||||
|
||||
## License
|
||||
|
||||
Apache 2.0
|
||||
|
||||
## Prior Art
|
||||
|
||||
This utility is inspired by, and contains code from [`graceful-fs`](https://github.com/isaacs/node-graceful-fs).
|
||||
|
||||
[npm]: https://npmjs.com/
|
||||
[yarn]: https://yarnpkg.com/
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"presets": ["es2015"]
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
# esbuild
|
||||
|
||||
This is a JavaScript bundler and minifier. See https://github.com/evanw/esbuild and the [JavaScript API documentation](https://esbuild.github.io/api/) for details.
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
module.exports={C:{"115":0.09832,"128":0.03933,"135":0.19944,"136":0.66573,"137":0.02809,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 116 117 118 119 120 121 122 123 124 125 126 127 129 130 131 132 133 134 138 139 140 3.5 3.6"},D:{"11":0.00562,"49":0.00281,"50":0.00281,"59":0.00281,"64":0.00562,"66":0.00281,"69":0.01685,"73":0.02528,"75":0.00281,"79":0.03933,"81":0.01966,"83":0.05899,"84":0.00281,"86":0.00843,"87":0.05337,"88":0.00281,"89":0.00562,"91":0.00843,"93":0.00281,"94":0.00281,"95":0.01966,"97":0.00843,"98":0.09832,"100":0.00843,"101":0.00281,"102":0.00843,"103":0.01124,"104":0.03652,"106":0.01405,"108":0.00281,"109":0.30337,"110":0.01685,"111":0.02809,"113":0.00281,"114":0.00281,"116":0.00562,"118":0.12079,"119":0.09551,"120":0.01405,"122":0.02528,"123":0.03371,"124":0.01124,"125":0.00562,"126":0.00843,"127":0.01124,"128":0.01405,"129":0.01405,"130":0.04494,"131":0.09832,"132":0.13483,"133":1.86237,"134":3.35956,"135":0.00281,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58 60 61 62 63 65 67 68 70 71 72 74 76 77 78 80 85 90 92 96 99 105 107 112 115 117 121 136 137 138"},F:{"36":0.00281,"46":0.00281,"79":0.00843,"81":0.00281,"87":0.00281,"95":0.03652,"105":0.01405,"110":0.00562,"112":0.00281,"114":0.00281,"115":0.00843,"116":0.01685,"117":1.00281,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 82 83 84 85 86 88 89 90 91 92 93 94 96 97 98 99 100 101 102 103 104 106 107 108 109 111 113 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"12":0.00281,"16":0.00281,"17":0.01124,"18":0.00843,"85":0.00281,"92":0.01405,"100":0.00281,"109":0.03652,"122":0.00843,"127":0.00281,"128":0.00281,"129":0.00843,"130":0.00843,"131":0.0309,"132":0.02528,"133":1.8427,"134":5.01687,_:"13 14 15 79 80 81 83 84 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105 106 107 108 110 111 112 113 114 115 116 117 118 119 120 121 123 124 125 126"},E:{_:"0 4 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1 15.1 15.2-15.3 15.4 15.5 16.0 16.1 16.2 16.3 16.4 16.5 17.0 17.1 17.2 17.3 17.4 18.1 18.4","11.1":0.00843,"13.1":0.00843,"14.1":0.02528,"15.6":0.03371,"16.6":0.02528,"17.5":0.00843,"17.6":0.02247,"18.0":0.01124,"18.2":0.00281,"18.3":0.03371},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00289,"5.0-5.1":0,"6.0-6.1":0.00867,"7.0-7.1":0.00578,"8.1-8.4":0,"9.0-9.2":0.00434,"9.3":0.02024,"10.0-10.2":0.00145,"10.3":0.03325,"11.0-11.2":0.15323,"11.3-11.4":0.01012,"12.0-12.1":0.00578,"12.2-12.5":0.14311,"13.0-13.1":0.00289,"13.2":0.00434,"13.3":0.00578,"13.4-13.7":0.02024,"14.0-14.4":0.0506,"14.5-14.8":0.06071,"15.0-15.1":0.03325,"15.2-15.3":0.03325,"15.4":0.04048,"15.5":0.04626,"15.6-15.8":0.56956,"16.0":0.08095,"16.1":0.16624,"16.2":0.08674,"16.3":0.15034,"16.4":0.03325,"16.5":0.06216,"16.6-16.7":0.67509,"17.0":0.04048,"17.1":0.07228,"17.2":0.05493,"17.3":0.07662,"17.4":0.15323,"17.5":0.34116,"17.6-17.7":0.99023,"18.0":0.27755,"18.1":0.90783,"18.2":0.40621,"18.3":8.48996,"18.4":0.12577},P:{"4":0.03363,"22":0.03363,"25":0.02242,"26":0.03363,"27":0.16817,_:"20 21 23 24 6.2-6.4 8.2 9.2 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0","5.0-5.4":0.01121,"7.2-7.4":0.05606,"10.1":0.01121,"19.0":0.01121},I:{"0":0.02153,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00001,"4.4":0,"4.4.3-4.4.4":0.00002},K:{"0":0.39152,_:"10 11 12 11.1 11.5 12.1"},A:{_:"6 7 8 9 10 11 5.5"},S:{"2.5":0.05754,_:"3.0-3.1"},J:{_:"7 10"},N:{_:"10 11"},R:{_:"0"},M:{"0":0.05754},Q:{"14.9":0.00719},O:{"0":0.04315},H:{"0":0.04},L:{"0":68.15688}};
|
||||
@@ -0,0 +1,141 @@
|
||||
import { beforeAll, describe, expect, it } from 'vitest';
|
||||
import { render } from '@testing-library/react';
|
||||
|
||||
import { pdfjs } from './index.test.js';
|
||||
|
||||
import StructTree from './StructTree.js';
|
||||
|
||||
import failingPage from '../../../__mocks__/_failing_page.js';
|
||||
import { loadPDF, makeAsyncCallback, muteConsole, restoreConsole } from '../../../test-utils.js';
|
||||
|
||||
import PageContext from './PageContext.js';
|
||||
|
||||
import type { PDFPageProxy } from 'pdfjs-dist';
|
||||
import type { PageContextType } from './shared/types.js';
|
||||
import type { StructTreeNode } from 'pdfjs-dist/types/src/display/api.js';
|
||||
|
||||
const pdfFile = loadPDF('./../../__mocks__/_pdf.pdf');
|
||||
|
||||
function renderWithContext(children: React.ReactNode, context: Partial<PageContextType>) {
|
||||
const { rerender, ...otherResult } = render(
|
||||
<PageContext.Provider value={context as PageContextType}>{children}</PageContext.Provider>,
|
||||
);
|
||||
|
||||
return {
|
||||
...otherResult,
|
||||
rerender: (nextChildren: React.ReactNode, nextContext: Partial<PageContextType> = context) =>
|
||||
rerender(
|
||||
<PageContext.Provider value={nextContext as PageContextType}>
|
||||
{nextChildren}
|
||||
</PageContext.Provider>,
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
describe('StructTree', () => {
|
||||
// Loaded page
|
||||
let page: PDFPageProxy;
|
||||
let page2: PDFPageProxy;
|
||||
|
||||
// Loaded structure tree
|
||||
let desiredStructTree: StructTreeNode;
|
||||
let desiredStructTree2: StructTreeNode;
|
||||
|
||||
beforeAll(async () => {
|
||||
const pdf = await pdfjs.getDocument({ data: pdfFile.arrayBuffer }).promise;
|
||||
|
||||
page = await pdf.getPage(1);
|
||||
desiredStructTree = await page.getStructTree();
|
||||
|
||||
page2 = await pdf.getPage(2);
|
||||
desiredStructTree2 = await page2.getStructTree();
|
||||
});
|
||||
|
||||
describe('loading', () => {
|
||||
it('loads structure tree and calls onGetStructTreeSuccess callback properly', async () => {
|
||||
const { func: onGetStructTreeSuccess, promise: onGetStructTreeSuccessPromise } =
|
||||
makeAsyncCallback();
|
||||
|
||||
renderWithContext(<StructTree />, {
|
||||
onGetStructTreeSuccess,
|
||||
page,
|
||||
});
|
||||
|
||||
expect.assertions(1);
|
||||
|
||||
await expect(onGetStructTreeSuccessPromise).resolves.toMatchObject([desiredStructTree]);
|
||||
});
|
||||
|
||||
it('calls onGetStructTreeError when failed to load annotations', async () => {
|
||||
const { func: onGetStructTreeError, promise: onGetStructTreeErrorPromise } =
|
||||
makeAsyncCallback();
|
||||
|
||||
muteConsole();
|
||||
|
||||
renderWithContext(<StructTree />, {
|
||||
onGetStructTreeError,
|
||||
page: failingPage,
|
||||
});
|
||||
|
||||
expect.assertions(1);
|
||||
|
||||
await expect(onGetStructTreeErrorPromise).resolves.toMatchObject([expect.any(Error)]);
|
||||
|
||||
restoreConsole();
|
||||
});
|
||||
|
||||
it('replaces structure tree properly when page is changed', async () => {
|
||||
const { func: onGetStructTreeSuccess, promise: onGetStructTreeSuccessPromise } =
|
||||
makeAsyncCallback();
|
||||
|
||||
const { rerender } = renderWithContext(<StructTree />, {
|
||||
onGetStructTreeSuccess,
|
||||
page,
|
||||
});
|
||||
|
||||
expect.assertions(2);
|
||||
|
||||
await expect(onGetStructTreeSuccessPromise).resolves.toMatchObject([desiredStructTree]);
|
||||
|
||||
const { func: onGetStructTreeSuccess2, promise: onGetStructTreeSuccessPromise2 } =
|
||||
makeAsyncCallback();
|
||||
|
||||
rerender(<StructTree />, {
|
||||
onGetStructTreeSuccess: onGetStructTreeSuccess2,
|
||||
page: page2,
|
||||
});
|
||||
|
||||
await expect(onGetStructTreeSuccessPromise2).resolves.toMatchObject([desiredStructTree2]);
|
||||
});
|
||||
|
||||
it('throws an error when placed outside Page', () => {
|
||||
muteConsole();
|
||||
|
||||
expect(() => render(<StructTree />)).toThrow();
|
||||
|
||||
restoreConsole();
|
||||
});
|
||||
});
|
||||
|
||||
describe('rendering', () => {
|
||||
it('renders structure tree properly', async () => {
|
||||
const { func: onGetStructTreeSuccess, promise: onGetStructTreeSuccessPromise } =
|
||||
makeAsyncCallback();
|
||||
|
||||
const { container } = renderWithContext(<StructTree />, {
|
||||
onGetStructTreeSuccess,
|
||||
page,
|
||||
});
|
||||
|
||||
expect.assertions(1);
|
||||
|
||||
await onGetStructTreeSuccessPromise;
|
||||
|
||||
const wrapper = container.firstElementChild as HTMLSpanElement;
|
||||
|
||||
expect(wrapper.outerHTML).toBe(
|
||||
'<span class="react-pdf__Page__structTree structTree"><span><span role="heading" aria-level="1" aria-owns="p3R_mc0"></span><span aria-owns="p3R_mc1"></span><span aria-owns="p3R_mc2"></span><span role="figure" aria-owns="p3R_mc12"></span><span aria-owns="p3R_mc3"></span><span aria-owns="p3R_mc4"></span><span role="heading" aria-level="2" aria-owns="p3R_mc5"></span><span aria-owns="p3R_mc6"></span><span><span aria-owns="p3R_mc7"></span><span role="link"><span aria-owns="13R"></span><span aria-owns="p3R_mc8"></span></span><span aria-owns="p3R_mc9"></span></span><span aria-owns="p3R_mc10"></span><span aria-owns="p3R_mc11"></span></span></span>',
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
* A class that manages a queue of retry jobs.
|
||||
*/
|
||||
export class Retrier {
|
||||
/**
|
||||
* Creates a new instance.
|
||||
* @param {Function} check The function to call.
|
||||
* @param {object} [options] The options for the instance.
|
||||
* @param {number} [options.timeout] The timeout for the queue.
|
||||
* @param {number} [options.maxDelay] The maximum delay for the queue.
|
||||
* @param {number} [options.concurrency] The maximum number of concurrent tasks.
|
||||
*/
|
||||
constructor(check: Function, { timeout, maxDelay, concurrency }?: {
|
||||
timeout?: number | undefined;
|
||||
maxDelay?: number | undefined;
|
||||
concurrency?: number | undefined;
|
||||
} | undefined);
|
||||
/**
|
||||
* Gets the number of tasks waiting to be retried.
|
||||
* @returns {number} The number of tasks in the retry queue.
|
||||
*/
|
||||
get retrying(): number;
|
||||
/**
|
||||
* Gets the number of tasks waiting to be processed in the pending queue.
|
||||
* @returns {number} The number of tasks in the pending queue.
|
||||
*/
|
||||
get pending(): number;
|
||||
/**
|
||||
* Gets the number of tasks currently being processed.
|
||||
* @returns {number} The number of tasks currently being processed.
|
||||
*/
|
||||
get working(): number;
|
||||
/**
|
||||
* Adds a new retry job to the queue.
|
||||
* @param {Function} fn The function to call.
|
||||
* @param {object} [options] The options for the job.
|
||||
* @param {AbortSignal} [options.signal] The AbortSignal to monitor for cancellation.
|
||||
* @returns {Promise<any>} A promise that resolves when the queue is
|
||||
* processed.
|
||||
*/
|
||||
retry(fn: Function, { signal }?: {
|
||||
signal?: AbortSignal | undefined;
|
||||
} | undefined): Promise<any>;
|
||||
#private;
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
# fast-deep-equal
|
||||
The fastest deep equal with ES6 Map, Set and Typed arrays support.
|
||||
|
||||
[](https://travis-ci.org/epoberezkin/fast-deep-equal)
|
||||
[](https://www.npmjs.com/package/fast-deep-equal)
|
||||
[](https://coveralls.io/github/epoberezkin/fast-deep-equal?branch=master)
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
npm install fast-deep-equal
|
||||
```
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
- ES5 compatible
|
||||
- works in node.js (8+) and browsers (IE9+)
|
||||
- checks equality of Date and RegExp objects by value.
|
||||
|
||||
ES6 equal (`require('fast-deep-equal/es6')`) also supports:
|
||||
- Maps
|
||||
- Sets
|
||||
- Typed arrays
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
var equal = require('fast-deep-equal');
|
||||
console.log(equal({foo: 'bar'}, {foo: 'bar'})); // true
|
||||
```
|
||||
|
||||
To support ES6 Maps, Sets and Typed arrays equality use:
|
||||
|
||||
```javascript
|
||||
var equal = require('fast-deep-equal/es6');
|
||||
console.log(equal(Int16Array([1, 2]), Int16Array([1, 2]))); // true
|
||||
```
|
||||
|
||||
To use with React (avoiding the traversal of React elements' _owner
|
||||
property that contains circular references and is not needed when
|
||||
comparing the elements - borrowed from [react-fast-compare](https://github.com/FormidableLabs/react-fast-compare)):
|
||||
|
||||
```javascript
|
||||
var equal = require('fast-deep-equal/react');
|
||||
var equal = require('fast-deep-equal/es6/react');
|
||||
```
|
||||
|
||||
|
||||
## Performance benchmark
|
||||
|
||||
Node.js v12.6.0:
|
||||
|
||||
```
|
||||
fast-deep-equal x 261,950 ops/sec ±0.52% (89 runs sampled)
|
||||
fast-deep-equal/es6 x 212,991 ops/sec ±0.34% (92 runs sampled)
|
||||
fast-equals x 230,957 ops/sec ±0.83% (85 runs sampled)
|
||||
nano-equal x 187,995 ops/sec ±0.53% (88 runs sampled)
|
||||
shallow-equal-fuzzy x 138,302 ops/sec ±0.49% (90 runs sampled)
|
||||
underscore.isEqual x 74,423 ops/sec ±0.38% (89 runs sampled)
|
||||
lodash.isEqual x 36,637 ops/sec ±0.72% (90 runs sampled)
|
||||
deep-equal x 2,310 ops/sec ±0.37% (90 runs sampled)
|
||||
deep-eql x 35,312 ops/sec ±0.67% (91 runs sampled)
|
||||
ramda.equals x 12,054 ops/sec ±0.40% (91 runs sampled)
|
||||
util.isDeepStrictEqual x 46,440 ops/sec ±0.43% (90 runs sampled)
|
||||
assert.deepStrictEqual x 456 ops/sec ±0.71% (88 runs sampled)
|
||||
|
||||
The fastest is fast-deep-equal
|
||||
```
|
||||
|
||||
To run benchmark (requires node.js 6+):
|
||||
|
||||
```bash
|
||||
npm run benchmark
|
||||
```
|
||||
|
||||
__Please note__: this benchmark runs against the available test cases. To choose the most performant library for your application, it is recommended to benchmark against your data and to NOT expect this benchmark to reflect the performance difference in your application.
|
||||
|
||||
|
||||
## Enterprise support
|
||||
|
||||
fast-deep-equal package is a part of [Tidelift enterprise subscription](https://tidelift.com/subscription/pkg/npm-fast-deep-equal?utm_source=npm-fast-deep-equal&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - it provides a centralised commercial support to open-source software users, in addition to the support provided by software maintainers.
|
||||
|
||||
|
||||
## Security contact
|
||||
|
||||
To report a security vulnerability, please use the
|
||||
[Tidelift security contact](https://tidelift.com/security).
|
||||
Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerability via GitHub issues.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
[MIT](https://github.com/epoberezkin/fast-deep-equal/blob/master/LICENSE)
|
||||
@@ -0,0 +1,22 @@
|
||||
export type IL10n = import("./interfaces").IL10n;
|
||||
/**
|
||||
* @implements {IL10n}
|
||||
*/
|
||||
export class GenericL10n extends L10n implements IL10n {
|
||||
/**
|
||||
* Generate the bundles for Fluent.
|
||||
* @param {String} defaultLang - The fallback language to use for
|
||||
* translations.
|
||||
* @param {String} baseLang - The base language to use for translations.
|
||||
*/
|
||||
static "__#63@#generateBundles"(defaultLang: string, baseLang: string): AsyncGenerator<any, void, unknown>;
|
||||
static "__#63@#createBundle"(lang: any, baseURL: any, paths: any): Promise<any>;
|
||||
static "__#63@#getPaths"(): Promise<{
|
||||
baseURL: any;
|
||||
paths: any;
|
||||
}>;
|
||||
static "__#63@#generateBundlesFallback"(lang: any): AsyncGenerator<any, void, unknown>;
|
||||
static "__#63@#createBundleFallback"(lang: any): Promise<any>;
|
||||
constructor(lang: any);
|
||||
}
|
||||
import { L10n } from "./l10n.js";
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,97 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = _wrapAsyncGenerator;
|
||||
var _OverloadYield = require("./OverloadYield.js");
|
||||
function _wrapAsyncGenerator(fn) {
|
||||
return function () {
|
||||
return new AsyncGenerator(fn.apply(this, arguments));
|
||||
};
|
||||
}
|
||||
function AsyncGenerator(gen) {
|
||||
var front, back;
|
||||
function send(key, arg) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var request = {
|
||||
key: key,
|
||||
arg: arg,
|
||||
resolve: resolve,
|
||||
reject: reject,
|
||||
next: null
|
||||
};
|
||||
if (back) {
|
||||
back = back.next = request;
|
||||
} else {
|
||||
front = back = request;
|
||||
resume(key, arg);
|
||||
}
|
||||
});
|
||||
}
|
||||
function resume(key, arg) {
|
||||
try {
|
||||
var result = gen[key](arg);
|
||||
var value = result.value;
|
||||
var overloaded = value instanceof _OverloadYield.default;
|
||||
Promise.resolve(overloaded ? value.v : value).then(function (arg) {
|
||||
if (overloaded) {
|
||||
var nextKey = key === "return" ? "return" : "next";
|
||||
if (!value.k || arg.done) {
|
||||
return resume(nextKey, arg);
|
||||
} else {
|
||||
arg = gen[nextKey](arg).value;
|
||||
}
|
||||
}
|
||||
settle(result.done ? "return" : "normal", arg);
|
||||
}, function (err) {
|
||||
resume("throw", err);
|
||||
});
|
||||
} catch (err) {
|
||||
settle("throw", err);
|
||||
}
|
||||
}
|
||||
function settle(type, value) {
|
||||
switch (type) {
|
||||
case "return":
|
||||
front.resolve({
|
||||
value: value,
|
||||
done: true
|
||||
});
|
||||
break;
|
||||
case "throw":
|
||||
front.reject(value);
|
||||
break;
|
||||
default:
|
||||
front.resolve({
|
||||
value: value,
|
||||
done: false
|
||||
});
|
||||
break;
|
||||
}
|
||||
front = front.next;
|
||||
if (front) {
|
||||
resume(front.key, front.arg);
|
||||
} else {
|
||||
back = null;
|
||||
}
|
||||
}
|
||||
this._invoke = send;
|
||||
if (typeof gen.return !== "function") {
|
||||
this.return = undefined;
|
||||
}
|
||||
}
|
||||
AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () {
|
||||
return this;
|
||||
};
|
||||
AsyncGenerator.prototype.next = function (arg) {
|
||||
return this._invoke("next", arg);
|
||||
};
|
||||
AsyncGenerator.prototype.throw = function (arg) {
|
||||
return this._invoke("throw", arg);
|
||||
};
|
||||
AsyncGenerator.prototype.return = function (arg) {
|
||||
return this._invoke("return", arg);
|
||||
};
|
||||
|
||||
//# sourceMappingURL=wrapAsyncGenerator.js.map
|
||||
Reference in New Issue
Block a user