update
This commit is contained in:
@@ -0,0 +1,360 @@
|
||||
/**
|
||||
* @fileoverview Rule to disallow use of unmodified expressions in loop conditions
|
||||
* @author Toru Nagashima
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Requirements
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const Traverser = require("../shared/traverser"),
|
||||
astUtils = require("./utils/ast-utils");
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Helpers
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const SENTINEL_PATTERN =
|
||||
/(?:(?:Call|Class|Function|Member|New|Yield)Expression|Statement|Declaration)$/u;
|
||||
const LOOP_PATTERN = /^(?:DoWhile|For|While)Statement$/u; // for-in/of statements don't have `test` property.
|
||||
const GROUP_PATTERN = /^(?:BinaryExpression|ConditionalExpression)$/u;
|
||||
const SKIP_PATTERN = /^(?:ArrowFunction|Class|Function)Expression$/u;
|
||||
const DYNAMIC_PATTERN = /^(?:Call|Member|New|TaggedTemplate|Yield)Expression$/u;
|
||||
|
||||
/**
|
||||
* @typedef {Object} LoopConditionInfo
|
||||
* @property {eslint-scope.Reference} reference - The reference.
|
||||
* @property {ASTNode} group - BinaryExpression or ConditionalExpression nodes
|
||||
* that the reference is belonging to.
|
||||
* @property {Function} isInLoop - The predicate which checks a given reference
|
||||
* is in this loop.
|
||||
* @property {boolean} modified - The flag that the reference is modified in
|
||||
* this loop.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Checks whether or not a given reference is a write reference.
|
||||
* @param {eslint-scope.Reference} reference A reference to check.
|
||||
* @returns {boolean} `true` if the reference is a write reference.
|
||||
*/
|
||||
function isWriteReference(reference) {
|
||||
if (reference.init) {
|
||||
const def = reference.resolved && reference.resolved.defs[0];
|
||||
|
||||
if (!def || def.type !== "Variable" || def.parent.kind !== "var") {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return reference.isWrite();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether or not a given loop condition info does not have the modified
|
||||
* flag.
|
||||
* @param {LoopConditionInfo} condition A loop condition info to check.
|
||||
* @returns {boolean} `true` if the loop condition info is "unmodified".
|
||||
*/
|
||||
function isUnmodified(condition) {
|
||||
return !condition.modified;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether or not a given loop condition info does not have the modified
|
||||
* flag and does not have the group this condition belongs to.
|
||||
* @param {LoopConditionInfo} condition A loop condition info to check.
|
||||
* @returns {boolean} `true` if the loop condition info is "unmodified".
|
||||
*/
|
||||
function isUnmodifiedAndNotBelongToGroup(condition) {
|
||||
return !(condition.modified || condition.group);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether or not a given reference is inside of a given node.
|
||||
* @param {ASTNode} node A node to check.
|
||||
* @param {eslint-scope.Reference} reference A reference to check.
|
||||
* @returns {boolean} `true` if the reference is inside of the node.
|
||||
*/
|
||||
function isInRange(node, reference) {
|
||||
const or = node.range;
|
||||
const ir = reference.identifier.range;
|
||||
|
||||
return or[0] <= ir[0] && ir[1] <= or[1];
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether or not a given reference is inside of a loop node's condition.
|
||||
* @param {ASTNode} node A node to check.
|
||||
* @param {eslint-scope.Reference} reference A reference to check.
|
||||
* @returns {boolean} `true` if the reference is inside of the loop node's
|
||||
* condition.
|
||||
*/
|
||||
const isInLoop = {
|
||||
WhileStatement: isInRange,
|
||||
DoWhileStatement: isInRange,
|
||||
ForStatement(node, reference) {
|
||||
return (
|
||||
isInRange(node, reference) &&
|
||||
!(node.init && isInRange(node.init, reference))
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets the function which encloses a given reference.
|
||||
* This supports only FunctionDeclaration.
|
||||
* @param {eslint-scope.Reference} reference A reference to get.
|
||||
* @returns {ASTNode|null} The function node or null.
|
||||
*/
|
||||
function getEncloseFunctionDeclaration(reference) {
|
||||
let node = reference.identifier;
|
||||
|
||||
while (node) {
|
||||
if (node.type === "FunctionDeclaration") {
|
||||
return node.id ? node : null;
|
||||
}
|
||||
|
||||
node = node.parent;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the "modified" flags of given loop conditions with given modifiers.
|
||||
* @param {LoopConditionInfo[]} conditions The loop conditions to be updated.
|
||||
* @param {eslint-scope.Reference[]} modifiers The references to update.
|
||||
* @returns {void}
|
||||
*/
|
||||
function updateModifiedFlag(conditions, modifiers) {
|
||||
for (let i = 0; i < conditions.length; ++i) {
|
||||
const condition = conditions[i];
|
||||
|
||||
for (let j = 0; !condition.modified && j < modifiers.length; ++j) {
|
||||
const modifier = modifiers[j];
|
||||
let funcNode, funcVar;
|
||||
|
||||
/*
|
||||
* Besides checking for the condition being in the loop, we want to
|
||||
* check the function that this modifier is belonging to is called
|
||||
* in the loop.
|
||||
* FIXME: This should probably be extracted to a function.
|
||||
*/
|
||||
const inLoop =
|
||||
condition.isInLoop(modifier) ||
|
||||
Boolean(
|
||||
(funcNode = getEncloseFunctionDeclaration(modifier)) &&
|
||||
(funcVar = astUtils.getVariableByName(
|
||||
modifier.from.upper,
|
||||
funcNode.id.name,
|
||||
)) &&
|
||||
funcVar.references.some(condition.isInLoop),
|
||||
);
|
||||
|
||||
condition.modified = inLoop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Rule Definition
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
/** @type {import('../shared/types').Rule} */
|
||||
module.exports = {
|
||||
meta: {
|
||||
type: "problem",
|
||||
|
||||
docs: {
|
||||
description: "Disallow unmodified loop conditions",
|
||||
recommended: false,
|
||||
url: "https://eslint.org/docs/latest/rules/no-unmodified-loop-condition",
|
||||
},
|
||||
|
||||
schema: [],
|
||||
|
||||
messages: {
|
||||
loopConditionNotModified:
|
||||
"'{{name}}' is not modified in this loop.",
|
||||
},
|
||||
},
|
||||
|
||||
create(context) {
|
||||
const sourceCode = context.sourceCode;
|
||||
let groupMap = null;
|
||||
|
||||
/**
|
||||
* Reports a given condition info.
|
||||
* @param {LoopConditionInfo} condition A loop condition info to report.
|
||||
* @returns {void}
|
||||
*/
|
||||
function report(condition) {
|
||||
const node = condition.reference.identifier;
|
||||
|
||||
context.report({
|
||||
node,
|
||||
messageId: "loopConditionNotModified",
|
||||
data: node,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers given conditions to the group the condition belongs to.
|
||||
* @param {LoopConditionInfo[]} conditions A loop condition info to
|
||||
* register.
|
||||
* @returns {void}
|
||||
*/
|
||||
function registerConditionsToGroup(conditions) {
|
||||
for (let i = 0; i < conditions.length; ++i) {
|
||||
const condition = conditions[i];
|
||||
|
||||
if (condition.group) {
|
||||
let group = groupMap.get(condition.group);
|
||||
|
||||
if (!group) {
|
||||
group = [];
|
||||
groupMap.set(condition.group, group);
|
||||
}
|
||||
group.push(condition);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reports references which are inside of unmodified groups.
|
||||
* @param {LoopConditionInfo[]} conditions A loop condition info to report.
|
||||
* @returns {void}
|
||||
*/
|
||||
function checkConditionsInGroup(conditions) {
|
||||
if (conditions.every(isUnmodified)) {
|
||||
conditions.forEach(report);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether or not a given group node has any dynamic elements.
|
||||
* @param {ASTNode} root A node to check.
|
||||
* This node is one of BinaryExpression or ConditionalExpression.
|
||||
* @returns {boolean} `true` if the node is dynamic.
|
||||
*/
|
||||
function hasDynamicExpressions(root) {
|
||||
let retv = false;
|
||||
|
||||
Traverser.traverse(root, {
|
||||
visitorKeys: sourceCode.visitorKeys,
|
||||
enter(node) {
|
||||
if (DYNAMIC_PATTERN.test(node.type)) {
|
||||
retv = true;
|
||||
this.break();
|
||||
} else if (SKIP_PATTERN.test(node.type)) {
|
||||
this.skip();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
return retv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the loop condition information from a given reference.
|
||||
* @param {eslint-scope.Reference} reference A reference to create.
|
||||
* @returns {LoopConditionInfo|null} Created loop condition info, or null.
|
||||
*/
|
||||
function toLoopCondition(reference) {
|
||||
if (reference.init) {
|
||||
return null;
|
||||
}
|
||||
|
||||
let group = null;
|
||||
let child = reference.identifier;
|
||||
let node = child.parent;
|
||||
|
||||
while (node) {
|
||||
if (SENTINEL_PATTERN.test(node.type)) {
|
||||
if (LOOP_PATTERN.test(node.type) && node.test === child) {
|
||||
// This reference is inside of a loop condition.
|
||||
return {
|
||||
reference,
|
||||
group,
|
||||
isInLoop: isInLoop[node.type].bind(null, node),
|
||||
modified: false,
|
||||
};
|
||||
}
|
||||
|
||||
// This reference is outside of a loop condition.
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* If it's inside of a group, OK if either operand is modified.
|
||||
* So stores the group this reference belongs to.
|
||||
*/
|
||||
if (GROUP_PATTERN.test(node.type)) {
|
||||
// If this expression is dynamic, no need to check.
|
||||
if (hasDynamicExpressions(node)) {
|
||||
break;
|
||||
} else {
|
||||
group = node;
|
||||
}
|
||||
}
|
||||
|
||||
child = node;
|
||||
node = node.parent;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds unmodified references which are inside of a loop condition.
|
||||
* Then reports the references which are outside of groups.
|
||||
* @param {eslint-scope.Variable} variable A variable to report.
|
||||
* @returns {void}
|
||||
*/
|
||||
function checkReferences(variable) {
|
||||
// Gets references that exist in loop conditions.
|
||||
const conditions = variable.references
|
||||
.map(toLoopCondition)
|
||||
.filter(Boolean);
|
||||
|
||||
if (conditions.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Registers the conditions to belonging groups.
|
||||
registerConditionsToGroup(conditions);
|
||||
|
||||
// Check the conditions are modified.
|
||||
const modifiers = variable.references.filter(isWriteReference);
|
||||
|
||||
if (modifiers.length > 0) {
|
||||
updateModifiedFlag(conditions, modifiers);
|
||||
}
|
||||
|
||||
/*
|
||||
* Reports the conditions which are not belonging to groups.
|
||||
* Others will be reported after all variables are done.
|
||||
*/
|
||||
conditions.filter(isUnmodifiedAndNotBelongToGroup).forEach(report);
|
||||
}
|
||||
|
||||
return {
|
||||
"Program:exit"(node) {
|
||||
const queue = [sourceCode.getScope(node)];
|
||||
|
||||
groupMap = new Map();
|
||||
|
||||
let scope;
|
||||
|
||||
while ((scope = queue.pop())) {
|
||||
queue.push(...scope.childScopes);
|
||||
scope.variables.forEach(checkReferences);
|
||||
}
|
||||
|
||||
groupMap.forEach(checkConditionsInGroup);
|
||||
groupMap = null;
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"K D E F mC","292":"A B"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I","2":"C L M G N O P"},C:{"1":"0 9 oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC oC pC","2":"nC LC qC rC","164":"1 2 3 4 5 6 7 8 J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB"},D:{"1":"0 9 kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC","2":"1 2 3 4 5 6 7 8 J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB"},E:{"1":"F A B C L M G wC TC FC GC xC yC zC UC VC HC 0C IC WC XC YC ZC aC 1C JC bC cC dC eC fC 2C KC gC hC iC jC 3C","2":"J PB K D E sC SC tC uC vC"},F:{"1":"0 XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P QB RB SB TB UB VB WB 4C 5C 6C 7C FC kC 8C GC"},G:{"1":"ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD UC VC HC TD IC WC XC YC ZC aC UD JC bC cC dC eC fC VD KC gC hC iC jC","2":"E SC 9C lC AD BD CD DD"},H:{"2":"WD"},I:{"1":"I","2":"LC J XD YD ZD aD lC bD cD"},J:{"2":"D A"},K:{"1":"H","2":"A B C FC kC GC"},L:{"1":"I"},M:{"1":"EC"},N:{"2":"A B"},O:{"1":"HC"},P:{"1":"1 2 3 4 5 6 7 8 dD eD fD gD hD TC iD jD kD lD mD IC JC KC nD","2":"J"},Q:{"1":"oD"},R:{"1":"pD"},S:{"1":"rD","164":"qD"}},B:5,C:":placeholder-shown CSS pseudo-class",D:true};
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"curly": true,
|
||||
"eqeqeq": true,
|
||||
"immed": true,
|
||||
"eqnull": true,
|
||||
"latedef": true,
|
||||
"noarg": true,
|
||||
"noempty": true,
|
||||
"quotmark": "single",
|
||||
"undef": true,
|
||||
"unused": true,
|
||||
"strict": true,
|
||||
"trailing": true,
|
||||
|
||||
"node": true
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
module.exports = require('./cjs/react-jsx-runtime.production.js');
|
||||
} else {
|
||||
module.exports = require('./cjs/react-jsx-runtime.development.js');
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
import { jsx, Fragment } from "react/jsx-runtime";
|
||||
function SafeFragment(props) {
|
||||
return /* @__PURE__ */ jsx(Fragment, { children: props.children });
|
||||
}
|
||||
export {
|
||||
SafeFragment
|
||||
};
|
||||
//# sourceMappingURL=SafeFragment.js.map
|
||||
@@ -0,0 +1,98 @@
|
||||
import * as React from "react";
|
||||
import { trimPathRight, getLocationChangeInfo, handleHashScroll } from "@tanstack/router-core";
|
||||
import { usePrevious, useLayoutEffect } from "./utils.js";
|
||||
import { useRouter } from "./useRouter.js";
|
||||
import { useRouterState } from "./useRouterState.js";
|
||||
function Transitioner() {
|
||||
const router = useRouter();
|
||||
const mountLoadForRouter = React.useRef({ router, mounted: false });
|
||||
const isLoading = useRouterState({
|
||||
select: ({ isLoading: isLoading2 }) => isLoading2
|
||||
});
|
||||
const [isTransitioning, setIsTransitioning] = React.useState(false);
|
||||
const hasPendingMatches = useRouterState({
|
||||
select: (s) => s.matches.some((d) => d.status === "pending"),
|
||||
structuralSharing: true
|
||||
});
|
||||
const previousIsLoading = usePrevious(isLoading);
|
||||
const isAnyPending = isLoading || isTransitioning || hasPendingMatches;
|
||||
const previousIsAnyPending = usePrevious(isAnyPending);
|
||||
const isPagePending = isLoading || hasPendingMatches;
|
||||
const previousIsPagePending = usePrevious(isPagePending);
|
||||
if (!router.isServer) {
|
||||
router.startTransition = (fn) => {
|
||||
setIsTransitioning(true);
|
||||
React.startTransition(() => {
|
||||
fn();
|
||||
setIsTransitioning(false);
|
||||
});
|
||||
};
|
||||
}
|
||||
React.useEffect(() => {
|
||||
const unsub = router.history.subscribe(router.load);
|
||||
const nextLocation = router.buildLocation({
|
||||
to: router.latestLocation.pathname,
|
||||
search: true,
|
||||
params: true,
|
||||
hash: true,
|
||||
state: true,
|
||||
_includeValidateSearch: true
|
||||
});
|
||||
if (trimPathRight(router.latestLocation.href) !== trimPathRight(nextLocation.href)) {
|
||||
router.commitLocation({ ...nextLocation, replace: true });
|
||||
}
|
||||
return () => {
|
||||
unsub();
|
||||
};
|
||||
}, [router, router.history]);
|
||||
useLayoutEffect(() => {
|
||||
if (typeof window !== "undefined" && router.clientSsr || mountLoadForRouter.current.router === router && mountLoadForRouter.current.mounted) {
|
||||
return;
|
||||
}
|
||||
mountLoadForRouter.current = { router, mounted: true };
|
||||
const tryLoad = async () => {
|
||||
try {
|
||||
await router.load();
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
};
|
||||
tryLoad();
|
||||
}, [router]);
|
||||
useLayoutEffect(() => {
|
||||
if (previousIsLoading && !isLoading) {
|
||||
router.emit({
|
||||
type: "onLoad",
|
||||
// When the new URL has committed, when the new matches have been loaded into state.matches
|
||||
...getLocationChangeInfo(router.state)
|
||||
});
|
||||
}
|
||||
}, [previousIsLoading, router, isLoading]);
|
||||
useLayoutEffect(() => {
|
||||
if (previousIsPagePending && !isPagePending) {
|
||||
router.emit({
|
||||
type: "onBeforeRouteMount",
|
||||
...getLocationChangeInfo(router.state)
|
||||
});
|
||||
}
|
||||
}, [isPagePending, previousIsPagePending, router]);
|
||||
useLayoutEffect(() => {
|
||||
if (previousIsAnyPending && !isAnyPending) {
|
||||
router.emit({
|
||||
type: "onResolved",
|
||||
...getLocationChangeInfo(router.state)
|
||||
});
|
||||
router.__store.setState((s) => ({
|
||||
...s,
|
||||
status: "idle",
|
||||
resolvedLocation: s.location
|
||||
}));
|
||||
handleHashScroll(router);
|
||||
}
|
||||
}, [isAnyPending, previousIsAnyPending, router]);
|
||||
return null;
|
||||
}
|
||||
export {
|
||||
Transitioner
|
||||
};
|
||||
//# sourceMappingURL=Transitioner.js.map
|
||||
@@ -0,0 +1,22 @@
|
||||
import React from 'react';
|
||||
import { createStore } from 'zustand/vanilla';
|
||||
|
||||
const identity = (arg) => arg;
|
||||
function useStore(api, selector = identity) {
|
||||
const slice = React.useSyncExternalStore(
|
||||
api.subscribe,
|
||||
() => selector(api.getState()),
|
||||
() => selector(api.getInitialState())
|
||||
);
|
||||
React.useDebugValue(slice);
|
||||
return slice;
|
||||
}
|
||||
const createImpl = (createState) => {
|
||||
const api = createStore(createState);
|
||||
const useBoundStore = (selector) => useStore(api, selector);
|
||||
Object.assign(useBoundStore, api);
|
||||
return useBoundStore;
|
||||
};
|
||||
const create = (createState) => createState ? createImpl(createState) : createImpl;
|
||||
|
||||
export { create, useStore };
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"2":"K D E F A B mC"},B:{"2":"C L M G N O","260":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I","3138":"P"},C:{"1":"0 9 rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC oC pC","2":"nC LC","132":"1 2 3 4 5 6 7 8 J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB qC rC","644":"kB lB mB nB oB pB qB"},D:{"2":"1 2 3 4 J PB K D E F A B C L M G N O P QB","260":"0 9 sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC","292":"5 6 7 8 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB"},E:{"2":"J PB K sC SC tC uC","260":"M G xC yC zC UC VC HC 0C IC WC XC YC ZC aC 1C JC bC cC dC eC fC 2C KC gC hC iC jC 3C","292":"D E F A B C L vC wC TC FC GC"},F:{"2":"F B C 4C 5C 6C 7C FC kC 8C GC","260":"0 fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","292":"1 2 3 4 5 6 7 8 G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB"},G:{"2":"SC 9C lC AD BD","260":"MD ND OD PD QD RD SD UC VC HC TD IC WC XC YC ZC aC UD JC bC cC dC eC fC VD KC gC hC iC jC","292":"E CD DD ED FD GD HD ID JD KD LD"},H:{"2":"WD"},I:{"2":"LC J XD YD ZD aD lC","260":"I","292":"bD cD"},J:{"2":"D A"},K:{"2":"A B C FC kC GC","260":"H"},L:{"260":"I"},M:{"1":"EC"},N:{"2":"A B"},O:{"260":"HC"},P:{"260":"1 2 3 4 5 6 7 8 eD fD gD hD TC iD jD kD lD mD IC JC KC nD","292":"J dD"},Q:{"260":"oD"},R:{"260":"pD"},S:{"1":"rD","644":"qD"}},B:4,C:"CSS clip-path property (for HTML)",D:true};
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = toSequenceExpression;
|
||||
var _gatherSequenceExpressions = require("./gatherSequenceExpressions.js");
|
||||
;
|
||||
function toSequenceExpression(nodes, scope) {
|
||||
if (!(nodes != null && nodes.length)) return;
|
||||
const declars = [];
|
||||
const result = (0, _gatherSequenceExpressions.default)(nodes, declars);
|
||||
if (!result) return;
|
||||
for (const declar of declars) {
|
||||
scope.push(declar);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=toSequenceExpression.js.map
|
||||
@@ -0,0 +1,35 @@
|
||||
import * as React from "./";
|
||||
export { Fragment } from "./";
|
||||
|
||||
export namespace JSX {
|
||||
interface Element extends React.JSX.Element {}
|
||||
interface ElementClass extends React.JSX.ElementClass {}
|
||||
interface ElementAttributesProperty extends React.JSX.ElementAttributesProperty {}
|
||||
interface ElementChildrenAttribute extends React.JSX.ElementChildrenAttribute {}
|
||||
type LibraryManagedAttributes<C, P> = React.JSX.LibraryManagedAttributes<C, P>;
|
||||
interface IntrinsicAttributes extends React.JSX.IntrinsicAttributes {}
|
||||
interface IntrinsicClassAttributes<T> extends React.JSX.IntrinsicClassAttributes<T> {}
|
||||
interface IntrinsicElements extends React.JSX.IntrinsicElements {}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a React element.
|
||||
*
|
||||
* You should not use this function directly. Use JSX and a transpiler instead.
|
||||
*/
|
||||
export function jsx(
|
||||
type: React.ElementType,
|
||||
props: unknown,
|
||||
key?: React.Key,
|
||||
): React.ReactElement;
|
||||
|
||||
/**
|
||||
* Create a React element.
|
||||
*
|
||||
* You should not use this function directly. Use JSX and a transpiler instead.
|
||||
*/
|
||||
export function jsxs(
|
||||
type: React.ElementType,
|
||||
props: unknown,
|
||||
key?: React.Key,
|
||||
): React.ReactElement;
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"useRouteContext.cjs","sources":["../../src/useRouteContext.ts"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type {\n AnyRouter,\n RegisteredRouter,\n UseRouteContextBaseOptions,\n UseRouteContextOptions,\n UseRouteContextResult,\n} from '@tanstack/router-core'\n\nexport type UseRouteContextRoute<out TFrom> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseRouteContextBaseOptions<TRouter, TFrom, true, TSelected>,\n) => UseRouteContextResult<TRouter, TFrom, true, TSelected>\n\nexport function useRouteContext<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TSelected = unknown,\n>(\n opts: UseRouteContextOptions<TRouter, TFrom, TStrict, TSelected>,\n): UseRouteContextResult<TRouter, TFrom, TStrict, TSelected> {\n return useMatch({\n ...(opts as any),\n select: (match) =>\n opts.select ? opts.select(match.context) : match.context,\n }) as UseRouteContextResult<TRouter, TFrom, TStrict, TSelected>\n}\n"],"names":["useMatch"],"mappings":";;;AAgBO,SAAS,gBAMd,MAC2D;AAC3D,SAAOA,kBAAS;AAAA,IACd,GAAI;AAAA,IACJ,QAAQ,CAAC,UACP,KAAK,SAAS,KAAK,OAAO,MAAM,OAAO,IAAI,MAAM;AAAA,EAAA,CACpD;AACH;;"}
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={C:{"52":0.00372,"53":0.01116,"55":0.16745,"56":0.45396,"113":0.00372,"115":0.08558,"128":0.02605,"132":0.00372,"133":0.00372,"134":0.01488,"135":0.17117,"136":0.70699,"137":0.01116,_:"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 54 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 114 116 117 118 119 120 121 122 123 124 125 126 127 129 130 131 138 139 140 3.5 3.6"},D:{"41":0.00372,"43":0.00372,"47":0.00372,"49":0.00372,"53":0.00372,"55":0.00372,"56":0.00372,"58":0.00744,"61":0.00372,"63":0.00372,"65":0.00372,"67":0.00372,"69":0.00372,"70":0.00744,"72":0.00372,"73":0.00372,"74":0.00372,"79":0.04093,"80":0.00372,"81":0.00372,"83":0.00372,"85":0.00372,"86":0.00372,"87":0.02977,"88":0.01116,"91":0.00744,"93":0.00372,"94":0.00372,"95":0.00744,"97":0.00372,"98":0.00372,"99":0.00372,"101":0.01861,"102":0.00744,"103":0.01861,"104":0.32745,"105":0.01488,"106":0.01488,"107":0.00744,"108":0.02605,"109":1.33212,"110":0.00744,"111":0.00744,"112":0.01116,"113":0.02233,"114":0.03721,"115":0.00372,"116":0.02605,"117":0.01861,"118":0.06326,"119":0.01861,"120":0.02977,"121":0.01488,"122":0.08186,"123":0.03721,"124":0.06326,"125":0.04093,"126":0.05209,"127":0.04093,"128":0.06326,"129":0.03349,"130":0.06326,"131":0.20838,"132":0.20466,"133":6.71641,"134":14.80214,"135":0.01861,"136":0.01488,_:"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 42 44 45 46 48 50 51 52 54 57 59 60 62 64 66 68 71 75 76 77 78 84 89 90 92 96 100 137 138"},F:{"46":0.00372,"87":0.02233,"88":0.00744,"95":0.01861,"108":0.00372,"116":0.07442,"117":0.36838,_:"9 11 12 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 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 79 80 81 82 83 84 85 86 89 90 91 92 93 94 96 97 98 99 100 101 102 103 104 105 106 107 109 110 111 112 113 114 115 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"18":0.00372,"92":0.00372,"100":0.00372,"108":0.00372,"109":0.04837,"110":0.00744,"114":0.01488,"119":0.00372,"120":0.00372,"121":0.00372,"122":0.00744,"124":0.00372,"125":0.00372,"126":0.01116,"127":0.00372,"128":0.00744,"129":0.01116,"130":0.01488,"131":0.03721,"132":0.02605,"133":0.89676,"134":2.44842,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95 96 97 98 99 101 102 103 104 105 106 107 111 112 113 115 116 117 118 123"},E:{"14":0.00744,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.00372,"13.1":0.00744,"14.1":0.02605,"15.1":0.00372,"15.2-15.3":0.00372,"15.4":0.00744,"15.5":0.01116,"15.6":0.07814,"16.0":0.01488,"16.1":0.04465,"16.2":0.01488,"16.3":0.04093,"16.4":0.00744,"16.5":0.01488,"16.6":0.11535,"17.0":0.01116,"17.1":0.08558,"17.2":0.01861,"17.3":0.01861,"17.4":0.03349,"17.5":0.10047,"17.6":0.21954,"18.0":0.04837,"18.1":0.16745,"18.2":0.07442,"18.3":1.59631,"18.4":0.01488},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00287,"5.0-5.1":0,"6.0-6.1":0.0086,"7.0-7.1":0.00574,"8.1-8.4":0,"9.0-9.2":0.0043,"9.3":0.02008,"10.0-10.2":0.00143,"10.3":0.03298,"11.0-11.2":0.15202,"11.3-11.4":0.01004,"12.0-12.1":0.00574,"12.2-12.5":0.14198,"13.0-13.1":0.00287,"13.2":0.0043,"13.3":0.00574,"13.4-13.7":0.02008,"14.0-14.4":0.05019,"14.5-14.8":0.06023,"15.0-15.1":0.03298,"15.2-15.3":0.03298,"15.4":0.04016,"15.5":0.04589,"15.6-15.8":0.56504,"16.0":0.08031,"16.1":0.16492,"16.2":0.08605,"16.3":0.14915,"16.4":0.03298,"16.5":0.06167,"16.6-16.7":0.66974,"17.0":0.04016,"17.1":0.07171,"17.2":0.0545,"17.3":0.07601,"17.4":0.15202,"17.5":0.33845,"17.6-17.7":0.98237,"18.0":0.27535,"18.1":0.90063,"18.2":0.40299,"18.3":8.42261,"18.4":0.12477},P:{"4":0.08465,"20":0.01058,"21":0.04233,"22":0.03174,"23":0.06349,"24":0.05291,"25":0.09523,"26":0.13756,"27":2.46553,"5.0-5.4":0.01058,_:"6.2-6.4 8.2 10.1 12.0 14.0","7.2-7.4":0.10582,"9.2":0.01058,"11.1-11.2":0.03174,"13.0":0.01058,"15.0":0.01058,"16.0":0.01058,"17.0":0.01058,"18.0":0.01058,"19.0":0.01058},I:{"0":0.02506,"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.00003},K:{"0":0.28767,_:"10 11 12 11.1 11.5 12.1"},A:{"8":0.00408,"11":0.12243,_:"6 7 9 10 5.5"},S:{_:"2.5 3.0-3.1"},J:{_:"7 10"},N:{_:"10 11"},R:{_:"0"},M:{"0":0.15698},Q:{"14.9":0.00628},O:{"0":0.36418},H:{"0":0.02},L:{"0":47.04817}};
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"effect.cjs","sources":["../../src/effect.ts"],"sourcesContent":["import { Derived } from './derived'\nimport type { DerivedOptions } from './derived'\n\ninterface EffectOptions\n extends Omit<\n DerivedOptions<unknown>,\n 'onUpdate' | 'onSubscribe' | 'lazy' | 'fn'\n > {\n /**\n * Should the effect trigger immediately?\n * @default false\n */\n eager?: boolean\n fn: () => void\n}\n\nexport class Effect {\n /**\n * @private\n */\n _derived: Derived<void>\n\n constructor(opts: EffectOptions) {\n const { eager, fn, ...derivedProps } = opts\n\n this._derived = new Derived({\n ...derivedProps,\n fn: () => {},\n onUpdate() {\n fn()\n },\n })\n\n if (eager) {\n fn()\n }\n }\n\n mount() {\n return this._derived.mount()\n }\n}\n"],"names":["Derived"],"mappings":";;;AAgBO,MAAM,OAAO;AAAA,EAMlB,YAAY,MAAqB;AAC/B,UAAM,EAAE,OAAO,IAAI,GAAG,aAAiB,IAAA;AAElC,SAAA,WAAW,IAAIA,gBAAQ;AAAA,MAC1B,GAAG;AAAA,MACH,IAAI,MAAM;AAAA,MAAC;AAAA,MACX,WAAW;AACN,WAAA;AAAA,MAAA;AAAA,IACL,CACD;AAED,QAAI,OAAO;AACN,SAAA;AAAA,IAAA;AAAA,EACL;AAAA,EAGF,QAAQ;AACC,WAAA,KAAK,SAAS,MAAM;AAAA,EAAA;AAE/B;;"}
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={A:{A:{"1":"F A B","2":"K D E mC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I"},C:{"1":"0 1 2 3 4 5 6 7 8 9 nC LC J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC oC pC qC rC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J PB K D E F A B C L M G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB MC wB NC xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB I PC EC QC RC"},E:{"1":"J PB K D E F A B C L M G SC tC uC vC wC TC FC GC xC yC zC UC VC HC 0C IC WC XC YC ZC aC 1C JC bC cC dC eC fC 2C KC gC hC iC jC 3C","16":"sC"},F:{"1":"0 1 2 3 4 5 6 7 8 B C G N O P QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC Q H R OC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 4C 5C 6C 7C FC kC 8C GC","16":"F"},G:{"1":"E 9C lC AD BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD UC VC HC TD IC WC XC YC ZC aC UD JC bC cC dC eC fC VD KC gC hC iC jC","16":"SC"},H:{"1":"WD"},I:{"1":"LC J I ZD aD lC bD cD","16":"XD YD"},J:{"1":"D A"},K:{"1":"A B C H FC kC GC"},L:{"1":"I"},M:{"1":"EC"},N:{"1":"A B"},O:{"1":"HC"},P:{"1":"1 2 3 4 5 6 7 8 J dD eD fD gD hD TC iD jD kD lD mD IC JC KC nD"},Q:{"1":"oD"},R:{"1":"pD"},S:{"1":"qD rD"}},B:1,C:"Node.textContent",D:true};
|
||||
@@ -0,0 +1,109 @@
|
||||
# tiny-invariant 🔬💥
|
||||
|
||||
[](https://travis-ci.org/alexreardon/tiny-invariant)
|
||||
[](https://www.npmjs.com/package/tiny-invariant) [](https://david-dm.org/alexreardon/tiny-invariant)
|
||||

|
||||
[](https://www.npmjs.com/package/tiny-invariant)
|
||||
[](https://www.npmjs.com/package/tiny-invariant)
|
||||
|
||||
A tiny [`invariant`](https://www.npmjs.com/package/invariant) alternative.
|
||||
|
||||
## What is `invariant`?
|
||||
|
||||
An `invariant` function takes a value, and if the value is [falsy](https://github.com/getify/You-Dont-Know-JS/blob/bdbe570600d4e1107d0b131787903ca1c9ec8140/up%20%26%20going/ch2.md#truthy--falsy) then the `invariant` function will throw. If the value is [truthy](https://github.com/getify/You-Dont-Know-JS/blob/bdbe570600d4e1107d0b131787903ca1c9ec8140/up%20%26%20going/ch2.md#truthy--falsy), then the function will not throw.
|
||||
|
||||
```js
|
||||
import invariant from 'tiny-invariant';
|
||||
|
||||
invariant(truthyValue, 'This should not throw!');
|
||||
|
||||
invariant(falsyValue, 'This will throw!');
|
||||
// Error('Invariant violation: This will throw!');
|
||||
```
|
||||
|
||||
You can also provide a function to generate your message, for when your message is expensive to create
|
||||
|
||||
```js
|
||||
import invariant from 'tiny-invariant';
|
||||
|
||||
invariant(value, () => getExpensiveMessage());
|
||||
```
|
||||
|
||||
## Why `tiny-invariant`?
|
||||
|
||||
The [`library: invariant`](https://www.npmjs.com/package/invariant) supports passing in arguments to the `invariant` function in a sprintf style `(condition, format, a, b, c, d, e, f)`. It has internal logic to execute the sprintf substitutions. The sprintf logic is not removed in production builds. `tiny-invariant` has dropped all of the sprintf logic. `tiny-invariant` allows you to pass a single string message. With [template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) there is really no need for a custom message formatter to be built into the library. If you need a multi part message you can just do this:
|
||||
|
||||
```js
|
||||
invariant(condition, `Hello, ${name} - how are you today?`);
|
||||
```
|
||||
|
||||
## Type narrowing
|
||||
|
||||
`tiny-invariant` is useful for correctly narrowing types for `flow` and `typescript`
|
||||
|
||||
```ts
|
||||
const value: Person | null = { name: 'Alex' }; // type of value == 'Person | null'
|
||||
invariant(value, 'Expected value to be a person');
|
||||
// type of value has been narrowed to 'Person'
|
||||
```
|
||||
|
||||
## API: `(condition: any, message?: string | (() => string)) => void`
|
||||
|
||||
- `condition` is required and can be anything
|
||||
- `message` optional `string` or a function that returns a `string` (`() => string`)
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# yarn
|
||||
yarn add tiny-invariant
|
||||
|
||||
# npm
|
||||
npm install tiny-invariant --save
|
||||
```
|
||||
|
||||
## Dropping your `message` for kb savings!
|
||||
|
||||
Big idea: you will want your compiler to convert this code:
|
||||
|
||||
```js
|
||||
invariant(condition, 'My cool message that takes up a lot of kbs');
|
||||
```
|
||||
|
||||
Into this:
|
||||
|
||||
```js
|
||||
if (!condition) {
|
||||
if ('production' !== process.env.NODE_ENV) {
|
||||
invariant(false, 'My cool message that takes up a lot of kbs');
|
||||
} else {
|
||||
invariant(false);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- **Babel**: recommend [`babel-plugin-dev-expression`](https://www.npmjs.com/package/babel-plugin-dev-expression)
|
||||
- **TypeScript**: recommend [`tsdx`](https://github.com/jaredpalmer/tsdx#invariant) (or you can run `babel-plugin-dev-expression` after TypeScript compiling)
|
||||
|
||||
Your bundler can then drop the code in the `"production" !== process.env.NODE_ENV` block for your production builds to end up with this:
|
||||
|
||||
```js
|
||||
if (!condition) {
|
||||
invariant(false);
|
||||
}
|
||||
```
|
||||
|
||||
- rollup: use [rollup-plugin-replace](https://github.com/rollup/rollup-plugin-replace) and set `NODE_ENV` to `production` and then `rollup` will treeshake out the unused code
|
||||
- Webpack: [instructions](https://webpack.js.org/guides/production/#specify-the-mode)
|
||||
|
||||
## Builds
|
||||
|
||||
- We have a `es` (EcmaScript module) build
|
||||
- We have a `cjs` (CommonJS) build
|
||||
- We have a `umd` (Universal module definition) build in case you needed it
|
||||
|
||||
We expect `process.env.NODE_ENV` to be available at module compilation. We cache this value
|
||||
|
||||
## That's it!
|
||||
|
||||
🤘
|
||||
@@ -0,0 +1 @@
|
||||
module.exports={C:{"47":0.00434,"48":0.00434,"52":0.01301,"72":0.00434,"75":0.00868,"78":0.03037,"102":0.00434,"106":0.00868,"108":0.00434,"110":0.01301,"111":0.00434,"115":0.04772,"125":0.06073,"127":0.00434,"128":0.00868,"132":0.00434,"133":0.00868,"134":0.01301,"135":0.23859,"136":0.88061,"137":0.00434,_:"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 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 103 104 105 107 109 112 113 114 116 117 118 119 120 121 122 123 124 126 129 130 131 138 139 140 3.5 3.6"},D:{"31":0.00434,"39":0.00434,"41":0.00434,"42":0.00434,"43":0.00434,"45":0.00434,"47":0.00434,"48":0.00434,"49":0.00434,"50":0.00434,"52":0.00434,"53":0.00434,"56":0.00868,"57":0.00434,"58":0.00434,"69":0.00868,"70":0.00434,"71":0.00434,"76":0.00434,"79":0.02169,"80":0.00434,"81":0.01301,"84":0.00434,"85":0.02169,"86":0.0911,"87":0.02603,"89":0.00434,"91":0.00868,"93":0.00434,"94":0.00434,"95":0.00868,"96":0.00434,"97":0.00868,"98":0.00434,"100":0.02169,"101":0.00434,"102":0.01301,"103":0.01301,"104":0.14749,"105":0.03037,"106":0.07808,"107":0.10411,"108":0.0911,"109":0.81554,"110":0.06073,"111":0.05639,"112":0.06507,"113":0.00434,"114":0.0347,"115":0.02169,"116":0.04338,"117":0.00434,"118":0.02169,"119":0.02169,"120":0.08676,"121":0.01735,"122":0.05206,"123":0.08676,"124":0.10845,"125":0.14315,"126":0.17352,"127":0.10411,"128":0.12146,"129":0.2516,"130":0.23859,"131":0.6854,"132":0.85892,"133":10.14224,"134":16.15905,"135":0.07375,"136":0.09544,_:"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 32 33 34 35 36 37 38 40 44 46 51 54 55 59 60 61 62 63 64 65 66 67 68 72 73 74 75 77 78 83 88 90 92 99 137 138"},F:{"87":0.00434,"88":0.00434,"91":0.00434,"92":0.00868,"93":0.00434,"95":0.00434,"97":0.00434,"116":0.25594,"117":1.33177,_:"9 11 12 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 60 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 89 90 94 96 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 9.5-9.6 10.0-10.1 10.5 10.6 11.1 11.5 11.6 12.1"},B:{"17":0.00434,"18":0.00434,"84":0.00434,"89":0.00434,"90":0.00434,"92":0.02603,"103":0.00434,"106":0.01301,"107":0.00434,"108":0.00868,"109":0.01301,"110":0.01301,"111":0.01735,"112":0.00434,"114":0.00868,"116":0.00434,"117":0.04772,"118":0.00434,"122":0.00868,"124":0.00434,"125":0.00434,"126":0.00434,"127":0.00868,"128":0.00868,"129":0.00868,"130":0.00868,"131":0.03037,"132":0.04338,"133":0.6854,"134":1.84799,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 91 93 94 95 96 97 98 99 100 101 102 104 105 113 115 119 120 121 123"},E:{"14":0.00434,_:"0 4 5 6 7 8 9 10 11 12 13 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 15.1","12.1":0.00434,"13.1":0.03904,"14.1":0.01301,"15.2-15.3":0.00434,"15.4":0.00434,"15.5":0.00868,"15.6":0.07808,"16.0":0.01735,"16.1":0.00868,"16.2":0.00868,"16.3":0.00434,"16.4":0.00434,"16.5":0.00434,"16.6":0.06941,"17.0":0.02603,"17.1":0.06073,"17.2":0.01301,"17.3":0.00434,"17.4":0.04338,"17.5":0.04338,"17.6":0.11279,"18.0":0.01735,"18.1":0.06507,"18.2":0.03037,"18.3":0.4338,"18.4":0.02603},G:{"8":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00355,"5.0-5.1":0,"6.0-6.1":0.01065,"7.0-7.1":0.0071,"8.1-8.4":0,"9.0-9.2":0.00533,"9.3":0.02485,"10.0-10.2":0.00178,"10.3":0.04083,"11.0-11.2":0.18818,"11.3-11.4":0.01243,"12.0-12.1":0.0071,"12.2-12.5":0.17575,"13.0-13.1":0.00355,"13.2":0.00533,"13.3":0.0071,"13.4-13.7":0.02485,"14.0-14.4":0.06214,"14.5-14.8":0.07456,"15.0-15.1":0.04083,"15.2-15.3":0.04083,"15.4":0.04971,"15.5":0.05681,"15.6-15.8":0.69946,"16.0":0.09942,"16.1":0.20416,"16.2":0.10652,"16.3":0.18463,"16.4":0.04083,"16.5":0.07634,"16.6-16.7":0.82906,"17.0":0.04971,"17.1":0.08876,"17.2":0.06746,"17.3":0.09409,"17.4":0.18818,"17.5":0.41897,"17.6-17.7":1.21607,"18.0":0.34086,"18.1":1.11488,"18.2":0.49886,"18.3":10.42628,"18.4":0.15445},P:{"21":0.01036,"22":0.01036,"23":0.01036,"24":0.02071,"25":0.03107,"26":0.03107,"27":0.75607,_:"4 20 5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0","7.2-7.4":0.01036},I:{"0":0.03954,"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.00004},K:{"0":0.44156,_:"10 11 12 11.1 11.5 12.1"},A:{"11":1.93475,_:"6 7 8 9 10 5.5"},S:{_:"2.5 3.0-3.1"},J:{_:"7 10"},N:{_:"10 11"},R:{_:"0"},M:{"0":0.22644},Q:{"14.9":0.14719},O:{"0":0.74159},H:{"0":0},L:{"0":38.38847}};
|
||||
Binary file not shown.
Reference in New Issue
Block a user