brut-js 0.0.20 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.projections.json +10 -0
- package/bin/build +10 -0
- package/bin/ci +5 -0
- package/bin/setup +5 -0
- package/docs/README.md +8 -0
- package/docs/jsdoc-plugins/customElementTag.js +8 -0
- package/docs/jsdoc-theme/publish.js +692 -0
- package/docs/jsdoc-theme/static/scripts/linenumber.js +25 -0
- package/docs/jsdoc-theme/static/scripts/prettify/Apache-License-2.0.txt +202 -0
- package/docs/jsdoc-theme/static/scripts/prettify/lang-css.js +2 -0
- package/docs/jsdoc-theme/static/scripts/prettify/prettify.js +28 -0
- package/docs/jsdoc-theme/static/styles/jsdoc-default.css +327 -0
- package/docs/jsdoc-theme/static/styles/prettify-jsdoc.css +111 -0
- package/docs/jsdoc-theme/static/styles/prettify-tomorrow.css +132 -0
- package/docs/jsdoc-theme/tmpl/augments.tmpl +10 -0
- package/docs/jsdoc-theme/tmpl/container.tmpl +199 -0
- package/docs/jsdoc-theme/tmpl/details.tmpl +143 -0
- package/docs/jsdoc-theme/tmpl/example.tmpl +2 -0
- package/docs/jsdoc-theme/tmpl/examples.tmpl +13 -0
- package/docs/jsdoc-theme/tmpl/exceptions.tmpl +32 -0
- package/docs/jsdoc-theme/tmpl/layout.tmpl +38 -0
- package/docs/jsdoc-theme/tmpl/mainpage.tmpl +14 -0
- package/docs/jsdoc-theme/tmpl/members.tmpl +38 -0
- package/docs/jsdoc-theme/tmpl/method.tmpl +131 -0
- package/docs/jsdoc-theme/tmpl/modifies.tmpl +14 -0
- package/docs/jsdoc-theme/tmpl/params.tmpl +131 -0
- package/docs/jsdoc-theme/tmpl/properties.tmpl +108 -0
- package/docs/jsdoc-theme/tmpl/returns.tmpl +19 -0
- package/docs/jsdoc-theme/tmpl/source.tmpl +8 -0
- package/docs/jsdoc-theme/tmpl/tutorial.tmpl +19 -0
- package/docs/jsdoc-theme/tmpl/type.tmpl +7 -0
- package/docs/jsdoc.config.json +23 -0
- package/docs/node_modules/.package-lock.json +336 -0
- package/docs/node_modules/@babel/helper-string-parser/LICENSE +22 -0
- package/docs/node_modules/@babel/helper-string-parser/README.md +19 -0
- package/docs/node_modules/@babel/helper-string-parser/lib/index.js +295 -0
- package/docs/node_modules/@babel/helper-string-parser/lib/index.js.map +1 -0
- package/docs/node_modules/@babel/helper-string-parser/package.json +31 -0
- package/docs/node_modules/@babel/helper-validator-identifier/LICENSE +22 -0
- package/docs/node_modules/@babel/helper-validator-identifier/README.md +19 -0
- package/docs/node_modules/@babel/helper-validator-identifier/lib/identifier.js +70 -0
- package/docs/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map +1 -0
- package/docs/node_modules/@babel/helper-validator-identifier/lib/index.js +57 -0
- package/docs/node_modules/@babel/helper-validator-identifier/lib/index.js.map +1 -0
- package/docs/node_modules/@babel/helper-validator-identifier/lib/keyword.js +35 -0
- package/docs/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map +1 -0
- package/docs/node_modules/@babel/helper-validator-identifier/package.json +31 -0
- package/docs/node_modules/@babel/parser/CHANGELOG.md +1073 -0
- package/docs/node_modules/@babel/parser/LICENSE +19 -0
- package/docs/node_modules/@babel/parser/README.md +19 -0
- package/docs/node_modules/@babel/parser/bin/babel-parser.js +15 -0
- package/docs/node_modules/@babel/parser/lib/index.js +14504 -0
- package/docs/node_modules/@babel/parser/lib/index.js.map +1 -0
- package/docs/node_modules/@babel/parser/package.json +50 -0
- package/docs/node_modules/@babel/parser/typings/babel-parser.d.ts +235 -0
- package/docs/node_modules/@babel/types/LICENSE +22 -0
- package/docs/node_modules/@babel/types/README.md +19 -0
- package/docs/node_modules/@babel/types/lib/asserts/assertNode.js +16 -0
- package/docs/node_modules/@babel/types/lib/asserts/assertNode.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/asserts/generated/index.js +1243 -0
- package/docs/node_modules/@babel/types/lib/asserts/generated/index.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/ast-types/generated/index.js +3 -0
- package/docs/node_modules/@babel/types/lib/ast-types/generated/index.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +18 -0
- package/docs/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +31 -0
- package/docs/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/builders/generated/index.js +29 -0
- package/docs/node_modules/@babel/types/lib/builders/generated/index.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/builders/generated/lowercase.js +2886 -0
- package/docs/node_modules/@babel/types/lib/builders/generated/lowercase.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/builders/generated/uppercase.js +273 -0
- package/docs/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/builders/productions.js +12 -0
- package/docs/node_modules/@babel/types/lib/builders/productions.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/builders/react/buildChildren.js +24 -0
- package/docs/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +22 -0
- package/docs/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/builders/validateNode.js +21 -0
- package/docs/node_modules/@babel/types/lib/builders/validateNode.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/clone/clone.js +12 -0
- package/docs/node_modules/@babel/types/lib/clone/clone.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/clone/cloneDeep.js +12 -0
- package/docs/node_modules/@babel/types/lib/clone/cloneDeep.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +12 -0
- package/docs/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/clone/cloneNode.js +107 -0
- package/docs/node_modules/@babel/types/lib/clone/cloneNode.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +12 -0
- package/docs/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/comments/addComment.js +15 -0
- package/docs/node_modules/@babel/types/lib/comments/addComment.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/comments/addComments.js +22 -0
- package/docs/node_modules/@babel/types/lib/comments/addComments.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/comments/inheritInnerComments.js +12 -0
- package/docs/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +12 -0
- package/docs/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +12 -0
- package/docs/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/comments/inheritsComments.js +17 -0
- package/docs/node_modules/@babel/types/lib/comments/inheritsComments.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/comments/removeComments.js +15 -0
- package/docs/node_modules/@babel/types/lib/comments/removeComments.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/constants/generated/index.js +59 -0
- package/docs/node_modules/@babel/types/lib/constants/generated/index.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/constants/index.js +33 -0
- package/docs/node_modules/@babel/types/lib/constants/index.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/ensureBlock.js +14 -0
- package/docs/node_modules/@babel/types/lib/converters/ensureBlock.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +66 -0
- package/docs/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +14 -0
- package/docs/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/toBlock.js +29 -0
- package/docs/node_modules/@babel/types/lib/converters/toBlock.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/toComputedKey.js +14 -0
- package/docs/node_modules/@babel/types/lib/converters/toComputedKey.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/toExpression.js +28 -0
- package/docs/node_modules/@babel/types/lib/converters/toExpression.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/toIdentifier.js +25 -0
- package/docs/node_modules/@babel/types/lib/converters/toIdentifier.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/toKeyAlias.js +38 -0
- package/docs/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/toSequenceExpression.js +20 -0
- package/docs/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/toStatement.js +39 -0
- package/docs/node_modules/@babel/types/lib/converters/toStatement.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/converters/valueToNode.js +85 -0
- package/docs/node_modules/@babel/types/lib/converters/valueToNode.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/definitions/core.js +1664 -0
- package/docs/node_modules/@babel/types/lib/definitions/core.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/definitions/deprecated-aliases.js +11 -0
- package/docs/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/definitions/experimental.js +123 -0
- package/docs/node_modules/@babel/types/lib/definitions/experimental.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/definitions/flow.js +495 -0
- package/docs/node_modules/@babel/types/lib/definitions/flow.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/definitions/index.js +100 -0
- package/docs/node_modules/@babel/types/lib/definitions/index.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/definitions/jsx.js +157 -0
- package/docs/node_modules/@babel/types/lib/definitions/jsx.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/definitions/misc.js +33 -0
- package/docs/node_modules/@babel/types/lib/definitions/misc.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/definitions/placeholders.js +27 -0
- package/docs/node_modules/@babel/types/lib/definitions/placeholders.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/definitions/typescript.js +524 -0
- package/docs/node_modules/@babel/types/lib/definitions/typescript.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/definitions/utils.js +292 -0
- package/docs/node_modules/@babel/types/lib/definitions/utils.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/index-legacy.d.ts +2786 -0
- package/docs/node_modules/@babel/types/lib/index.d.ts +3295 -0
- package/docs/node_modules/@babel/types/lib/index.js +584 -0
- package/docs/node_modules/@babel/types/lib/index.js.flow +2640 -0
- package/docs/node_modules/@babel/types/lib/index.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +15 -0
- package/docs/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +65 -0
- package/docs/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/modifications/inherits.js +28 -0
- package/docs/node_modules/@babel/types/lib/modifications/inherits.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +17 -0
- package/docs/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/modifications/removeProperties.js +24 -0
- package/docs/node_modules/@babel/types/lib/modifications/removeProperties.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +14 -0
- package/docs/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +66 -0
- package/docs/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js +48 -0
- package/docs/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +102 -0
- package/docs/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/retrievers/getFunctionName.js +63 -0
- package/docs/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +13 -0
- package/docs/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/traverse/traverse.js +50 -0
- package/docs/node_modules/@babel/types/lib/traverse/traverse.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/traverse/traverseFast.js +40 -0
- package/docs/node_modules/@babel/types/lib/traverse/traverseFast.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/utils/deprecationWarning.js +44 -0
- package/docs/node_modules/@babel/types/lib/utils/deprecationWarning.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/utils/inherit.js +13 -0
- package/docs/node_modules/@babel/types/lib/utils/inherit.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +40 -0
- package/docs/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/utils/shallowEqual.js +17 -0
- package/docs/node_modules/@babel/types/lib/utils/shallowEqual.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +13 -0
- package/docs/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/generated/index.js +2770 -0
- package/docs/node_modules/@babel/types/lib/validators/generated/index.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/is.js +27 -0
- package/docs/node_modules/@babel/types/lib/validators/is.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isBinding.js +27 -0
- package/docs/node_modules/@babel/types/lib/validators/isBinding.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isBlockScoped.js +13 -0
- package/docs/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isImmutable.js +21 -0
- package/docs/node_modules/@babel/types/lib/validators/isImmutable.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isLet.js +17 -0
- package/docs/node_modules/@babel/types/lib/validators/isLet.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isNode.js +12 -0
- package/docs/node_modules/@babel/types/lib/validators/isNode.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +57 -0
- package/docs/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isPlaceholderType.js +15 -0
- package/docs/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isReferenced.js +96 -0
- package/docs/node_modules/@babel/types/lib/validators/isReferenced.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isScope.js +18 -0
- package/docs/node_modules/@babel/types/lib/validators/isScope.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +14 -0
- package/docs/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isType.js +17 -0
- package/docs/node_modules/@babel/types/lib/validators/isType.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +13 -0
- package/docs/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isValidIdentifier.js +18 -0
- package/docs/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/isVar.js +19 -0
- package/docs/node_modules/@babel/types/lib/validators/isVar.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/matchesPattern.js +36 -0
- package/docs/node_modules/@babel/types/lib/validators/matchesPattern.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/react/isCompatTag.js +11 -0
- package/docs/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/react/isReactComponent.js +11 -0
- package/docs/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +1 -0
- package/docs/node_modules/@babel/types/lib/validators/validate.js +42 -0
- package/docs/node_modules/@babel/types/lib/validators/validate.js.map +1 -0
- package/docs/node_modules/@babel/types/package.json +39 -0
- package/docs/node_modules/@jsdoc/salty/LICENSE +202 -0
- package/docs/node_modules/@jsdoc/salty/README.md +185 -0
- package/docs/node_modules/@jsdoc/salty/index.js +20 -0
- package/docs/node_modules/@jsdoc/salty/lib/salty.js +257 -0
- package/docs/node_modules/@jsdoc/salty/package.json +32 -0
- package/docs/node_modules/@types/linkify-it/LICENSE +21 -0
- package/docs/node_modules/@types/linkify-it/README.md +15 -0
- package/docs/node_modules/@types/linkify-it/build/index.cjs.d.ts +178 -0
- package/docs/node_modules/@types/linkify-it/index.d.mts +174 -0
- package/docs/node_modules/@types/linkify-it/index.d.ts +3 -0
- package/docs/node_modules/@types/linkify-it/package.json +50 -0
- package/docs/node_modules/@types/markdown-it/LICENSE +21 -0
- package/docs/node_modules/@types/markdown-it/README.md +15 -0
- package/docs/node_modules/@types/markdown-it/dist/index.cjs.d.ts +1236 -0
- package/docs/node_modules/@types/markdown-it/dist/markdown-it.d.ts +5 -0
- package/docs/node_modules/@types/markdown-it/dist/markdown-it.min.d.ts +5 -0
- package/docs/node_modules/@types/markdown-it/index.d.mts +1 -0
- package/docs/node_modules/@types/markdown-it/index.d.ts +3 -0
- package/docs/node_modules/@types/markdown-it/lib/common/html_blocks.d.mts +7 -0
- package/docs/node_modules/@types/markdown-it/lib/common/html_re.d.mts +2 -0
- package/docs/node_modules/@types/markdown-it/lib/common/utils.d.mts +62 -0
- package/docs/node_modules/@types/markdown-it/lib/helpers/index.d.mts +5 -0
- package/docs/node_modules/@types/markdown-it/lib/helpers/parse_link_destination.d.mts +7 -0
- package/docs/node_modules/@types/markdown-it/lib/helpers/parse_link_label.d.mts +3 -0
- package/docs/node_modules/@types/markdown-it/lib/helpers/parse_link_title.d.mts +29 -0
- package/docs/node_modules/@types/markdown-it/lib/index.d.mts +404 -0
- package/docs/node_modules/@types/markdown-it/lib/parser_block.d.mts +25 -0
- package/docs/node_modules/@types/markdown-it/lib/parser_core.d.mts +18 -0
- package/docs/node_modules/@types/markdown-it/lib/parser_inline.d.mts +38 -0
- package/docs/node_modules/@types/markdown-it/lib/renderer.d.mts +96 -0
- package/docs/node_modules/@types/markdown-it/lib/ruler.d.mts +158 -0
- package/docs/node_modules/@types/markdown-it/lib/rules_block/state_block.d.mts +124 -0
- package/docs/node_modules/@types/markdown-it/lib/rules_core/state_core.d.mts +18 -0
- package/docs/node_modules/@types/markdown-it/lib/rules_inline/state_inline.d.mts +73 -0
- package/docs/node_modules/@types/markdown-it/lib/token.d.mts +108 -0
- package/docs/node_modules/@types/markdown-it/package.json +54 -0
- package/docs/node_modules/@types/mdurl/LICENSE +21 -0
- package/docs/node_modules/@types/mdurl/README.md +15 -0
- package/docs/node_modules/@types/mdurl/build/index.cjs.d.ts +52 -0
- package/docs/node_modules/@types/mdurl/index.d.mts +6 -0
- package/docs/node_modules/@types/mdurl/index.d.ts +3 -0
- package/docs/node_modules/@types/mdurl/lib/decode.d.mts +10 -0
- package/docs/node_modules/@types/mdurl/lib/encode.d.mts +15 -0
- package/docs/node_modules/@types/mdurl/lib/format.d.mts +3 -0
- package/docs/node_modules/@types/mdurl/lib/parse.d.mts +18 -0
- package/docs/node_modules/@types/mdurl/package.json +36 -0
- package/docs/node_modules/argparse/CHANGELOG.md +216 -0
- package/docs/node_modules/argparse/LICENSE +254 -0
- package/docs/node_modules/argparse/README.md +84 -0
- package/docs/node_modules/argparse/argparse.js +3707 -0
- package/docs/node_modules/argparse/lib/sub.js +67 -0
- package/docs/node_modules/argparse/lib/textwrap.js +440 -0
- package/docs/node_modules/argparse/package.json +31 -0
- package/docs/node_modules/bluebird/LICENSE +21 -0
- package/docs/node_modules/bluebird/README.md +57 -0
- package/docs/node_modules/bluebird/changelog.md +1 -0
- package/docs/node_modules/bluebird/js/browser/bluebird.core.js +3914 -0
- package/docs/node_modules/bluebird/js/browser/bluebird.core.min.js +31 -0
- package/docs/node_modules/bluebird/js/browser/bluebird.js +5778 -0
- package/docs/node_modules/bluebird/js/browser/bluebird.min.js +31 -0
- package/docs/node_modules/bluebird/js/release/any.js +21 -0
- package/docs/node_modules/bluebird/js/release/assert.js +55 -0
- package/docs/node_modules/bluebird/js/release/async.js +120 -0
- package/docs/node_modules/bluebird/js/release/bind.js +67 -0
- package/docs/node_modules/bluebird/js/release/bluebird.js +11 -0
- package/docs/node_modules/bluebird/js/release/call_get.js +123 -0
- package/docs/node_modules/bluebird/js/release/cancel.js +129 -0
- package/docs/node_modules/bluebird/js/release/catch_filter.js +42 -0
- package/docs/node_modules/bluebird/js/release/context.js +69 -0
- package/docs/node_modules/bluebird/js/release/debuggability.js +1009 -0
- package/docs/node_modules/bluebird/js/release/direct_resolve.js +46 -0
- package/docs/node_modules/bluebird/js/release/each.js +30 -0
- package/docs/node_modules/bluebird/js/release/errors.js +116 -0
- package/docs/node_modules/bluebird/js/release/es5.js +80 -0
- package/docs/node_modules/bluebird/js/release/filter.js +12 -0
- package/docs/node_modules/bluebird/js/release/finally.js +146 -0
- package/docs/node_modules/bluebird/js/release/generators.js +223 -0
- package/docs/node_modules/bluebird/js/release/join.js +165 -0
- package/docs/node_modules/bluebird/js/release/map.js +175 -0
- package/docs/node_modules/bluebird/js/release/method.js +55 -0
- package/docs/node_modules/bluebird/js/release/nodeback.js +51 -0
- package/docs/node_modules/bluebird/js/release/nodeify.js +58 -0
- package/docs/node_modules/bluebird/js/release/promise.js +819 -0
- package/docs/node_modules/bluebird/js/release/promise_array.js +186 -0
- package/docs/node_modules/bluebird/js/release/promisify.js +314 -0
- package/docs/node_modules/bluebird/js/release/props.js +118 -0
- package/docs/node_modules/bluebird/js/release/queue.js +73 -0
- package/docs/node_modules/bluebird/js/release/race.js +49 -0
- package/docs/node_modules/bluebird/js/release/reduce.js +183 -0
- package/docs/node_modules/bluebird/js/release/schedule.js +62 -0
- package/docs/node_modules/bluebird/js/release/settle.js +47 -0
- package/docs/node_modules/bluebird/js/release/some.js +148 -0
- package/docs/node_modules/bluebird/js/release/synchronous_inspection.js +103 -0
- package/docs/node_modules/bluebird/js/release/thenables.js +86 -0
- package/docs/node_modules/bluebird/js/release/timers.js +93 -0
- package/docs/node_modules/bluebird/js/release/using.js +226 -0
- package/docs/node_modules/bluebird/js/release/util.js +421 -0
- package/docs/node_modules/bluebird/package.json +78 -0
- package/docs/node_modules/catharsis/LICENSE +17 -0
- package/docs/node_modules/catharsis/README.md +393 -0
- package/docs/node_modules/catharsis/bin/parse.js +55 -0
- package/docs/node_modules/catharsis/catharsis.js +169 -0
- package/docs/node_modules/catharsis/lib/describe.js +563 -0
- package/docs/node_modules/catharsis/lib/parser.js +5776 -0
- package/docs/node_modules/catharsis/lib/schema.js +72 -0
- package/docs/node_modules/catharsis/lib/stringify.js +277 -0
- package/docs/node_modules/catharsis/lib/types.js +22 -0
- package/docs/node_modules/catharsis/package.json +30 -0
- package/docs/node_modules/catharsis/res/en.json +92 -0
- package/docs/node_modules/entities/LICENSE +11 -0
- package/docs/node_modules/entities/lib/decode.d.ts +211 -0
- package/docs/node_modules/entities/lib/decode.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/decode.js +536 -0
- package/docs/node_modules/entities/lib/decode.js.map +1 -0
- package/docs/node_modules/entities/lib/decode_codepoint.d.ts +19 -0
- package/docs/node_modules/entities/lib/decode_codepoint.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/decode_codepoint.js +76 -0
- package/docs/node_modules/entities/lib/decode_codepoint.js.map +1 -0
- package/docs/node_modules/entities/lib/encode.d.ts +22 -0
- package/docs/node_modules/entities/lib/encode.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/encode.js +77 -0
- package/docs/node_modules/entities/lib/encode.js.map +1 -0
- package/docs/node_modules/entities/lib/escape.d.ts +43 -0
- package/docs/node_modules/entities/lib/escape.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/escape.js +122 -0
- package/docs/node_modules/entities/lib/escape.js.map +1 -0
- package/docs/node_modules/entities/lib/esm/decode.d.ts +211 -0
- package/docs/node_modules/entities/lib/esm/decode.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/esm/decode.js +496 -0
- package/docs/node_modules/entities/lib/esm/decode.js.map +1 -0
- package/docs/node_modules/entities/lib/esm/decode_codepoint.d.ts +19 -0
- package/docs/node_modules/entities/lib/esm/decode_codepoint.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/esm/decode_codepoint.js +71 -0
- package/docs/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -0
- package/docs/node_modules/entities/lib/esm/encode.d.ts +22 -0
- package/docs/node_modules/entities/lib/esm/encode.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/esm/encode.js +69 -0
- package/docs/node_modules/entities/lib/esm/encode.js.map +1 -0
- package/docs/node_modules/entities/lib/esm/escape.d.ts +43 -0
- package/docs/node_modules/entities/lib/esm/escape.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/esm/escape.js +116 -0
- package/docs/node_modules/entities/lib/esm/escape.js.map +1 -0
- package/docs/node_modules/entities/lib/esm/generated/decode-data-html.d.ts +3 -0
- package/docs/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/esm/generated/decode-data-html.js +7 -0
- package/docs/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -0
- package/docs/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts +3 -0
- package/docs/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/esm/generated/decode-data-xml.js +7 -0
- package/docs/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -0
- package/docs/node_modules/entities/lib/esm/generated/encode-html.d.ts +8 -0
- package/docs/node_modules/entities/lib/esm/generated/encode-html.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/esm/generated/encode-html.js +10 -0
- package/docs/node_modules/entities/lib/esm/generated/encode-html.js.map +1 -0
- package/docs/node_modules/entities/lib/esm/index.d.ts +96 -0
- package/docs/node_modules/entities/lib/esm/index.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/esm/index.js +99 -0
- package/docs/node_modules/entities/lib/esm/index.js.map +1 -0
- package/docs/node_modules/entities/lib/esm/package.json +1 -0
- package/docs/node_modules/entities/lib/generated/decode-data-html.d.ts +3 -0
- package/docs/node_modules/entities/lib/generated/decode-data-html.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/generated/decode-data-html.js +9 -0
- package/docs/node_modules/entities/lib/generated/decode-data-html.js.map +1 -0
- package/docs/node_modules/entities/lib/generated/decode-data-xml.d.ts +3 -0
- package/docs/node_modules/entities/lib/generated/decode-data-xml.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/generated/decode-data-xml.js +9 -0
- package/docs/node_modules/entities/lib/generated/decode-data-xml.js.map +1 -0
- package/docs/node_modules/entities/lib/generated/encode-html.d.ts +8 -0
- package/docs/node_modules/entities/lib/generated/encode-html.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/generated/encode-html.js +12 -0
- package/docs/node_modules/entities/lib/generated/encode-html.js.map +1 -0
- package/docs/node_modules/entities/lib/index.d.ts +96 -0
- package/docs/node_modules/entities/lib/index.d.ts.map +1 -0
- package/docs/node_modules/entities/lib/index.js +126 -0
- package/docs/node_modules/entities/lib/index.js.map +1 -0
- package/docs/node_modules/entities/package.json +90 -0
- package/docs/node_modules/entities/readme.md +122 -0
- package/docs/node_modules/escape-string-regexp/index.d.ts +18 -0
- package/docs/node_modules/escape-string-regexp/index.js +11 -0
- package/docs/node_modules/escape-string-regexp/license +9 -0
- package/docs/node_modules/escape-string-regexp/package.json +43 -0
- package/docs/node_modules/escape-string-regexp/readme.md +29 -0
- package/docs/node_modules/graceful-fs/LICENSE +15 -0
- package/docs/node_modules/graceful-fs/README.md +143 -0
- package/docs/node_modules/graceful-fs/clone.js +23 -0
- package/docs/node_modules/graceful-fs/graceful-fs.js +448 -0
- package/docs/node_modules/graceful-fs/legacy-streams.js +118 -0
- package/docs/node_modules/graceful-fs/package.json +53 -0
- package/docs/node_modules/graceful-fs/polyfills.js +355 -0
- package/docs/node_modules/js2xmlparser/CHANGES.md +133 -0
- package/docs/node_modules/js2xmlparser/LICENSE +201 -0
- package/docs/node_modules/js2xmlparser/NOTICE +10 -0
- package/docs/node_modules/js2xmlparser/README.md +155 -0
- package/docs/node_modules/js2xmlparser/lib/main.d.ts +49 -0
- package/docs/node_modules/js2xmlparser/lib/main.js +282 -0
- package/docs/node_modules/js2xmlparser/lib/options.d.ts +477 -0
- package/docs/node_modules/js2xmlparser/lib/options.js +155 -0
- package/docs/node_modules/js2xmlparser/lib/utils.d.ts +32 -0
- package/docs/node_modules/js2xmlparser/lib/utils.js +67 -0
- package/docs/node_modules/js2xmlparser/package.json +65 -0
- package/docs/node_modules/jsdoc/.prettierignore +1 -0
- package/docs/node_modules/jsdoc/.vscode/launch.json +17 -0
- package/docs/node_modules/jsdoc/Apache_License_2.0.txt +202 -0
- package/docs/node_modules/jsdoc/CHANGES.md +904 -0
- package/docs/node_modules/jsdoc/LICENSE.md +102 -0
- package/docs/node_modules/jsdoc/README.md +93 -0
- package/docs/node_modules/jsdoc/cli.js +465 -0
- package/docs/node_modules/jsdoc/conf.json.EXAMPLE +17 -0
- package/docs/node_modules/jsdoc/jsdoc.js +94 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/app.js +19 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/augment.js +608 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/borrow.js +52 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/config.js +74 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/doclet.js +562 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/env.js +77 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/fs.js +109 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/name.js +595 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/opts/argparser.js +306 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/opts/args.js +82 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/package.js +257 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/path.js +169 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/plugins.js +35 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/readme.js +24 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/schema.js +664 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/src/astbuilder.js +72 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/src/astnode.js +555 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/src/filter.js +63 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/src/handlers.js +372 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/src/parser.js +673 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/src/scanner.js +62 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/src/syntax.js +96 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/src/visitor.js +859 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/src/walker.js +704 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/tag/dictionary/definitions.js +1089 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/tag/dictionary.js +120 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/tag/inline.js +135 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/tag/type.js +306 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/tag/validator.js +51 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/tag.js +198 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/template.js +80 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/tutorial/resolver.js +183 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/tutorial.js +153 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/util/cast.js +95 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/util/doop.js +79 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/util/dumper.js +146 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/util/error.js +32 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/util/logger.js +254 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/util/markdown.js +282 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/util/stripbom.js +14 -0
- package/docs/node_modules/jsdoc/lib/jsdoc/util/templateHelper.js +1025 -0
- package/docs/node_modules/jsdoc/package.json +65 -0
- package/docs/node_modules/jsdoc/plugins/commentConvert.js +21 -0
- package/docs/node_modules/jsdoc/plugins/commentsOnly.js +17 -0
- package/docs/node_modules/jsdoc/plugins/escapeHtml.js +18 -0
- package/docs/node_modules/jsdoc/plugins/eventDumper.js +97 -0
- package/docs/node_modules/jsdoc/plugins/markdown.js +88 -0
- package/docs/node_modules/jsdoc/plugins/overloadHelper.js +181 -0
- package/docs/node_modules/jsdoc/plugins/partial.js +30 -0
- package/docs/node_modules/jsdoc/plugins/railsTemplate.js +19 -0
- package/docs/node_modules/jsdoc/plugins/shout.js +15 -0
- package/docs/node_modules/jsdoc/plugins/sourcetag.js +49 -0
- package/docs/node_modules/jsdoc/plugins/summarize.js +58 -0
- package/docs/node_modules/jsdoc/plugins/test/fixtures/markdown.js +31 -0
- package/docs/node_modules/jsdoc/plugins/test/fixtures/overloadHelper.js +50 -0
- package/docs/node_modules/jsdoc/plugins/test/fixtures/railsTemplate.js.erb +19 -0
- package/docs/node_modules/jsdoc/plugins/test/fixtures/underscore.js +22 -0
- package/docs/node_modules/jsdoc/plugins/test/specs/commentConvert.js +20 -0
- package/docs/node_modules/jsdoc/plugins/test/specs/escapeHtml.js +20 -0
- package/docs/node_modules/jsdoc/plugins/test/specs/markdown.js +60 -0
- package/docs/node_modules/jsdoc/plugins/test/specs/overloadHelper.js +102 -0
- package/docs/node_modules/jsdoc/plugins/test/specs/railsTemplate.js +19 -0
- package/docs/node_modules/jsdoc/plugins/test/specs/shout.js +20 -0
- package/docs/node_modules/jsdoc/plugins/test/specs/sourcetag.js +22 -0
- package/docs/node_modules/jsdoc/plugins/test/specs/summarize.js +112 -0
- package/docs/node_modules/jsdoc/plugins/test/specs/underscore.js +35 -0
- package/docs/node_modules/jsdoc/plugins/underscore.js +16 -0
- package/docs/node_modules/jsdoc/templates/README.md +27 -0
- package/docs/node_modules/jsdoc/templates/default/README.md +9 -0
- package/docs/node_modules/jsdoc/templates/default/publish.js +692 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.svg +1830 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-BoldItalic-webfont.svg +1830 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Italic-webfont.svg +1830 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.eot +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.svg +1831 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Light-webfont.woff +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.svg +1835 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Regular-webfont.svg +1831 -0
- package/docs/node_modules/jsdoc/templates/default/static/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/docs/node_modules/jsdoc/templates/default/static/scripts/linenumber.js +25 -0
- package/docs/node_modules/jsdoc/templates/default/static/scripts/prettify/Apache-License-2.0.txt +202 -0
- package/docs/node_modules/jsdoc/templates/default/static/scripts/prettify/lang-css.js +2 -0
- package/docs/node_modules/jsdoc/templates/default/static/scripts/prettify/prettify.js +28 -0
- package/docs/node_modules/jsdoc/templates/default/static/styles/jsdoc-default.css +358 -0
- package/docs/node_modules/jsdoc/templates/default/static/styles/prettify-jsdoc.css +111 -0
- package/docs/node_modules/jsdoc/templates/default/static/styles/prettify-tomorrow.css +132 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/augments.tmpl +10 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/container.tmpl +196 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/details.tmpl +143 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/example.tmpl +2 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/examples.tmpl +13 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/exceptions.tmpl +32 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/layout.tmpl +38 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/mainpage.tmpl +14 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/members.tmpl +38 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/method.tmpl +131 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/modifies.tmpl +14 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/params.tmpl +131 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/properties.tmpl +108 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/returns.tmpl +19 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/source.tmpl +8 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/tutorial.tmpl +19 -0
- package/docs/node_modules/jsdoc/templates/default/tmpl/type.tmpl +7 -0
- package/docs/node_modules/jsdoc/templates/haruki/README.md +39 -0
- package/docs/node_modules/jsdoc/templates/haruki/publish.js +224 -0
- package/docs/node_modules/jsdoc/templates/silent/README.md +11 -0
- package/docs/node_modules/jsdoc/templates/silent/publish.js +7 -0
- package/docs/node_modules/klaw/CHANGELOG.md +68 -0
- package/docs/node_modules/klaw/LICENSE +15 -0
- package/docs/node_modules/klaw/README.md +253 -0
- package/docs/node_modules/klaw/package.json +40 -0
- package/docs/node_modules/klaw/src/index.js +64 -0
- package/docs/node_modules/linkify-it/LICENSE +22 -0
- package/docs/node_modules/linkify-it/README.md +196 -0
- package/docs/node_modules/linkify-it/build/index.cjs.js +832 -0
- package/docs/node_modules/linkify-it/index.mjs +642 -0
- package/docs/node_modules/linkify-it/lib/re.mjs +189 -0
- package/docs/node_modules/linkify-it/package.json +58 -0
- package/docs/node_modules/lodash/LICENSE +47 -0
- package/docs/node_modules/lodash/README.md +39 -0
- package/docs/node_modules/lodash/_DataView.js +7 -0
- package/docs/node_modules/lodash/_Hash.js +32 -0
- package/docs/node_modules/lodash/_LazyWrapper.js +28 -0
- package/docs/node_modules/lodash/_ListCache.js +32 -0
- package/docs/node_modules/lodash/_LodashWrapper.js +22 -0
- package/docs/node_modules/lodash/_Map.js +7 -0
- package/docs/node_modules/lodash/_MapCache.js +32 -0
- package/docs/node_modules/lodash/_Promise.js +7 -0
- package/docs/node_modules/lodash/_Set.js +7 -0
- package/docs/node_modules/lodash/_SetCache.js +27 -0
- package/docs/node_modules/lodash/_Stack.js +27 -0
- package/docs/node_modules/lodash/_Symbol.js +6 -0
- package/docs/node_modules/lodash/_Uint8Array.js +6 -0
- package/docs/node_modules/lodash/_WeakMap.js +7 -0
- package/docs/node_modules/lodash/_apply.js +21 -0
- package/docs/node_modules/lodash/_arrayAggregator.js +22 -0
- package/docs/node_modules/lodash/_arrayEach.js +22 -0
- package/docs/node_modules/lodash/_arrayEachRight.js +21 -0
- package/docs/node_modules/lodash/_arrayEvery.js +23 -0
- package/docs/node_modules/lodash/_arrayFilter.js +25 -0
- package/docs/node_modules/lodash/_arrayIncludes.js +17 -0
- package/docs/node_modules/lodash/_arrayIncludesWith.js +22 -0
- package/docs/node_modules/lodash/_arrayLikeKeys.js +49 -0
- package/docs/node_modules/lodash/_arrayMap.js +21 -0
- package/docs/node_modules/lodash/_arrayPush.js +20 -0
- package/docs/node_modules/lodash/_arrayReduce.js +26 -0
- package/docs/node_modules/lodash/_arrayReduceRight.js +24 -0
- package/docs/node_modules/lodash/_arraySample.js +15 -0
- package/docs/node_modules/lodash/_arraySampleSize.js +17 -0
- package/docs/node_modules/lodash/_arrayShuffle.js +15 -0
- package/docs/node_modules/lodash/_arraySome.js +23 -0
- package/docs/node_modules/lodash/_asciiSize.js +12 -0
- package/docs/node_modules/lodash/_asciiToArray.js +12 -0
- package/docs/node_modules/lodash/_asciiWords.js +15 -0
- package/docs/node_modules/lodash/_assignMergeValue.js +20 -0
- package/docs/node_modules/lodash/_assignValue.js +28 -0
- package/docs/node_modules/lodash/_assocIndexOf.js +21 -0
- package/docs/node_modules/lodash/_baseAggregator.js +21 -0
- package/docs/node_modules/lodash/_baseAssign.js +17 -0
- package/docs/node_modules/lodash/_baseAssignIn.js +17 -0
- package/docs/node_modules/lodash/_baseAssignValue.js +25 -0
- package/docs/node_modules/lodash/_baseAt.js +23 -0
- package/docs/node_modules/lodash/_baseClamp.js +22 -0
- package/docs/node_modules/lodash/_baseClone.js +166 -0
- package/docs/node_modules/lodash/_baseConforms.js +18 -0
- package/docs/node_modules/lodash/_baseConformsTo.js +27 -0
- package/docs/node_modules/lodash/_baseCreate.js +30 -0
- package/docs/node_modules/lodash/_baseDelay.js +21 -0
- package/docs/node_modules/lodash/_baseDifference.js +67 -0
- package/docs/node_modules/lodash/_baseEach.js +14 -0
- package/docs/node_modules/lodash/_baseEachRight.js +14 -0
- package/docs/node_modules/lodash/_baseEvery.js +21 -0
- package/docs/node_modules/lodash/_baseExtremum.js +32 -0
- package/docs/node_modules/lodash/_baseFill.js +32 -0
- package/docs/node_modules/lodash/_baseFilter.js +21 -0
- package/docs/node_modules/lodash/_baseFindIndex.js +24 -0
- package/docs/node_modules/lodash/_baseFindKey.js +23 -0
- package/docs/node_modules/lodash/_baseFlatten.js +38 -0
- package/docs/node_modules/lodash/_baseFor.js +16 -0
- package/docs/node_modules/lodash/_baseForOwn.js +16 -0
- package/docs/node_modules/lodash/_baseForOwnRight.js +16 -0
- package/docs/node_modules/lodash/_baseForRight.js +15 -0
- package/docs/node_modules/lodash/_baseFunctions.js +19 -0
- package/docs/node_modules/lodash/_baseGet.js +24 -0
- package/docs/node_modules/lodash/_baseGetAllKeys.js +20 -0
- package/docs/node_modules/lodash/_baseGetTag.js +28 -0
- package/docs/node_modules/lodash/_baseGt.js +14 -0
- package/docs/node_modules/lodash/_baseHas.js +19 -0
- package/docs/node_modules/lodash/_baseHasIn.js +13 -0
- package/docs/node_modules/lodash/_baseInRange.js +18 -0
- package/docs/node_modules/lodash/_baseIndexOf.js +20 -0
- package/docs/node_modules/lodash/_baseIndexOfWith.js +23 -0
- package/docs/node_modules/lodash/_baseIntersection.js +74 -0
- package/docs/node_modules/lodash/_baseInverter.js +21 -0
- package/docs/node_modules/lodash/_baseInvoke.js +24 -0
- package/docs/node_modules/lodash/_baseIsArguments.js +18 -0
- package/docs/node_modules/lodash/_baseIsArrayBuffer.js +17 -0
- package/docs/node_modules/lodash/_baseIsDate.js +18 -0
- package/docs/node_modules/lodash/_baseIsEqual.js +28 -0
- package/docs/node_modules/lodash/_baseIsEqualDeep.js +83 -0
- package/docs/node_modules/lodash/_baseIsMap.js +18 -0
- package/docs/node_modules/lodash/_baseIsMatch.js +62 -0
- package/docs/node_modules/lodash/_baseIsNaN.js +12 -0
- package/docs/node_modules/lodash/_baseIsNative.js +47 -0
- package/docs/node_modules/lodash/_baseIsRegExp.js +18 -0
- package/docs/node_modules/lodash/_baseIsSet.js +18 -0
- package/docs/node_modules/lodash/_baseIsTypedArray.js +60 -0
- package/docs/node_modules/lodash/_baseIteratee.js +31 -0
- package/docs/node_modules/lodash/_baseKeys.js +30 -0
- package/docs/node_modules/lodash/_baseKeysIn.js +33 -0
- package/docs/node_modules/lodash/_baseLodash.js +10 -0
- package/docs/node_modules/lodash/_baseLt.js +14 -0
- package/docs/node_modules/lodash/_baseMap.js +22 -0
- package/docs/node_modules/lodash/_baseMatches.js +22 -0
- package/docs/node_modules/lodash/_baseMatchesProperty.js +33 -0
- package/docs/node_modules/lodash/_baseMean.js +20 -0
- package/docs/node_modules/lodash/_baseMerge.js +42 -0
- package/docs/node_modules/lodash/_baseMergeDeep.js +94 -0
- package/docs/node_modules/lodash/_baseNth.js +20 -0
- package/docs/node_modules/lodash/_baseOrderBy.js +49 -0
- package/docs/node_modules/lodash/_basePick.js +19 -0
- package/docs/node_modules/lodash/_basePickBy.js +30 -0
- package/docs/node_modules/lodash/_baseProperty.js +14 -0
- package/docs/node_modules/lodash/_basePropertyDeep.js +16 -0
- package/docs/node_modules/lodash/_basePropertyOf.js +14 -0
- package/docs/node_modules/lodash/_basePullAll.js +51 -0
- package/docs/node_modules/lodash/_basePullAt.js +37 -0
- package/docs/node_modules/lodash/_baseRandom.js +18 -0
- package/docs/node_modules/lodash/_baseRange.js +28 -0
- package/docs/node_modules/lodash/_baseReduce.js +23 -0
- package/docs/node_modules/lodash/_baseRepeat.js +35 -0
- package/docs/node_modules/lodash/_baseRest.js +17 -0
- package/docs/node_modules/lodash/_baseSample.js +15 -0
- package/docs/node_modules/lodash/_baseSampleSize.js +18 -0
- package/docs/node_modules/lodash/_baseSet.js +51 -0
- package/docs/node_modules/lodash/_baseSetData.js +17 -0
- package/docs/node_modules/lodash/_baseSetToString.js +22 -0
- package/docs/node_modules/lodash/_baseShuffle.js +15 -0
- package/docs/node_modules/lodash/_baseSlice.js +31 -0
- package/docs/node_modules/lodash/_baseSome.js +22 -0
- package/docs/node_modules/lodash/_baseSortBy.js +21 -0
- package/docs/node_modules/lodash/_baseSortedIndex.js +42 -0
- package/docs/node_modules/lodash/_baseSortedIndexBy.js +67 -0
- package/docs/node_modules/lodash/_baseSortedUniq.js +30 -0
- package/docs/node_modules/lodash/_baseSum.js +24 -0
- package/docs/node_modules/lodash/_baseTimes.js +20 -0
- package/docs/node_modules/lodash/_baseToNumber.js +24 -0
- package/docs/node_modules/lodash/_baseToPairs.js +18 -0
- package/docs/node_modules/lodash/_baseToString.js +37 -0
- package/docs/node_modules/lodash/_baseTrim.js +19 -0
- package/docs/node_modules/lodash/_baseUnary.js +14 -0
- package/docs/node_modules/lodash/_baseUniq.js +72 -0
- package/docs/node_modules/lodash/_baseUnset.js +20 -0
- package/docs/node_modules/lodash/_baseUpdate.js +18 -0
- package/docs/node_modules/lodash/_baseValues.js +19 -0
- package/docs/node_modules/lodash/_baseWhile.js +26 -0
- package/docs/node_modules/lodash/_baseWrapperValue.js +25 -0
- package/docs/node_modules/lodash/_baseXor.js +36 -0
- package/docs/node_modules/lodash/_baseZipObject.js +23 -0
- package/docs/node_modules/lodash/_cacheHas.js +13 -0
- package/docs/node_modules/lodash/_castArrayLikeObject.js +14 -0
- package/docs/node_modules/lodash/_castFunction.js +14 -0
- package/docs/node_modules/lodash/_castPath.js +21 -0
- package/docs/node_modules/lodash/_castRest.js +14 -0
- package/docs/node_modules/lodash/_castSlice.js +18 -0
- package/docs/node_modules/lodash/_charsEndIndex.js +19 -0
- package/docs/node_modules/lodash/_charsStartIndex.js +20 -0
- package/docs/node_modules/lodash/_cloneArrayBuffer.js +16 -0
- package/docs/node_modules/lodash/_cloneBuffer.js +35 -0
- package/docs/node_modules/lodash/_cloneDataView.js +16 -0
- package/docs/node_modules/lodash/_cloneRegExp.js +17 -0
- package/docs/node_modules/lodash/_cloneSymbol.js +18 -0
- package/docs/node_modules/lodash/_cloneTypedArray.js +16 -0
- package/docs/node_modules/lodash/_compareAscending.js +41 -0
- package/docs/node_modules/lodash/_compareMultiple.js +44 -0
- package/docs/node_modules/lodash/_composeArgs.js +39 -0
- package/docs/node_modules/lodash/_composeArgsRight.js +41 -0
- package/docs/node_modules/lodash/_copyArray.js +20 -0
- package/docs/node_modules/lodash/_copyObject.js +40 -0
- package/docs/node_modules/lodash/_copySymbols.js +16 -0
- package/docs/node_modules/lodash/_copySymbolsIn.js +16 -0
- package/docs/node_modules/lodash/_coreJsData.js +6 -0
- package/docs/node_modules/lodash/_countHolders.js +21 -0
- package/docs/node_modules/lodash/_createAggregator.js +23 -0
- package/docs/node_modules/lodash/_createAssigner.js +37 -0
- package/docs/node_modules/lodash/_createBaseEach.js +32 -0
- package/docs/node_modules/lodash/_createBaseFor.js +25 -0
- package/docs/node_modules/lodash/_createBind.js +28 -0
- package/docs/node_modules/lodash/_createCaseFirst.js +33 -0
- package/docs/node_modules/lodash/_createCompounder.js +24 -0
- package/docs/node_modules/lodash/_createCtor.js +37 -0
- package/docs/node_modules/lodash/_createCurry.js +46 -0
- package/docs/node_modules/lodash/_createFind.js +25 -0
- package/docs/node_modules/lodash/_createFlow.js +78 -0
- package/docs/node_modules/lodash/_createHybrid.js +92 -0
- package/docs/node_modules/lodash/_createInverter.js +17 -0
- package/docs/node_modules/lodash/_createMathOperation.js +38 -0
- package/docs/node_modules/lodash/_createOver.js +27 -0
- package/docs/node_modules/lodash/_createPadding.js +33 -0
- package/docs/node_modules/lodash/_createPartial.js +43 -0
- package/docs/node_modules/lodash/_createRange.js +30 -0
- package/docs/node_modules/lodash/_createRecurry.js +56 -0
- package/docs/node_modules/lodash/_createRelationalOperation.js +20 -0
- package/docs/node_modules/lodash/_createRound.js +35 -0
- package/docs/node_modules/lodash/_createSet.js +19 -0
- package/docs/node_modules/lodash/_createToPairs.js +30 -0
- package/docs/node_modules/lodash/_createWrap.js +106 -0
- package/docs/node_modules/lodash/_customDefaultsAssignIn.js +29 -0
- package/docs/node_modules/lodash/_customDefaultsMerge.js +28 -0
- package/docs/node_modules/lodash/_customOmitClone.js +16 -0
- package/docs/node_modules/lodash/_deburrLetter.js +71 -0
- package/docs/node_modules/lodash/_defineProperty.js +11 -0
- package/docs/node_modules/lodash/_equalArrays.js +84 -0
- package/docs/node_modules/lodash/_equalByTag.js +112 -0
- package/docs/node_modules/lodash/_equalObjects.js +90 -0
- package/docs/node_modules/lodash/_escapeHtmlChar.js +21 -0
- package/docs/node_modules/lodash/_escapeStringChar.js +22 -0
- package/docs/node_modules/lodash/_flatRest.js +16 -0
- package/docs/node_modules/lodash/_freeGlobal.js +4 -0
- package/docs/node_modules/lodash/_getAllKeys.js +16 -0
- package/docs/node_modules/lodash/_getAllKeysIn.js +17 -0
- package/docs/node_modules/lodash/_getData.js +15 -0
- package/docs/node_modules/lodash/_getFuncName.js +31 -0
- package/docs/node_modules/lodash/_getHolder.js +13 -0
- package/docs/node_modules/lodash/_getMapData.js +18 -0
- package/docs/node_modules/lodash/_getMatchData.js +24 -0
- package/docs/node_modules/lodash/_getNative.js +17 -0
- package/docs/node_modules/lodash/_getPrototype.js +6 -0
- package/docs/node_modules/lodash/_getRawTag.js +46 -0
- package/docs/node_modules/lodash/_getSymbols.js +30 -0
- package/docs/node_modules/lodash/_getSymbolsIn.js +25 -0
- package/docs/node_modules/lodash/_getTag.js +58 -0
- package/docs/node_modules/lodash/_getValue.js +13 -0
- package/docs/node_modules/lodash/_getView.js +33 -0
- package/docs/node_modules/lodash/_getWrapDetails.js +17 -0
- package/docs/node_modules/lodash/_hasPath.js +39 -0
- package/docs/node_modules/lodash/_hasUnicode.js +26 -0
- package/docs/node_modules/lodash/_hasUnicodeWord.js +15 -0
- package/docs/node_modules/lodash/_hashClear.js +15 -0
- package/docs/node_modules/lodash/_hashDelete.js +17 -0
- package/docs/node_modules/lodash/_hashGet.js +30 -0
- package/docs/node_modules/lodash/_hashHas.js +23 -0
- package/docs/node_modules/lodash/_hashSet.js +23 -0
- package/docs/node_modules/lodash/_initCloneArray.js +26 -0
- package/docs/node_modules/lodash/_initCloneByTag.js +77 -0
- package/docs/node_modules/lodash/_initCloneObject.js +18 -0
- package/docs/node_modules/lodash/_insertWrapDetails.js +23 -0
- package/docs/node_modules/lodash/_isFlattenable.js +20 -0
- package/docs/node_modules/lodash/_isIndex.js +25 -0
- package/docs/node_modules/lodash/_isIterateeCall.js +30 -0
- package/docs/node_modules/lodash/_isKey.js +29 -0
- package/docs/node_modules/lodash/_isKeyable.js +15 -0
- package/docs/node_modules/lodash/_isLaziable.js +28 -0
- package/docs/node_modules/lodash/_isMaskable.js +14 -0
- package/docs/node_modules/lodash/_isMasked.js +20 -0
- package/docs/node_modules/lodash/_isPrototype.js +18 -0
- package/docs/node_modules/lodash/_isStrictComparable.js +15 -0
- package/docs/node_modules/lodash/_iteratorToArray.js +18 -0
- package/docs/node_modules/lodash/_lazyClone.js +23 -0
- package/docs/node_modules/lodash/_lazyReverse.js +23 -0
- package/docs/node_modules/lodash/_lazyValue.js +69 -0
- package/docs/node_modules/lodash/_listCacheClear.js +13 -0
- package/docs/node_modules/lodash/_listCacheDelete.js +35 -0
- package/docs/node_modules/lodash/_listCacheGet.js +19 -0
- package/docs/node_modules/lodash/_listCacheHas.js +16 -0
- package/docs/node_modules/lodash/_listCacheSet.js +26 -0
- package/docs/node_modules/lodash/_mapCacheClear.js +21 -0
- package/docs/node_modules/lodash/_mapCacheDelete.js +18 -0
- package/docs/node_modules/lodash/_mapCacheGet.js +16 -0
- package/docs/node_modules/lodash/_mapCacheHas.js +16 -0
- package/docs/node_modules/lodash/_mapCacheSet.js +22 -0
- package/docs/node_modules/lodash/_mapToArray.js +18 -0
- package/docs/node_modules/lodash/_matchesStrictComparable.js +20 -0
- package/docs/node_modules/lodash/_memoizeCapped.js +26 -0
- package/docs/node_modules/lodash/_mergeData.js +90 -0
- package/docs/node_modules/lodash/_metaMap.js +6 -0
- package/docs/node_modules/lodash/_nativeCreate.js +6 -0
- package/docs/node_modules/lodash/_nativeKeys.js +6 -0
- package/docs/node_modules/lodash/_nativeKeysIn.js +20 -0
- package/docs/node_modules/lodash/_nodeUtil.js +30 -0
- package/docs/node_modules/lodash/_objectToString.js +22 -0
- package/docs/node_modules/lodash/_overArg.js +15 -0
- package/docs/node_modules/lodash/_overRest.js +36 -0
- package/docs/node_modules/lodash/_parent.js +16 -0
- package/docs/node_modules/lodash/_reEscape.js +4 -0
- package/docs/node_modules/lodash/_reEvaluate.js +4 -0
- package/docs/node_modules/lodash/_reInterpolate.js +4 -0
- package/docs/node_modules/lodash/_realNames.js +4 -0
- package/docs/node_modules/lodash/_reorder.js +29 -0
- package/docs/node_modules/lodash/_replaceHolders.js +29 -0
- package/docs/node_modules/lodash/_root.js +9 -0
- package/docs/node_modules/lodash/_safeGet.js +21 -0
- package/docs/node_modules/lodash/_setCacheAdd.js +19 -0
- package/docs/node_modules/lodash/_setCacheHas.js +14 -0
- package/docs/node_modules/lodash/_setData.js +20 -0
- package/docs/node_modules/lodash/_setToArray.js +18 -0
- package/docs/node_modules/lodash/_setToPairs.js +18 -0
- package/docs/node_modules/lodash/_setToString.js +14 -0
- package/docs/node_modules/lodash/_setWrapToString.js +21 -0
- package/docs/node_modules/lodash/_shortOut.js +37 -0
- package/docs/node_modules/lodash/_shuffleSelf.js +28 -0
- package/docs/node_modules/lodash/_stackClear.js +15 -0
- package/docs/node_modules/lodash/_stackDelete.js +18 -0
- package/docs/node_modules/lodash/_stackGet.js +14 -0
- package/docs/node_modules/lodash/_stackHas.js +14 -0
- package/docs/node_modules/lodash/_stackSet.js +34 -0
- package/docs/node_modules/lodash/_strictIndexOf.js +23 -0
- package/docs/node_modules/lodash/_strictLastIndexOf.js +21 -0
- package/docs/node_modules/lodash/_stringSize.js +18 -0
- package/docs/node_modules/lodash/_stringToArray.js +18 -0
- package/docs/node_modules/lodash/_stringToPath.js +27 -0
- package/docs/node_modules/lodash/_toKey.js +21 -0
- package/docs/node_modules/lodash/_toSource.js +26 -0
- package/docs/node_modules/lodash/_trimmedEndIndex.js +19 -0
- package/docs/node_modules/lodash/_unescapeHtmlChar.js +21 -0
- package/docs/node_modules/lodash/_unicodeSize.js +44 -0
- package/docs/node_modules/lodash/_unicodeToArray.js +40 -0
- package/docs/node_modules/lodash/_unicodeWords.js +69 -0
- package/docs/node_modules/lodash/_updateWrapDetails.js +46 -0
- package/docs/node_modules/lodash/_wrapperClone.js +23 -0
- package/docs/node_modules/lodash/add.js +22 -0
- package/docs/node_modules/lodash/after.js +42 -0
- package/docs/node_modules/lodash/array.js +67 -0
- package/docs/node_modules/lodash/ary.js +29 -0
- package/docs/node_modules/lodash/assign.js +58 -0
- package/docs/node_modules/lodash/assignIn.js +40 -0
- package/docs/node_modules/lodash/assignInWith.js +38 -0
- package/docs/node_modules/lodash/assignWith.js +37 -0
- package/docs/node_modules/lodash/at.js +23 -0
- package/docs/node_modules/lodash/attempt.js +35 -0
- package/docs/node_modules/lodash/before.js +40 -0
- package/docs/node_modules/lodash/bind.js +57 -0
- package/docs/node_modules/lodash/bindAll.js +41 -0
- package/docs/node_modules/lodash/bindKey.js +68 -0
- package/docs/node_modules/lodash/camelCase.js +29 -0
- package/docs/node_modules/lodash/capitalize.js +23 -0
- package/docs/node_modules/lodash/castArray.js +44 -0
- package/docs/node_modules/lodash/ceil.js +26 -0
- package/docs/node_modules/lodash/chain.js +38 -0
- package/docs/node_modules/lodash/chunk.js +50 -0
- package/docs/node_modules/lodash/clamp.js +39 -0
- package/docs/node_modules/lodash/clone.js +36 -0
- package/docs/node_modules/lodash/cloneDeep.js +29 -0
- package/docs/node_modules/lodash/cloneDeepWith.js +40 -0
- package/docs/node_modules/lodash/cloneWith.js +42 -0
- package/docs/node_modules/lodash/collection.js +30 -0
- package/docs/node_modules/lodash/commit.js +33 -0
- package/docs/node_modules/lodash/compact.js +31 -0
- package/docs/node_modules/lodash/concat.js +43 -0
- package/docs/node_modules/lodash/cond.js +60 -0
- package/docs/node_modules/lodash/conforms.js +35 -0
- package/docs/node_modules/lodash/conformsTo.js +32 -0
- package/docs/node_modules/lodash/constant.js +26 -0
- package/docs/node_modules/lodash/core.js +3877 -0
- package/docs/node_modules/lodash/core.min.js +29 -0
- package/docs/node_modules/lodash/countBy.js +40 -0
- package/docs/node_modules/lodash/create.js +43 -0
- package/docs/node_modules/lodash/curry.js +57 -0
- package/docs/node_modules/lodash/curryRight.js +54 -0
- package/docs/node_modules/lodash/date.js +3 -0
- package/docs/node_modules/lodash/debounce.js +191 -0
- package/docs/node_modules/lodash/deburr.js +45 -0
- package/docs/node_modules/lodash/defaultTo.js +25 -0
- package/docs/node_modules/lodash/defaults.js +64 -0
- package/docs/node_modules/lodash/defaultsDeep.js +30 -0
- package/docs/node_modules/lodash/defer.js +26 -0
- package/docs/node_modules/lodash/delay.js +28 -0
- package/docs/node_modules/lodash/difference.js +33 -0
- package/docs/node_modules/lodash/differenceBy.js +44 -0
- package/docs/node_modules/lodash/differenceWith.js +40 -0
- package/docs/node_modules/lodash/divide.js +22 -0
- package/docs/node_modules/lodash/drop.js +38 -0
- package/docs/node_modules/lodash/dropRight.js +39 -0
- package/docs/node_modules/lodash/dropRightWhile.js +45 -0
- package/docs/node_modules/lodash/dropWhile.js +45 -0
- package/docs/node_modules/lodash/each.js +1 -0
- package/docs/node_modules/lodash/eachRight.js +1 -0
- package/docs/node_modules/lodash/endsWith.js +43 -0
- package/docs/node_modules/lodash/entries.js +1 -0
- package/docs/node_modules/lodash/entriesIn.js +1 -0
- package/docs/node_modules/lodash/eq.js +37 -0
- package/docs/node_modules/lodash/escape.js +43 -0
- package/docs/node_modules/lodash/escapeRegExp.js +32 -0
- package/docs/node_modules/lodash/every.js +56 -0
- package/docs/node_modules/lodash/extend.js +1 -0
- package/docs/node_modules/lodash/extendWith.js +1 -0
- package/docs/node_modules/lodash/fill.js +45 -0
- package/docs/node_modules/lodash/filter.js +52 -0
- package/docs/node_modules/lodash/find.js +42 -0
- package/docs/node_modules/lodash/findIndex.js +55 -0
- package/docs/node_modules/lodash/findKey.js +44 -0
- package/docs/node_modules/lodash/findLast.js +25 -0
- package/docs/node_modules/lodash/findLastIndex.js +59 -0
- package/docs/node_modules/lodash/findLastKey.js +44 -0
- package/docs/node_modules/lodash/first.js +1 -0
- package/docs/node_modules/lodash/flake.lock +40 -0
- package/docs/node_modules/lodash/flake.nix +20 -0
- package/docs/node_modules/lodash/flatMap.js +29 -0
- package/docs/node_modules/lodash/flatMapDeep.js +31 -0
- package/docs/node_modules/lodash/flatMapDepth.js +31 -0
- package/docs/node_modules/lodash/flatten.js +22 -0
- package/docs/node_modules/lodash/flattenDeep.js +25 -0
- package/docs/node_modules/lodash/flattenDepth.js +33 -0
- package/docs/node_modules/lodash/flip.js +28 -0
- package/docs/node_modules/lodash/floor.js +26 -0
- package/docs/node_modules/lodash/flow.js +27 -0
- package/docs/node_modules/lodash/flowRight.js +26 -0
- package/docs/node_modules/lodash/forEach.js +41 -0
- package/docs/node_modules/lodash/forEachRight.js +31 -0
- package/docs/node_modules/lodash/forIn.js +39 -0
- package/docs/node_modules/lodash/forInRight.js +37 -0
- package/docs/node_modules/lodash/forOwn.js +36 -0
- package/docs/node_modules/lodash/forOwnRight.js +34 -0
- package/docs/node_modules/lodash/fp/F.js +1 -0
- package/docs/node_modules/lodash/fp/T.js +1 -0
- package/docs/node_modules/lodash/fp/__.js +1 -0
- package/docs/node_modules/lodash/fp/_baseConvert.js +569 -0
- package/docs/node_modules/lodash/fp/_convertBrowser.js +18 -0
- package/docs/node_modules/lodash/fp/_falseOptions.js +7 -0
- package/docs/node_modules/lodash/fp/_mapping.js +358 -0
- package/docs/node_modules/lodash/fp/_util.js +16 -0
- package/docs/node_modules/lodash/fp/add.js +5 -0
- package/docs/node_modules/lodash/fp/after.js +5 -0
- package/docs/node_modules/lodash/fp/all.js +1 -0
- package/docs/node_modules/lodash/fp/allPass.js +1 -0
- package/docs/node_modules/lodash/fp/always.js +1 -0
- package/docs/node_modules/lodash/fp/any.js +1 -0
- package/docs/node_modules/lodash/fp/anyPass.js +1 -0
- package/docs/node_modules/lodash/fp/apply.js +1 -0
- package/docs/node_modules/lodash/fp/array.js +2 -0
- package/docs/node_modules/lodash/fp/ary.js +5 -0
- package/docs/node_modules/lodash/fp/assign.js +5 -0
- package/docs/node_modules/lodash/fp/assignAll.js +5 -0
- package/docs/node_modules/lodash/fp/assignAllWith.js +5 -0
- package/docs/node_modules/lodash/fp/assignIn.js +5 -0
- package/docs/node_modules/lodash/fp/assignInAll.js +5 -0
- package/docs/node_modules/lodash/fp/assignInAllWith.js +5 -0
- package/docs/node_modules/lodash/fp/assignInWith.js +5 -0
- package/docs/node_modules/lodash/fp/assignWith.js +5 -0
- package/docs/node_modules/lodash/fp/assoc.js +1 -0
- package/docs/node_modules/lodash/fp/assocPath.js +1 -0
- package/docs/node_modules/lodash/fp/at.js +5 -0
- package/docs/node_modules/lodash/fp/attempt.js +5 -0
- package/docs/node_modules/lodash/fp/before.js +5 -0
- package/docs/node_modules/lodash/fp/bind.js +5 -0
- package/docs/node_modules/lodash/fp/bindAll.js +5 -0
- package/docs/node_modules/lodash/fp/bindKey.js +5 -0
- package/docs/node_modules/lodash/fp/camelCase.js +5 -0
- package/docs/node_modules/lodash/fp/capitalize.js +5 -0
- package/docs/node_modules/lodash/fp/castArray.js +5 -0
- package/docs/node_modules/lodash/fp/ceil.js +5 -0
- package/docs/node_modules/lodash/fp/chain.js +5 -0
- package/docs/node_modules/lodash/fp/chunk.js +5 -0
- package/docs/node_modules/lodash/fp/clamp.js +5 -0
- package/docs/node_modules/lodash/fp/clone.js +5 -0
- package/docs/node_modules/lodash/fp/cloneDeep.js +5 -0
- package/docs/node_modules/lodash/fp/cloneDeepWith.js +5 -0
- package/docs/node_modules/lodash/fp/cloneWith.js +5 -0
- package/docs/node_modules/lodash/fp/collection.js +2 -0
- package/docs/node_modules/lodash/fp/commit.js +5 -0
- package/docs/node_modules/lodash/fp/compact.js +5 -0
- package/docs/node_modules/lodash/fp/complement.js +1 -0
- package/docs/node_modules/lodash/fp/compose.js +1 -0
- package/docs/node_modules/lodash/fp/concat.js +5 -0
- package/docs/node_modules/lodash/fp/cond.js +5 -0
- package/docs/node_modules/lodash/fp/conforms.js +1 -0
- package/docs/node_modules/lodash/fp/conformsTo.js +5 -0
- package/docs/node_modules/lodash/fp/constant.js +5 -0
- package/docs/node_modules/lodash/fp/contains.js +1 -0
- package/docs/node_modules/lodash/fp/convert.js +18 -0
- package/docs/node_modules/lodash/fp/countBy.js +5 -0
- package/docs/node_modules/lodash/fp/create.js +5 -0
- package/docs/node_modules/lodash/fp/curry.js +5 -0
- package/docs/node_modules/lodash/fp/curryN.js +5 -0
- package/docs/node_modules/lodash/fp/curryRight.js +5 -0
- package/docs/node_modules/lodash/fp/curryRightN.js +5 -0
- package/docs/node_modules/lodash/fp/date.js +2 -0
- package/docs/node_modules/lodash/fp/debounce.js +5 -0
- package/docs/node_modules/lodash/fp/deburr.js +5 -0
- package/docs/node_modules/lodash/fp/defaultTo.js +5 -0
- package/docs/node_modules/lodash/fp/defaults.js +5 -0
- package/docs/node_modules/lodash/fp/defaultsAll.js +5 -0
- package/docs/node_modules/lodash/fp/defaultsDeep.js +5 -0
- package/docs/node_modules/lodash/fp/defaultsDeepAll.js +5 -0
- package/docs/node_modules/lodash/fp/defer.js +5 -0
- package/docs/node_modules/lodash/fp/delay.js +5 -0
- package/docs/node_modules/lodash/fp/difference.js +5 -0
- package/docs/node_modules/lodash/fp/differenceBy.js +5 -0
- package/docs/node_modules/lodash/fp/differenceWith.js +5 -0
- package/docs/node_modules/lodash/fp/dissoc.js +1 -0
- package/docs/node_modules/lodash/fp/dissocPath.js +1 -0
- package/docs/node_modules/lodash/fp/divide.js +5 -0
- package/docs/node_modules/lodash/fp/drop.js +5 -0
- package/docs/node_modules/lodash/fp/dropLast.js +1 -0
- package/docs/node_modules/lodash/fp/dropLastWhile.js +1 -0
- package/docs/node_modules/lodash/fp/dropRight.js +5 -0
- package/docs/node_modules/lodash/fp/dropRightWhile.js +5 -0
- package/docs/node_modules/lodash/fp/dropWhile.js +5 -0
- package/docs/node_modules/lodash/fp/each.js +1 -0
- package/docs/node_modules/lodash/fp/eachRight.js +1 -0
- package/docs/node_modules/lodash/fp/endsWith.js +5 -0
- package/docs/node_modules/lodash/fp/entries.js +1 -0
- package/docs/node_modules/lodash/fp/entriesIn.js +1 -0
- package/docs/node_modules/lodash/fp/eq.js +5 -0
- package/docs/node_modules/lodash/fp/equals.js +1 -0
- package/docs/node_modules/lodash/fp/escape.js +5 -0
- package/docs/node_modules/lodash/fp/escapeRegExp.js +5 -0
- package/docs/node_modules/lodash/fp/every.js +5 -0
- package/docs/node_modules/lodash/fp/extend.js +1 -0
- package/docs/node_modules/lodash/fp/extendAll.js +1 -0
- package/docs/node_modules/lodash/fp/extendAllWith.js +1 -0
- package/docs/node_modules/lodash/fp/extendWith.js +1 -0
- package/docs/node_modules/lodash/fp/fill.js +5 -0
- package/docs/node_modules/lodash/fp/filter.js +5 -0
- package/docs/node_modules/lodash/fp/find.js +5 -0
- package/docs/node_modules/lodash/fp/findFrom.js +5 -0
- package/docs/node_modules/lodash/fp/findIndex.js +5 -0
- package/docs/node_modules/lodash/fp/findIndexFrom.js +5 -0
- package/docs/node_modules/lodash/fp/findKey.js +5 -0
- package/docs/node_modules/lodash/fp/findLast.js +5 -0
- package/docs/node_modules/lodash/fp/findLastFrom.js +5 -0
- package/docs/node_modules/lodash/fp/findLastIndex.js +5 -0
- package/docs/node_modules/lodash/fp/findLastIndexFrom.js +5 -0
- package/docs/node_modules/lodash/fp/findLastKey.js +5 -0
- package/docs/node_modules/lodash/fp/first.js +1 -0
- package/docs/node_modules/lodash/fp/flatMap.js +5 -0
- package/docs/node_modules/lodash/fp/flatMapDeep.js +5 -0
- package/docs/node_modules/lodash/fp/flatMapDepth.js +5 -0
- package/docs/node_modules/lodash/fp/flatten.js +5 -0
- package/docs/node_modules/lodash/fp/flattenDeep.js +5 -0
- package/docs/node_modules/lodash/fp/flattenDepth.js +5 -0
- package/docs/node_modules/lodash/fp/flip.js +5 -0
- package/docs/node_modules/lodash/fp/floor.js +5 -0
- package/docs/node_modules/lodash/fp/flow.js +5 -0
- package/docs/node_modules/lodash/fp/flowRight.js +5 -0
- package/docs/node_modules/lodash/fp/forEach.js +5 -0
- package/docs/node_modules/lodash/fp/forEachRight.js +5 -0
- package/docs/node_modules/lodash/fp/forIn.js +5 -0
- package/docs/node_modules/lodash/fp/forInRight.js +5 -0
- package/docs/node_modules/lodash/fp/forOwn.js +5 -0
- package/docs/node_modules/lodash/fp/forOwnRight.js +5 -0
- package/docs/node_modules/lodash/fp/fromPairs.js +5 -0
- package/docs/node_modules/lodash/fp/function.js +2 -0
- package/docs/node_modules/lodash/fp/functions.js +5 -0
- package/docs/node_modules/lodash/fp/functionsIn.js +5 -0
- package/docs/node_modules/lodash/fp/get.js +5 -0
- package/docs/node_modules/lodash/fp/getOr.js +5 -0
- package/docs/node_modules/lodash/fp/groupBy.js +5 -0
- package/docs/node_modules/lodash/fp/gt.js +5 -0
- package/docs/node_modules/lodash/fp/gte.js +5 -0
- package/docs/node_modules/lodash/fp/has.js +5 -0
- package/docs/node_modules/lodash/fp/hasIn.js +5 -0
- package/docs/node_modules/lodash/fp/head.js +5 -0
- package/docs/node_modules/lodash/fp/identical.js +1 -0
- package/docs/node_modules/lodash/fp/identity.js +5 -0
- package/docs/node_modules/lodash/fp/inRange.js +5 -0
- package/docs/node_modules/lodash/fp/includes.js +5 -0
- package/docs/node_modules/lodash/fp/includesFrom.js +5 -0
- package/docs/node_modules/lodash/fp/indexBy.js +1 -0
- package/docs/node_modules/lodash/fp/indexOf.js +5 -0
- package/docs/node_modules/lodash/fp/indexOfFrom.js +5 -0
- package/docs/node_modules/lodash/fp/init.js +1 -0
- package/docs/node_modules/lodash/fp/initial.js +5 -0
- package/docs/node_modules/lodash/fp/intersection.js +5 -0
- package/docs/node_modules/lodash/fp/intersectionBy.js +5 -0
- package/docs/node_modules/lodash/fp/intersectionWith.js +5 -0
- package/docs/node_modules/lodash/fp/invert.js +5 -0
- package/docs/node_modules/lodash/fp/invertBy.js +5 -0
- package/docs/node_modules/lodash/fp/invertObj.js +1 -0
- package/docs/node_modules/lodash/fp/invoke.js +5 -0
- package/docs/node_modules/lodash/fp/invokeArgs.js +5 -0
- package/docs/node_modules/lodash/fp/invokeArgsMap.js +5 -0
- package/docs/node_modules/lodash/fp/invokeMap.js +5 -0
- package/docs/node_modules/lodash/fp/isArguments.js +5 -0
- package/docs/node_modules/lodash/fp/isArray.js +5 -0
- package/docs/node_modules/lodash/fp/isArrayBuffer.js +5 -0
- package/docs/node_modules/lodash/fp/isArrayLike.js +5 -0
- package/docs/node_modules/lodash/fp/isArrayLikeObject.js +5 -0
- package/docs/node_modules/lodash/fp/isBoolean.js +5 -0
- package/docs/node_modules/lodash/fp/isBuffer.js +5 -0
- package/docs/node_modules/lodash/fp/isDate.js +5 -0
- package/docs/node_modules/lodash/fp/isElement.js +5 -0
- package/docs/node_modules/lodash/fp/isEmpty.js +5 -0
- package/docs/node_modules/lodash/fp/isEqual.js +5 -0
- package/docs/node_modules/lodash/fp/isEqualWith.js +5 -0
- package/docs/node_modules/lodash/fp/isError.js +5 -0
- package/docs/node_modules/lodash/fp/isFinite.js +5 -0
- package/docs/node_modules/lodash/fp/isFunction.js +5 -0
- package/docs/node_modules/lodash/fp/isInteger.js +5 -0
- package/docs/node_modules/lodash/fp/isLength.js +5 -0
- package/docs/node_modules/lodash/fp/isMap.js +5 -0
- package/docs/node_modules/lodash/fp/isMatch.js +5 -0
- package/docs/node_modules/lodash/fp/isMatchWith.js +5 -0
- package/docs/node_modules/lodash/fp/isNaN.js +5 -0
- package/docs/node_modules/lodash/fp/isNative.js +5 -0
- package/docs/node_modules/lodash/fp/isNil.js +5 -0
- package/docs/node_modules/lodash/fp/isNull.js +5 -0
- package/docs/node_modules/lodash/fp/isNumber.js +5 -0
- package/docs/node_modules/lodash/fp/isObject.js +5 -0
- package/docs/node_modules/lodash/fp/isObjectLike.js +5 -0
- package/docs/node_modules/lodash/fp/isPlainObject.js +5 -0
- package/docs/node_modules/lodash/fp/isRegExp.js +5 -0
- package/docs/node_modules/lodash/fp/isSafeInteger.js +5 -0
- package/docs/node_modules/lodash/fp/isSet.js +5 -0
- package/docs/node_modules/lodash/fp/isString.js +5 -0
- package/docs/node_modules/lodash/fp/isSymbol.js +5 -0
- package/docs/node_modules/lodash/fp/isTypedArray.js +5 -0
- package/docs/node_modules/lodash/fp/isUndefined.js +5 -0
- package/docs/node_modules/lodash/fp/isWeakMap.js +5 -0
- package/docs/node_modules/lodash/fp/isWeakSet.js +5 -0
- package/docs/node_modules/lodash/fp/iteratee.js +5 -0
- package/docs/node_modules/lodash/fp/join.js +5 -0
- package/docs/node_modules/lodash/fp/juxt.js +1 -0
- package/docs/node_modules/lodash/fp/kebabCase.js +5 -0
- package/docs/node_modules/lodash/fp/keyBy.js +5 -0
- package/docs/node_modules/lodash/fp/keys.js +5 -0
- package/docs/node_modules/lodash/fp/keysIn.js +5 -0
- package/docs/node_modules/lodash/fp/lang.js +2 -0
- package/docs/node_modules/lodash/fp/last.js +5 -0
- package/docs/node_modules/lodash/fp/lastIndexOf.js +5 -0
- package/docs/node_modules/lodash/fp/lastIndexOfFrom.js +5 -0
- package/docs/node_modules/lodash/fp/lowerCase.js +5 -0
- package/docs/node_modules/lodash/fp/lowerFirst.js +5 -0
- package/docs/node_modules/lodash/fp/lt.js +5 -0
- package/docs/node_modules/lodash/fp/lte.js +5 -0
- package/docs/node_modules/lodash/fp/map.js +5 -0
- package/docs/node_modules/lodash/fp/mapKeys.js +5 -0
- package/docs/node_modules/lodash/fp/mapValues.js +5 -0
- package/docs/node_modules/lodash/fp/matches.js +1 -0
- package/docs/node_modules/lodash/fp/matchesProperty.js +5 -0
- package/docs/node_modules/lodash/fp/math.js +2 -0
- package/docs/node_modules/lodash/fp/max.js +5 -0
- package/docs/node_modules/lodash/fp/maxBy.js +5 -0
- package/docs/node_modules/lodash/fp/mean.js +5 -0
- package/docs/node_modules/lodash/fp/meanBy.js +5 -0
- package/docs/node_modules/lodash/fp/memoize.js +5 -0
- package/docs/node_modules/lodash/fp/merge.js +5 -0
- package/docs/node_modules/lodash/fp/mergeAll.js +5 -0
- package/docs/node_modules/lodash/fp/mergeAllWith.js +5 -0
- package/docs/node_modules/lodash/fp/mergeWith.js +5 -0
- package/docs/node_modules/lodash/fp/method.js +5 -0
- package/docs/node_modules/lodash/fp/methodOf.js +5 -0
- package/docs/node_modules/lodash/fp/min.js +5 -0
- package/docs/node_modules/lodash/fp/minBy.js +5 -0
- package/docs/node_modules/lodash/fp/mixin.js +5 -0
- package/docs/node_modules/lodash/fp/multiply.js +5 -0
- package/docs/node_modules/lodash/fp/nAry.js +1 -0
- package/docs/node_modules/lodash/fp/negate.js +5 -0
- package/docs/node_modules/lodash/fp/next.js +5 -0
- package/docs/node_modules/lodash/fp/noop.js +5 -0
- package/docs/node_modules/lodash/fp/now.js +5 -0
- package/docs/node_modules/lodash/fp/nth.js +5 -0
- package/docs/node_modules/lodash/fp/nthArg.js +5 -0
- package/docs/node_modules/lodash/fp/number.js +2 -0
- package/docs/node_modules/lodash/fp/object.js +2 -0
- package/docs/node_modules/lodash/fp/omit.js +5 -0
- package/docs/node_modules/lodash/fp/omitAll.js +1 -0
- package/docs/node_modules/lodash/fp/omitBy.js +5 -0
- package/docs/node_modules/lodash/fp/once.js +5 -0
- package/docs/node_modules/lodash/fp/orderBy.js +5 -0
- package/docs/node_modules/lodash/fp/over.js +5 -0
- package/docs/node_modules/lodash/fp/overArgs.js +5 -0
- package/docs/node_modules/lodash/fp/overEvery.js +5 -0
- package/docs/node_modules/lodash/fp/overSome.js +5 -0
- package/docs/node_modules/lodash/fp/pad.js +5 -0
- package/docs/node_modules/lodash/fp/padChars.js +5 -0
- package/docs/node_modules/lodash/fp/padCharsEnd.js +5 -0
- package/docs/node_modules/lodash/fp/padCharsStart.js +5 -0
- package/docs/node_modules/lodash/fp/padEnd.js +5 -0
- package/docs/node_modules/lodash/fp/padStart.js +5 -0
- package/docs/node_modules/lodash/fp/parseInt.js +5 -0
- package/docs/node_modules/lodash/fp/partial.js +5 -0
- package/docs/node_modules/lodash/fp/partialRight.js +5 -0
- package/docs/node_modules/lodash/fp/partition.js +5 -0
- package/docs/node_modules/lodash/fp/path.js +1 -0
- package/docs/node_modules/lodash/fp/pathEq.js +1 -0
- package/docs/node_modules/lodash/fp/pathOr.js +1 -0
- package/docs/node_modules/lodash/fp/paths.js +1 -0
- package/docs/node_modules/lodash/fp/pick.js +5 -0
- package/docs/node_modules/lodash/fp/pickAll.js +1 -0
- package/docs/node_modules/lodash/fp/pickBy.js +5 -0
- package/docs/node_modules/lodash/fp/pipe.js +1 -0
- package/docs/node_modules/lodash/fp/placeholder.js +6 -0
- package/docs/node_modules/lodash/fp/plant.js +5 -0
- package/docs/node_modules/lodash/fp/pluck.js +1 -0
- package/docs/node_modules/lodash/fp/prop.js +1 -0
- package/docs/node_modules/lodash/fp/propEq.js +1 -0
- package/docs/node_modules/lodash/fp/propOr.js +1 -0
- package/docs/node_modules/lodash/fp/property.js +1 -0
- package/docs/node_modules/lodash/fp/propertyOf.js +5 -0
- package/docs/node_modules/lodash/fp/props.js +1 -0
- package/docs/node_modules/lodash/fp/pull.js +5 -0
- package/docs/node_modules/lodash/fp/pullAll.js +5 -0
- package/docs/node_modules/lodash/fp/pullAllBy.js +5 -0
- package/docs/node_modules/lodash/fp/pullAllWith.js +5 -0
- package/docs/node_modules/lodash/fp/pullAt.js +5 -0
- package/docs/node_modules/lodash/fp/random.js +5 -0
- package/docs/node_modules/lodash/fp/range.js +5 -0
- package/docs/node_modules/lodash/fp/rangeRight.js +5 -0
- package/docs/node_modules/lodash/fp/rangeStep.js +5 -0
- package/docs/node_modules/lodash/fp/rangeStepRight.js +5 -0
- package/docs/node_modules/lodash/fp/rearg.js +5 -0
- package/docs/node_modules/lodash/fp/reduce.js +5 -0
- package/docs/node_modules/lodash/fp/reduceRight.js +5 -0
- package/docs/node_modules/lodash/fp/reject.js +5 -0
- package/docs/node_modules/lodash/fp/remove.js +5 -0
- package/docs/node_modules/lodash/fp/repeat.js +5 -0
- package/docs/node_modules/lodash/fp/replace.js +5 -0
- package/docs/node_modules/lodash/fp/rest.js +5 -0
- package/docs/node_modules/lodash/fp/restFrom.js +5 -0
- package/docs/node_modules/lodash/fp/result.js +5 -0
- package/docs/node_modules/lodash/fp/reverse.js +5 -0
- package/docs/node_modules/lodash/fp/round.js +5 -0
- package/docs/node_modules/lodash/fp/sample.js +5 -0
- package/docs/node_modules/lodash/fp/sampleSize.js +5 -0
- package/docs/node_modules/lodash/fp/seq.js +2 -0
- package/docs/node_modules/lodash/fp/set.js +5 -0
- package/docs/node_modules/lodash/fp/setWith.js +5 -0
- package/docs/node_modules/lodash/fp/shuffle.js +5 -0
- package/docs/node_modules/lodash/fp/size.js +5 -0
- package/docs/node_modules/lodash/fp/slice.js +5 -0
- package/docs/node_modules/lodash/fp/snakeCase.js +5 -0
- package/docs/node_modules/lodash/fp/some.js +5 -0
- package/docs/node_modules/lodash/fp/sortBy.js +5 -0
- package/docs/node_modules/lodash/fp/sortedIndex.js +5 -0
- package/docs/node_modules/lodash/fp/sortedIndexBy.js +5 -0
- package/docs/node_modules/lodash/fp/sortedIndexOf.js +5 -0
- package/docs/node_modules/lodash/fp/sortedLastIndex.js +5 -0
- package/docs/node_modules/lodash/fp/sortedLastIndexBy.js +5 -0
- package/docs/node_modules/lodash/fp/sortedLastIndexOf.js +5 -0
- package/docs/node_modules/lodash/fp/sortedUniq.js +5 -0
- package/docs/node_modules/lodash/fp/sortedUniqBy.js +5 -0
- package/docs/node_modules/lodash/fp/split.js +5 -0
- package/docs/node_modules/lodash/fp/spread.js +5 -0
- package/docs/node_modules/lodash/fp/spreadFrom.js +5 -0
- package/docs/node_modules/lodash/fp/startCase.js +5 -0
- package/docs/node_modules/lodash/fp/startsWith.js +5 -0
- package/docs/node_modules/lodash/fp/string.js +2 -0
- package/docs/node_modules/lodash/fp/stubArray.js +5 -0
- package/docs/node_modules/lodash/fp/stubFalse.js +5 -0
- package/docs/node_modules/lodash/fp/stubObject.js +5 -0
- package/docs/node_modules/lodash/fp/stubString.js +5 -0
- package/docs/node_modules/lodash/fp/stubTrue.js +5 -0
- package/docs/node_modules/lodash/fp/subtract.js +5 -0
- package/docs/node_modules/lodash/fp/sum.js +5 -0
- package/docs/node_modules/lodash/fp/sumBy.js +5 -0
- package/docs/node_modules/lodash/fp/symmetricDifference.js +1 -0
- package/docs/node_modules/lodash/fp/symmetricDifferenceBy.js +1 -0
- package/docs/node_modules/lodash/fp/symmetricDifferenceWith.js +1 -0
- package/docs/node_modules/lodash/fp/tail.js +5 -0
- package/docs/node_modules/lodash/fp/take.js +5 -0
- package/docs/node_modules/lodash/fp/takeLast.js +1 -0
- package/docs/node_modules/lodash/fp/takeLastWhile.js +1 -0
- package/docs/node_modules/lodash/fp/takeRight.js +5 -0
- package/docs/node_modules/lodash/fp/takeRightWhile.js +5 -0
- package/docs/node_modules/lodash/fp/takeWhile.js +5 -0
- package/docs/node_modules/lodash/fp/tap.js +5 -0
- package/docs/node_modules/lodash/fp/template.js +5 -0
- package/docs/node_modules/lodash/fp/templateSettings.js +5 -0
- package/docs/node_modules/lodash/fp/throttle.js +5 -0
- package/docs/node_modules/lodash/fp/thru.js +5 -0
- package/docs/node_modules/lodash/fp/times.js +5 -0
- package/docs/node_modules/lodash/fp/toArray.js +5 -0
- package/docs/node_modules/lodash/fp/toFinite.js +5 -0
- package/docs/node_modules/lodash/fp/toInteger.js +5 -0
- package/docs/node_modules/lodash/fp/toIterator.js +5 -0
- package/docs/node_modules/lodash/fp/toJSON.js +5 -0
- package/docs/node_modules/lodash/fp/toLength.js +5 -0
- package/docs/node_modules/lodash/fp/toLower.js +5 -0
- package/docs/node_modules/lodash/fp/toNumber.js +5 -0
- package/docs/node_modules/lodash/fp/toPairs.js +5 -0
- package/docs/node_modules/lodash/fp/toPairsIn.js +5 -0
- package/docs/node_modules/lodash/fp/toPath.js +5 -0
- package/docs/node_modules/lodash/fp/toPlainObject.js +5 -0
- package/docs/node_modules/lodash/fp/toSafeInteger.js +5 -0
- package/docs/node_modules/lodash/fp/toString.js +5 -0
- package/docs/node_modules/lodash/fp/toUpper.js +5 -0
- package/docs/node_modules/lodash/fp/transform.js +5 -0
- package/docs/node_modules/lodash/fp/trim.js +5 -0
- package/docs/node_modules/lodash/fp/trimChars.js +5 -0
- package/docs/node_modules/lodash/fp/trimCharsEnd.js +5 -0
- package/docs/node_modules/lodash/fp/trimCharsStart.js +5 -0
- package/docs/node_modules/lodash/fp/trimEnd.js +5 -0
- package/docs/node_modules/lodash/fp/trimStart.js +5 -0
- package/docs/node_modules/lodash/fp/truncate.js +5 -0
- package/docs/node_modules/lodash/fp/unapply.js +1 -0
- package/docs/node_modules/lodash/fp/unary.js +5 -0
- package/docs/node_modules/lodash/fp/unescape.js +5 -0
- package/docs/node_modules/lodash/fp/union.js +5 -0
- package/docs/node_modules/lodash/fp/unionBy.js +5 -0
- package/docs/node_modules/lodash/fp/unionWith.js +5 -0
- package/docs/node_modules/lodash/fp/uniq.js +5 -0
- package/docs/node_modules/lodash/fp/uniqBy.js +5 -0
- package/docs/node_modules/lodash/fp/uniqWith.js +5 -0
- package/docs/node_modules/lodash/fp/uniqueId.js +5 -0
- package/docs/node_modules/lodash/fp/unnest.js +1 -0
- package/docs/node_modules/lodash/fp/unset.js +5 -0
- package/docs/node_modules/lodash/fp/unzip.js +5 -0
- package/docs/node_modules/lodash/fp/unzipWith.js +5 -0
- package/docs/node_modules/lodash/fp/update.js +5 -0
- package/docs/node_modules/lodash/fp/updateWith.js +5 -0
- package/docs/node_modules/lodash/fp/upperCase.js +5 -0
- package/docs/node_modules/lodash/fp/upperFirst.js +5 -0
- package/docs/node_modules/lodash/fp/useWith.js +1 -0
- package/docs/node_modules/lodash/fp/util.js +2 -0
- package/docs/node_modules/lodash/fp/value.js +5 -0
- package/docs/node_modules/lodash/fp/valueOf.js +5 -0
- package/docs/node_modules/lodash/fp/values.js +5 -0
- package/docs/node_modules/lodash/fp/valuesIn.js +5 -0
- package/docs/node_modules/lodash/fp/where.js +1 -0
- package/docs/node_modules/lodash/fp/whereEq.js +1 -0
- package/docs/node_modules/lodash/fp/without.js +5 -0
- package/docs/node_modules/lodash/fp/words.js +5 -0
- package/docs/node_modules/lodash/fp/wrap.js +5 -0
- package/docs/node_modules/lodash/fp/wrapperAt.js +5 -0
- package/docs/node_modules/lodash/fp/wrapperChain.js +5 -0
- package/docs/node_modules/lodash/fp/wrapperLodash.js +5 -0
- package/docs/node_modules/lodash/fp/wrapperReverse.js +5 -0
- package/docs/node_modules/lodash/fp/wrapperValue.js +5 -0
- package/docs/node_modules/lodash/fp/xor.js +5 -0
- package/docs/node_modules/lodash/fp/xorBy.js +5 -0
- package/docs/node_modules/lodash/fp/xorWith.js +5 -0
- package/docs/node_modules/lodash/fp/zip.js +5 -0
- package/docs/node_modules/lodash/fp/zipAll.js +5 -0
- package/docs/node_modules/lodash/fp/zipObj.js +1 -0
- package/docs/node_modules/lodash/fp/zipObject.js +5 -0
- package/docs/node_modules/lodash/fp/zipObjectDeep.js +5 -0
- package/docs/node_modules/lodash/fp/zipWith.js +5 -0
- package/docs/node_modules/lodash/fp.js +2 -0
- package/docs/node_modules/lodash/fromPairs.js +28 -0
- package/docs/node_modules/lodash/function.js +25 -0
- package/docs/node_modules/lodash/functions.js +31 -0
- package/docs/node_modules/lodash/functionsIn.js +31 -0
- package/docs/node_modules/lodash/get.js +33 -0
- package/docs/node_modules/lodash/groupBy.js +41 -0
- package/docs/node_modules/lodash/gt.js +29 -0
- package/docs/node_modules/lodash/gte.js +30 -0
- package/docs/node_modules/lodash/has.js +35 -0
- package/docs/node_modules/lodash/hasIn.js +34 -0
- package/docs/node_modules/lodash/head.js +23 -0
- package/docs/node_modules/lodash/identity.js +21 -0
- package/docs/node_modules/lodash/inRange.js +55 -0
- package/docs/node_modules/lodash/includes.js +53 -0
- package/docs/node_modules/lodash/index.js +1 -0
- package/docs/node_modules/lodash/indexOf.js +42 -0
- package/docs/node_modules/lodash/initial.js +22 -0
- package/docs/node_modules/lodash/intersection.js +30 -0
- package/docs/node_modules/lodash/intersectionBy.js +45 -0
- package/docs/node_modules/lodash/intersectionWith.js +41 -0
- package/docs/node_modules/lodash/invert.js +42 -0
- package/docs/node_modules/lodash/invertBy.js +56 -0
- package/docs/node_modules/lodash/invoke.js +24 -0
- package/docs/node_modules/lodash/invokeMap.js +41 -0
- package/docs/node_modules/lodash/isArguments.js +36 -0
- package/docs/node_modules/lodash/isArray.js +26 -0
- package/docs/node_modules/lodash/isArrayBuffer.js +27 -0
- package/docs/node_modules/lodash/isArrayLike.js +33 -0
- package/docs/node_modules/lodash/isArrayLikeObject.js +33 -0
- package/docs/node_modules/lodash/isBoolean.js +29 -0
- package/docs/node_modules/lodash/isBuffer.js +38 -0
- package/docs/node_modules/lodash/isDate.js +27 -0
- package/docs/node_modules/lodash/isElement.js +25 -0
- package/docs/node_modules/lodash/isEmpty.js +77 -0
- package/docs/node_modules/lodash/isEqual.js +35 -0
- package/docs/node_modules/lodash/isEqualWith.js +41 -0
- package/docs/node_modules/lodash/isError.js +36 -0
- package/docs/node_modules/lodash/isFinite.js +36 -0
- package/docs/node_modules/lodash/isFunction.js +37 -0
- package/docs/node_modules/lodash/isInteger.js +33 -0
- package/docs/node_modules/lodash/isLength.js +35 -0
- package/docs/node_modules/lodash/isMap.js +27 -0
- package/docs/node_modules/lodash/isMatch.js +36 -0
- package/docs/node_modules/lodash/isMatchWith.js +41 -0
- package/docs/node_modules/lodash/isNaN.js +38 -0
- package/docs/node_modules/lodash/isNative.js +40 -0
- package/docs/node_modules/lodash/isNil.js +25 -0
- package/docs/node_modules/lodash/isNull.js +22 -0
- package/docs/node_modules/lodash/isNumber.js +38 -0
- package/docs/node_modules/lodash/isObject.js +31 -0
- package/docs/node_modules/lodash/isObjectLike.js +29 -0
- package/docs/node_modules/lodash/isPlainObject.js +62 -0
- package/docs/node_modules/lodash/isRegExp.js +27 -0
- package/docs/node_modules/lodash/isSafeInteger.js +37 -0
- package/docs/node_modules/lodash/isSet.js +27 -0
- package/docs/node_modules/lodash/isString.js +30 -0
- package/docs/node_modules/lodash/isSymbol.js +29 -0
- package/docs/node_modules/lodash/isTypedArray.js +27 -0
- package/docs/node_modules/lodash/isUndefined.js +22 -0
- package/docs/node_modules/lodash/isWeakMap.js +28 -0
- package/docs/node_modules/lodash/isWeakSet.js +28 -0
- package/docs/node_modules/lodash/iteratee.js +53 -0
- package/docs/node_modules/lodash/join.js +26 -0
- package/docs/node_modules/lodash/kebabCase.js +28 -0
- package/docs/node_modules/lodash/keyBy.js +36 -0
- package/docs/node_modules/lodash/keys.js +37 -0
- package/docs/node_modules/lodash/keysIn.js +32 -0
- package/docs/node_modules/lodash/lang.js +58 -0
- package/docs/node_modules/lodash/last.js +20 -0
- package/docs/node_modules/lodash/lastIndexOf.js +46 -0
- package/docs/node_modules/lodash/lodash.js +17209 -0
- package/docs/node_modules/lodash/lodash.min.js +140 -0
- package/docs/node_modules/lodash/lowerCase.js +27 -0
- package/docs/node_modules/lodash/lowerFirst.js +22 -0
- package/docs/node_modules/lodash/lt.js +29 -0
- package/docs/node_modules/lodash/lte.js +30 -0
- package/docs/node_modules/lodash/map.js +53 -0
- package/docs/node_modules/lodash/mapKeys.js +36 -0
- package/docs/node_modules/lodash/mapValues.js +43 -0
- package/docs/node_modules/lodash/matches.js +46 -0
- package/docs/node_modules/lodash/matchesProperty.js +44 -0
- package/docs/node_modules/lodash/math.js +17 -0
- package/docs/node_modules/lodash/max.js +29 -0
- package/docs/node_modules/lodash/maxBy.js +34 -0
- package/docs/node_modules/lodash/mean.js +22 -0
- package/docs/node_modules/lodash/meanBy.js +31 -0
- package/docs/node_modules/lodash/memoize.js +73 -0
- package/docs/node_modules/lodash/merge.js +39 -0
- package/docs/node_modules/lodash/mergeWith.js +39 -0
- package/docs/node_modules/lodash/method.js +34 -0
- package/docs/node_modules/lodash/methodOf.js +33 -0
- package/docs/node_modules/lodash/min.js +29 -0
- package/docs/node_modules/lodash/minBy.js +34 -0
- package/docs/node_modules/lodash/mixin.js +74 -0
- package/docs/node_modules/lodash/multiply.js +22 -0
- package/docs/node_modules/lodash/negate.js +40 -0
- package/docs/node_modules/lodash/next.js +35 -0
- package/docs/node_modules/lodash/noop.js +17 -0
- package/docs/node_modules/lodash/now.js +23 -0
- package/docs/node_modules/lodash/nth.js +29 -0
- package/docs/node_modules/lodash/nthArg.js +32 -0
- package/docs/node_modules/lodash/number.js +5 -0
- package/docs/node_modules/lodash/object.js +49 -0
- package/docs/node_modules/lodash/omit.js +57 -0
- package/docs/node_modules/lodash/omitBy.js +29 -0
- package/docs/node_modules/lodash/once.js +25 -0
- package/docs/node_modules/lodash/orderBy.js +47 -0
- package/docs/node_modules/lodash/over.js +24 -0
- package/docs/node_modules/lodash/overArgs.js +61 -0
- package/docs/node_modules/lodash/overEvery.js +34 -0
- package/docs/node_modules/lodash/overSome.js +37 -0
- package/docs/node_modules/lodash/package.json +17 -0
- package/docs/node_modules/lodash/pad.js +49 -0
- package/docs/node_modules/lodash/padEnd.js +39 -0
- package/docs/node_modules/lodash/padStart.js +39 -0
- package/docs/node_modules/lodash/parseInt.js +43 -0
- package/docs/node_modules/lodash/partial.js +50 -0
- package/docs/node_modules/lodash/partialRight.js +49 -0
- package/docs/node_modules/lodash/partition.js +43 -0
- package/docs/node_modules/lodash/pick.js +25 -0
- package/docs/node_modules/lodash/pickBy.js +37 -0
- package/docs/node_modules/lodash/plant.js +48 -0
- package/docs/node_modules/lodash/property.js +32 -0
- package/docs/node_modules/lodash/propertyOf.js +30 -0
- package/docs/node_modules/lodash/pull.js +29 -0
- package/docs/node_modules/lodash/pullAll.js +29 -0
- package/docs/node_modules/lodash/pullAllBy.js +33 -0
- package/docs/node_modules/lodash/pullAllWith.js +32 -0
- package/docs/node_modules/lodash/pullAt.js +43 -0
- package/docs/node_modules/lodash/random.js +82 -0
- package/docs/node_modules/lodash/range.js +46 -0
- package/docs/node_modules/lodash/rangeRight.js +41 -0
- package/docs/node_modules/lodash/rearg.js +33 -0
- package/docs/node_modules/lodash/reduce.js +51 -0
- package/docs/node_modules/lodash/reduceRight.js +36 -0
- package/docs/node_modules/lodash/reject.js +46 -0
- package/docs/node_modules/lodash/release.md +48 -0
- package/docs/node_modules/lodash/remove.js +53 -0
- package/docs/node_modules/lodash/repeat.js +37 -0
- package/docs/node_modules/lodash/replace.js +29 -0
- package/docs/node_modules/lodash/rest.js +40 -0
- package/docs/node_modules/lodash/result.js +56 -0
- package/docs/node_modules/lodash/reverse.js +34 -0
- package/docs/node_modules/lodash/round.js +26 -0
- package/docs/node_modules/lodash/sample.js +24 -0
- package/docs/node_modules/lodash/sampleSize.js +37 -0
- package/docs/node_modules/lodash/seq.js +16 -0
- package/docs/node_modules/lodash/set.js +35 -0
- package/docs/node_modules/lodash/setWith.js +32 -0
- package/docs/node_modules/lodash/shuffle.js +25 -0
- package/docs/node_modules/lodash/size.js +46 -0
- package/docs/node_modules/lodash/slice.js +37 -0
- package/docs/node_modules/lodash/snakeCase.js +28 -0
- package/docs/node_modules/lodash/some.js +51 -0
- package/docs/node_modules/lodash/sortBy.js +48 -0
- package/docs/node_modules/lodash/sortedIndex.js +24 -0
- package/docs/node_modules/lodash/sortedIndexBy.js +33 -0
- package/docs/node_modules/lodash/sortedIndexOf.js +31 -0
- package/docs/node_modules/lodash/sortedLastIndex.js +25 -0
- package/docs/node_modules/lodash/sortedLastIndexBy.js +33 -0
- package/docs/node_modules/lodash/sortedLastIndexOf.js +31 -0
- package/docs/node_modules/lodash/sortedUniq.js +24 -0
- package/docs/node_modules/lodash/sortedUniqBy.js +26 -0
- package/docs/node_modules/lodash/split.js +52 -0
- package/docs/node_modules/lodash/spread.js +63 -0
- package/docs/node_modules/lodash/startCase.js +29 -0
- package/docs/node_modules/lodash/startsWith.js +39 -0
- package/docs/node_modules/lodash/string.js +33 -0
- package/docs/node_modules/lodash/stubArray.js +23 -0
- package/docs/node_modules/lodash/stubFalse.js +18 -0
- package/docs/node_modules/lodash/stubObject.js +23 -0
- package/docs/node_modules/lodash/stubString.js +18 -0
- package/docs/node_modules/lodash/stubTrue.js +18 -0
- package/docs/node_modules/lodash/subtract.js +22 -0
- package/docs/node_modules/lodash/sum.js +24 -0
- package/docs/node_modules/lodash/sumBy.js +33 -0
- package/docs/node_modules/lodash/tail.js +22 -0
- package/docs/node_modules/lodash/take.js +37 -0
- package/docs/node_modules/lodash/takeRight.js +39 -0
- package/docs/node_modules/lodash/takeRightWhile.js +45 -0
- package/docs/node_modules/lodash/takeWhile.js +45 -0
- package/docs/node_modules/lodash/tap.js +29 -0
- package/docs/node_modules/lodash/template.js +272 -0
- package/docs/node_modules/lodash/templateSettings.js +67 -0
- package/docs/node_modules/lodash/throttle.js +69 -0
- package/docs/node_modules/lodash/thru.js +28 -0
- package/docs/node_modules/lodash/times.js +51 -0
- package/docs/node_modules/lodash/toArray.js +58 -0
- package/docs/node_modules/lodash/toFinite.js +42 -0
- package/docs/node_modules/lodash/toInteger.js +36 -0
- package/docs/node_modules/lodash/toIterator.js +23 -0
- package/docs/node_modules/lodash/toJSON.js +1 -0
- package/docs/node_modules/lodash/toLength.js +38 -0
- package/docs/node_modules/lodash/toLower.js +28 -0
- package/docs/node_modules/lodash/toNumber.js +64 -0
- package/docs/node_modules/lodash/toPairs.js +30 -0
- package/docs/node_modules/lodash/toPairsIn.js +30 -0
- package/docs/node_modules/lodash/toPath.js +33 -0
- package/docs/node_modules/lodash/toPlainObject.js +32 -0
- package/docs/node_modules/lodash/toSafeInteger.js +37 -0
- package/docs/node_modules/lodash/toString.js +28 -0
- package/docs/node_modules/lodash/toUpper.js +28 -0
- package/docs/node_modules/lodash/transform.js +65 -0
- package/docs/node_modules/lodash/trim.js +47 -0
- package/docs/node_modules/lodash/trimEnd.js +41 -0
- package/docs/node_modules/lodash/trimStart.js +43 -0
- package/docs/node_modules/lodash/truncate.js +111 -0
- package/docs/node_modules/lodash/unary.js +22 -0
- package/docs/node_modules/lodash/unescape.js +34 -0
- package/docs/node_modules/lodash/union.js +26 -0
- package/docs/node_modules/lodash/unionBy.js +39 -0
- package/docs/node_modules/lodash/unionWith.js +34 -0
- package/docs/node_modules/lodash/uniq.js +25 -0
- package/docs/node_modules/lodash/uniqBy.js +31 -0
- package/docs/node_modules/lodash/uniqWith.js +28 -0
- package/docs/node_modules/lodash/uniqueId.js +28 -0
- package/docs/node_modules/lodash/unset.js +34 -0
- package/docs/node_modules/lodash/unzip.js +45 -0
- package/docs/node_modules/lodash/unzipWith.js +39 -0
- package/docs/node_modules/lodash/update.js +35 -0
- package/docs/node_modules/lodash/updateWith.js +33 -0
- package/docs/node_modules/lodash/upperCase.js +27 -0
- package/docs/node_modules/lodash/upperFirst.js +22 -0
- package/docs/node_modules/lodash/util.js +34 -0
- package/docs/node_modules/lodash/value.js +1 -0
- package/docs/node_modules/lodash/valueOf.js +1 -0
- package/docs/node_modules/lodash/values.js +34 -0
- package/docs/node_modules/lodash/valuesIn.js +32 -0
- package/docs/node_modules/lodash/without.js +31 -0
- package/docs/node_modules/lodash/words.js +35 -0
- package/docs/node_modules/lodash/wrap.js +30 -0
- package/docs/node_modules/lodash/wrapperAt.js +48 -0
- package/docs/node_modules/lodash/wrapperChain.js +34 -0
- package/docs/node_modules/lodash/wrapperLodash.js +147 -0
- package/docs/node_modules/lodash/wrapperReverse.js +44 -0
- package/docs/node_modules/lodash/wrapperValue.js +21 -0
- package/docs/node_modules/lodash/xor.js +28 -0
- package/docs/node_modules/lodash/xorBy.js +39 -0
- package/docs/node_modules/lodash/xorWith.js +34 -0
- package/docs/node_modules/lodash/zip.js +22 -0
- package/docs/node_modules/lodash/zipObject.js +24 -0
- package/docs/node_modules/lodash/zipObjectDeep.js +23 -0
- package/docs/node_modules/lodash/zipWith.js +32 -0
- package/docs/node_modules/markdown-it/LICENSE +22 -0
- package/docs/node_modules/markdown-it/README.md +324 -0
- package/docs/node_modules/markdown-it/bin/markdown-it.mjs +107 -0
- package/docs/node_modules/markdown-it/dist/index.cjs.js +5540 -0
- package/docs/node_modules/markdown-it/dist/markdown-it.js +6963 -0
- package/docs/node_modules/markdown-it/dist/markdown-it.min.js +2 -0
- package/docs/node_modules/markdown-it/index.mjs +1 -0
- package/docs/node_modules/markdown-it/lib/common/html_blocks.mjs +67 -0
- package/docs/node_modules/markdown-it/lib/common/html_re.mjs +25 -0
- package/docs/node_modules/markdown-it/lib/common/utils.mjs +304 -0
- package/docs/node_modules/markdown-it/lib/helpers/index.mjs +11 -0
- package/docs/node_modules/markdown-it/lib/helpers/parse_link_destination.mjs +77 -0
- package/docs/node_modules/markdown-it/lib/helpers/parse_link_label.mjs +49 -0
- package/docs/node_modules/markdown-it/lib/helpers/parse_link_title.mjs +66 -0
- package/docs/node_modules/markdown-it/lib/index.mjs +565 -0
- package/docs/node_modules/markdown-it/lib/parser_block.mjs +134 -0
- package/docs/node_modules/markdown-it/lib/parser_core.mjs +62 -0
- package/docs/node_modules/markdown-it/lib/parser_inline.mjs +197 -0
- package/docs/node_modules/markdown-it/lib/presets/commonmark.mjs +88 -0
- package/docs/node_modules/markdown-it/lib/presets/default.mjs +47 -0
- package/docs/node_modules/markdown-it/lib/presets/zero.mjs +70 -0
- package/docs/node_modules/markdown-it/lib/renderer.mjs +322 -0
- package/docs/node_modules/markdown-it/lib/ruler.mjs +340 -0
- package/docs/node_modules/markdown-it/lib/rules_block/blockquote.mjs +209 -0
- package/docs/node_modules/markdown-it/lib/rules_block/code.mjs +30 -0
- package/docs/node_modules/markdown-it/lib/rules_block/fence.mjs +94 -0
- package/docs/node_modules/markdown-it/lib/rules_block/heading.mjs +51 -0
- package/docs/node_modules/markdown-it/lib/rules_block/hr.mjs +40 -0
- package/docs/node_modules/markdown-it/lib/rules_block/html_block.mjs +69 -0
- package/docs/node_modules/markdown-it/lib/rules_block/lheading.mjs +82 -0
- package/docs/node_modules/markdown-it/lib/rules_block/list.mjs +331 -0
- package/docs/node_modules/markdown-it/lib/rules_block/paragraph.mjs +46 -0
- package/docs/node_modules/markdown-it/lib/rules_block/reference.mjs +212 -0
- package/docs/node_modules/markdown-it/lib/rules_block/state_block.mjs +220 -0
- package/docs/node_modules/markdown-it/lib/rules_block/table.mjs +228 -0
- package/docs/node_modules/markdown-it/lib/rules_core/block.mjs +13 -0
- package/docs/node_modules/markdown-it/lib/rules_core/inline.mjs +11 -0
- package/docs/node_modules/markdown-it/lib/rules_core/linkify.mjs +134 -0
- package/docs/node_modules/markdown-it/lib/rules_core/normalize.mjs +17 -0
- package/docs/node_modules/markdown-it/lib/rules_core/replacements.mjs +101 -0
- package/docs/node_modules/markdown-it/lib/rules_core/smartquotes.mjs +193 -0
- package/docs/node_modules/markdown-it/lib/rules_core/state_core.mjs +17 -0
- package/docs/node_modules/markdown-it/lib/rules_core/text_join.mjs +43 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/autolink.mjs +72 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/backticks.mjs +60 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs +124 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/emphasis.mjs +123 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/entity.mjs +51 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/escape.mjs +69 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/fragments_join.mjs +38 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/html_inline.mjs +50 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/image.mjs +138 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/link.mjs +139 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/linkify.mjs +56 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/newline.mjs +42 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/state_inline.mjs +123 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/strikethrough.mjs +127 -0
- package/docs/node_modules/markdown-it/lib/rules_inline/text.mjs +86 -0
- package/docs/node_modules/markdown-it/lib/token.mjs +191 -0
- package/docs/node_modules/markdown-it/package.json +92 -0
- package/docs/node_modules/markdown-it-anchor/README.md +586 -0
- package/docs/node_modules/markdown-it-anchor/UNLICENSE +24 -0
- package/docs/node_modules/markdown-it-anchor/dist/markdownItAnchor.js +2 -0
- package/docs/node_modules/markdown-it-anchor/dist/markdownItAnchor.js.map +1 -0
- package/docs/node_modules/markdown-it-anchor/dist/markdownItAnchor.mjs +2 -0
- package/docs/node_modules/markdown-it-anchor/dist/markdownItAnchor.mjs.map +1 -0
- package/docs/node_modules/markdown-it-anchor/dist/markdownItAnchor.modern.js +2 -0
- package/docs/node_modules/markdown-it-anchor/dist/markdownItAnchor.modern.js.map +1 -0
- package/docs/node_modules/markdown-it-anchor/dist/markdownItAnchor.modern.mjs +2 -0
- package/docs/node_modules/markdown-it-anchor/dist/markdownItAnchor.modern.mjs.map +1 -0
- package/docs/node_modules/markdown-it-anchor/dist/markdownItAnchor.umd.js +2 -0
- package/docs/node_modules/markdown-it-anchor/dist/markdownItAnchor.umd.js.map +1 -0
- package/docs/node_modules/markdown-it-anchor/package.json +53 -0
- package/docs/node_modules/markdown-it-anchor/runkit.js +22 -0
- package/docs/node_modules/markdown-it-anchor/types/index.d.ts +71 -0
- package/docs/node_modules/markdown-it-anchor/types/package.json +3 -0
- package/docs/node_modules/marked/LICENSE.md +44 -0
- package/docs/node_modules/marked/README.md +99 -0
- package/docs/node_modules/marked/bin/marked.js +217 -0
- package/docs/node_modules/marked/lib/marked.cjs +2811 -0
- package/docs/node_modules/marked/lib/marked.esm.js +2887 -0
- package/docs/node_modules/marked/lib/marked.umd.js +2817 -0
- package/docs/node_modules/marked/man/marked.1 +92 -0
- package/docs/node_modules/marked/man/marked.1.txt +86 -0
- package/docs/node_modules/marked/marked.min.js +6 -0
- package/docs/node_modules/marked/package.json +93 -0
- package/docs/node_modules/marked/src/Hooks.js +26 -0
- package/docs/node_modules/marked/src/Lexer.js +503 -0
- package/docs/node_modules/marked/src/Parser.js +286 -0
- package/docs/node_modules/marked/src/Renderer.js +203 -0
- package/docs/node_modules/marked/src/Slugger.js +55 -0
- package/docs/node_modules/marked/src/TextRenderer.js +42 -0
- package/docs/node_modules/marked/src/Tokenizer.js +794 -0
- package/docs/node_modules/marked/src/defaults.js +30 -0
- package/docs/node_modules/marked/src/helpers.js +259 -0
- package/docs/node_modules/marked/src/marked.js +416 -0
- package/docs/node_modules/marked/src/rules.js +309 -0
- package/docs/node_modules/mdurl/LICENSE +45 -0
- package/docs/node_modules/mdurl/README.md +102 -0
- package/docs/node_modules/mdurl/build/index.cjs.js +534 -0
- package/docs/node_modules/mdurl/index.mjs +11 -0
- package/docs/node_modules/mdurl/lib/decode.mjs +112 -0
- package/docs/node_modules/mdurl/lib/encode.mjs +89 -0
- package/docs/node_modules/mdurl/lib/format.mjs +21 -0
- package/docs/node_modules/mdurl/lib/parse.mjs +308 -0
- package/docs/node_modules/mdurl/package.json +37 -0
- package/docs/node_modules/mkdirp/CHANGELOG.md +15 -0
- package/docs/node_modules/mkdirp/LICENSE +21 -0
- package/docs/node_modules/mkdirp/bin/cmd.js +68 -0
- package/docs/node_modules/mkdirp/index.js +31 -0
- package/docs/node_modules/mkdirp/lib/find-made.js +29 -0
- package/docs/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
- package/docs/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
- package/docs/node_modules/mkdirp/lib/opts-arg.js +23 -0
- package/docs/node_modules/mkdirp/lib/path-arg.js +29 -0
- package/docs/node_modules/mkdirp/lib/use-native.js +10 -0
- package/docs/node_modules/mkdirp/package.json +44 -0
- package/docs/node_modules/mkdirp/readme.markdown +266 -0
- package/docs/node_modules/punycode.js/LICENSE-MIT.txt +20 -0
- package/docs/node_modules/punycode.js/README.md +148 -0
- package/docs/node_modules/punycode.js/package.json +58 -0
- package/docs/node_modules/punycode.js/punycode.es6.js +444 -0
- package/docs/node_modules/punycode.js/punycode.js +443 -0
- package/docs/node_modules/requizzle/LICENSE +22 -0
- package/docs/node_modules/requizzle/README.md +174 -0
- package/docs/node_modules/requizzle/index.js +28 -0
- package/docs/node_modules/requizzle/lib/loader.js +162 -0
- package/docs/node_modules/requizzle/lib/requizzle.js +102 -0
- package/docs/node_modules/requizzle/lib/wrappers/extras.js +21 -0
- package/docs/node_modules/requizzle/lib/wrappers/requirepaths.js +48 -0
- package/docs/node_modules/requizzle/lib/wrappers/strict.js +13 -0
- package/docs/node_modules/requizzle/package.json +40 -0
- package/docs/node_modules/strip-json-comments/index.d.ts +36 -0
- package/docs/node_modules/strip-json-comments/index.js +77 -0
- package/docs/node_modules/strip-json-comments/license +9 -0
- package/docs/node_modules/strip-json-comments/package.json +47 -0
- package/docs/node_modules/strip-json-comments/readme.md +78 -0
- package/docs/node_modules/uc.micro/LICENSE.txt +20 -0
- package/docs/node_modules/uc.micro/README.md +14 -0
- package/docs/node_modules/uc.micro/build/index.cjs.js +20 -0
- package/docs/node_modules/uc.micro/categories/Cc/regex.mjs +1 -0
- package/docs/node_modules/uc.micro/categories/Cf/regex.mjs +1 -0
- package/docs/node_modules/uc.micro/categories/P/regex.mjs +1 -0
- package/docs/node_modules/uc.micro/categories/S/regex.mjs +1 -0
- package/docs/node_modules/uc.micro/categories/Z/regex.mjs +1 -0
- package/docs/node_modules/uc.micro/index.mjs +8 -0
- package/docs/node_modules/uc.micro/package.json +37 -0
- package/docs/node_modules/uc.micro/properties/Any/regex.mjs +1 -0
- package/docs/node_modules/underscore/LICENSE +22 -0
- package/docs/node_modules/underscore/README.md +34 -0
- package/docs/node_modules/underscore/amd/_baseCreate.js +21 -0
- package/docs/node_modules/underscore/amd/_baseIteratee.js +15 -0
- package/docs/node_modules/underscore/amd/_cb.js +12 -0
- package/docs/node_modules/underscore/amd/_chainResult.js +10 -0
- package/docs/node_modules/underscore/amd/_collectNonEnumProps.js +42 -0
- package/docs/node_modules/underscore/amd/_createAssigner.js +24 -0
- package/docs/node_modules/underscore/amd/_createEscaper.js +21 -0
- package/docs/node_modules/underscore/amd/_createIndexFinder.js +30 -0
- package/docs/node_modules/underscore/amd/_createPredicateIndexFinder.js +18 -0
- package/docs/node_modules/underscore/amd/_createReduce.js +30 -0
- package/docs/node_modules/underscore/amd/_createSizePropertyCheck.js +13 -0
- package/docs/node_modules/underscore/amd/_deepGet.js +15 -0
- package/docs/node_modules/underscore/amd/_escapeMap.js +15 -0
- package/docs/node_modules/underscore/amd/_executeBound.js +16 -0
- package/docs/node_modules/underscore/amd/_flatten.js +32 -0
- package/docs/node_modules/underscore/amd/_getByteLength.js +8 -0
- package/docs/node_modules/underscore/amd/_getLength.js +8 -0
- package/docs/node_modules/underscore/amd/_group.js +18 -0
- package/docs/node_modules/underscore/amd/_has.js +10 -0
- package/docs/node_modules/underscore/amd/_hasObjectTag.js +7 -0
- package/docs/node_modules/underscore/amd/_isArrayLike.js +11 -0
- package/docs/node_modules/underscore/amd/_isBufferLike.js +9 -0
- package/docs/node_modules/underscore/amd/_keyInObj.js +11 -0
- package/docs/node_modules/underscore/amd/_methodFingerprint.js +44 -0
- package/docs/node_modules/underscore/amd/_optimizeCb.js +27 -0
- package/docs/node_modules/underscore/amd/_set.js +21 -0
- package/docs/node_modules/underscore/amd/_setup.js +70 -0
- package/docs/node_modules/underscore/amd/_shallowProperty.js +12 -0
- package/docs/node_modules/underscore/amd/_stringTagBug.js +19 -0
- package/docs/node_modules/underscore/amd/_tagTester.js +13 -0
- package/docs/node_modules/underscore/amd/_toBufferView.js +15 -0
- package/docs/node_modules/underscore/amd/_toPath.js +11 -0
- package/docs/node_modules/underscore/amd/_unescapeMap.js +8 -0
- package/docs/node_modules/underscore/amd/after.js +14 -0
- package/docs/node_modules/underscore/amd/allKeys.js +15 -0
- package/docs/node_modules/underscore/amd/before.js +18 -0
- package/docs/node_modules/underscore/amd/bind.js +15 -0
- package/docs/node_modules/underscore/amd/bindAll.js +19 -0
- package/docs/node_modules/underscore/amd/chain.js +12 -0
- package/docs/node_modules/underscore/amd/chunk.js +17 -0
- package/docs/node_modules/underscore/amd/clone.js +11 -0
- package/docs/node_modules/underscore/amd/compact.js +10 -0
- package/docs/node_modules/underscore/amd/compose.js +18 -0
- package/docs/node_modules/underscore/amd/constant.js +12 -0
- package/docs/node_modules/underscore/amd/contains.js +12 -0
- package/docs/node_modules/underscore/amd/countBy.js +12 -0
- package/docs/node_modules/underscore/amd/create.js +14 -0
- package/docs/node_modules/underscore/amd/debounce.js +43 -0
- package/docs/node_modules/underscore/amd/defaults.js +8 -0
- package/docs/node_modules/underscore/amd/defer.js +9 -0
- package/docs/node_modules/underscore/amd/delay.js +13 -0
- package/docs/node_modules/underscore/amd/difference.js +14 -0
- package/docs/node_modules/underscore/amd/each.js +25 -0
- package/docs/node_modules/underscore/amd/escape.js +8 -0
- package/docs/node_modules/underscore/amd/every.js +17 -0
- package/docs/node_modules/underscore/amd/extend.js +8 -0
- package/docs/node_modules/underscore/amd/extendOwn.js +10 -0
- package/docs/node_modules/underscore/amd/filter.js +15 -0
- package/docs/node_modules/underscore/amd/find.js +12 -0
- package/docs/node_modules/underscore/amd/findIndex.js +8 -0
- package/docs/node_modules/underscore/amd/findKey.js +15 -0
- package/docs/node_modules/underscore/amd/findLastIndex.js +8 -0
- package/docs/node_modules/underscore/amd/findWhere.js +11 -0
- package/docs/node_modules/underscore/amd/first.js +13 -0
- package/docs/node_modules/underscore/amd/flatten.js +11 -0
- package/docs/node_modules/underscore/amd/functions.js +14 -0
- package/docs/node_modules/underscore/amd/get.js +14 -0
- package/docs/node_modules/underscore/amd/groupBy.js +11 -0
- package/docs/node_modules/underscore/amd/has.js +19 -0
- package/docs/node_modules/underscore/amd/identity.js +10 -0
- package/docs/node_modules/underscore/amd/index-default.js +12 -0
- package/docs/node_modules/underscore/amd/index.js +154 -0
- package/docs/node_modules/underscore/amd/indexBy.js +11 -0
- package/docs/node_modules/underscore/amd/indexOf.js +11 -0
- package/docs/node_modules/underscore/amd/initial.js +12 -0
- package/docs/node_modules/underscore/amd/intersection.js +22 -0
- package/docs/node_modules/underscore/amd/invert.js +15 -0
- package/docs/node_modules/underscore/amd/invoke.js +28 -0
- package/docs/node_modules/underscore/amd/isArguments.js +19 -0
- package/docs/node_modules/underscore/amd/isArray.js +9 -0
- package/docs/node_modules/underscore/amd/isArrayBuffer.js +7 -0
- package/docs/node_modules/underscore/amd/isBoolean.js +10 -0
- package/docs/node_modules/underscore/amd/isDataView.js +17 -0
- package/docs/node_modules/underscore/amd/isDate.js +7 -0
- package/docs/node_modules/underscore/amd/isElement.js +10 -0
- package/docs/node_modules/underscore/amd/isEmpty.js +18 -0
- package/docs/node_modules/underscore/amd/isEqual.js +133 -0
- package/docs/node_modules/underscore/amd/isError.js +7 -0
- package/docs/node_modules/underscore/amd/isFinite.js +10 -0
- package/docs/node_modules/underscore/amd/isFunction.js +18 -0
- package/docs/node_modules/underscore/amd/isMap.js +7 -0
- package/docs/node_modules/underscore/amd/isMatch.js +17 -0
- package/docs/node_modules/underscore/amd/isNaN.js +10 -0
- package/docs/node_modules/underscore/amd/isNull.js +10 -0
- package/docs/node_modules/underscore/amd/isNumber.js +7 -0
- package/docs/node_modules/underscore/amd/isObject.js +11 -0
- package/docs/node_modules/underscore/amd/isRegExp.js +7 -0
- package/docs/node_modules/underscore/amd/isSet.js +7 -0
- package/docs/node_modules/underscore/amd/isString.js +7 -0
- package/docs/node_modules/underscore/amd/isSymbol.js +7 -0
- package/docs/node_modules/underscore/amd/isTypedArray.js +16 -0
- package/docs/node_modules/underscore/amd/isUndefined.js +10 -0
- package/docs/node_modules/underscore/amd/isWeakMap.js +7 -0
- package/docs/node_modules/underscore/amd/isWeakSet.js +7 -0
- package/docs/node_modules/underscore/amd/iteratee.js +13 -0
- package/docs/node_modules/underscore/amd/keys.js +17 -0
- package/docs/node_modules/underscore/amd/last.js +13 -0
- package/docs/node_modules/underscore/amd/lastIndexOf.js +9 -0
- package/docs/node_modules/underscore/amd/map.js +18 -0
- package/docs/node_modules/underscore/amd/mapObject.js +19 -0
- package/docs/node_modules/underscore/amd/matcher.js +14 -0
- package/docs/node_modules/underscore/amd/max.js +30 -0
- package/docs/node_modules/underscore/amd/memoize.js +17 -0
- package/docs/node_modules/underscore/amd/min.js +30 -0
- package/docs/node_modules/underscore/amd/mixin.js +18 -0
- package/docs/node_modules/underscore/amd/negate.js +12 -0
- package/docs/node_modules/underscore/amd/noop.js +8 -0
- package/docs/node_modules/underscore/amd/now.js +10 -0
- package/docs/node_modules/underscore/amd/object.js +20 -0
- package/docs/node_modules/underscore/amd/omit.js +20 -0
- package/docs/node_modules/underscore/amd/once.js +9 -0
- package/docs/node_modules/underscore/amd/pairs.js +17 -0
- package/docs/node_modules/underscore/amd/partial.js +25 -0
- package/docs/node_modules/underscore/amd/partition.js +11 -0
- package/docs/node_modules/underscore/amd/pick.js +25 -0
- package/docs/node_modules/underscore/amd/pluck.js +10 -0
- package/docs/node_modules/underscore/amd/property.js +14 -0
- package/docs/node_modules/underscore/amd/propertyOf.js +13 -0
- package/docs/node_modules/underscore/amd/random.js +14 -0
- package/docs/node_modules/underscore/amd/range.js +27 -0
- package/docs/node_modules/underscore/amd/reduce.js +9 -0
- package/docs/node_modules/underscore/amd/reduceRight.js +8 -0
- package/docs/node_modules/underscore/amd/reject.js +10 -0
- package/docs/node_modules/underscore/amd/rest.js +12 -0
- package/docs/node_modules/underscore/amd/restArguments.js +33 -0
- package/docs/node_modules/underscore/amd/result.js +25 -0
- package/docs/node_modules/underscore/amd/sample.js +27 -0
- package/docs/node_modules/underscore/amd/set.js +15 -0
- package/docs/node_modules/underscore/amd/shuffle.js +10 -0
- package/docs/node_modules/underscore/amd/size.js +11 -0
- package/docs/node_modules/underscore/amd/some.js +17 -0
- package/docs/node_modules/underscore/amd/sortBy.js +26 -0
- package/docs/node_modules/underscore/amd/sortedIndex.js +18 -0
- package/docs/node_modules/underscore/amd/tap.js +13 -0
- package/docs/node_modules/underscore/amd/template.js +103 -0
- package/docs/node_modules/underscore/amd/templateSettings.js +13 -0
- package/docs/node_modules/underscore/amd/throttle.js +51 -0
- package/docs/node_modules/underscore/amd/times.js +13 -0
- package/docs/node_modules/underscore/amd/toArray.js +18 -0
- package/docs/node_modules/underscore/amd/toPath.js +12 -0
- package/docs/node_modules/underscore/amd/underscore-array-methods.js +30 -0
- package/docs/node_modules/underscore/amd/underscore.js +29 -0
- package/docs/node_modules/underscore/amd/unescape.js +8 -0
- package/docs/node_modules/underscore/amd/union.js +11 -0
- package/docs/node_modules/underscore/amd/uniq.js +37 -0
- package/docs/node_modules/underscore/amd/uniqueId.js +13 -0
- package/docs/node_modules/underscore/amd/unzip.js +17 -0
- package/docs/node_modules/underscore/amd/values.js +16 -0
- package/docs/node_modules/underscore/amd/where.js +11 -0
- package/docs/node_modules/underscore/amd/without.js +10 -0
- package/docs/node_modules/underscore/amd/wrap.js +12 -0
- package/docs/node_modules/underscore/amd/zip.js +9 -0
- package/docs/node_modules/underscore/cjs/_baseCreate.js +20 -0
- package/docs/node_modules/underscore/cjs/_baseIteratee.js +19 -0
- package/docs/node_modules/underscore/cjs/_cb.js +12 -0
- package/docs/node_modules/underscore/cjs/_chainResult.js +8 -0
- package/docs/node_modules/underscore/cjs/_collectNonEnumProps.js +42 -0
- package/docs/node_modules/underscore/cjs/_createAssigner.js +20 -0
- package/docs/node_modules/underscore/cjs/_createEscaper.js +19 -0
- package/docs/node_modules/underscore/cjs/_createIndexFinder.js +30 -0
- package/docs/node_modules/underscore/cjs/_createPredicateIndexFinder.js +17 -0
- package/docs/node_modules/underscore/cjs/_createReduce.js +30 -0
- package/docs/node_modules/underscore/cjs/_createSizePropertyCheck.js +11 -0
- package/docs/node_modules/underscore/cjs/_deepGet.js +11 -0
- package/docs/node_modules/underscore/cjs/_escapeMap.js +11 -0
- package/docs/node_modules/underscore/cjs/_executeBound.js +15 -0
- package/docs/node_modules/underscore/cjs/_flatten.js +33 -0
- package/docs/node_modules/underscore/cjs/_getByteLength.js +6 -0
- package/docs/node_modules/underscore/cjs/_getLength.js +6 -0
- package/docs/node_modules/underscore/cjs/_group.js +17 -0
- package/docs/node_modules/underscore/cjs/_has.js +8 -0
- package/docs/node_modules/underscore/cjs/_hasObjectTag.js +5 -0
- package/docs/node_modules/underscore/cjs/_isArrayLike.js +10 -0
- package/docs/node_modules/underscore/cjs/_isBufferLike.js +8 -0
- package/docs/node_modules/underscore/cjs/_keyInObj.js +7 -0
- package/docs/node_modules/underscore/cjs/_methodFingerprint.js +44 -0
- package/docs/node_modules/underscore/cjs/_optimizeCb.js +23 -0
- package/docs/node_modules/underscore/cjs/_set.js +21 -0
- package/docs/node_modules/underscore/cjs/_setup.js +66 -0
- package/docs/node_modules/underscore/cjs/_shallowProperty.js +8 -0
- package/docs/node_modules/underscore/cjs/_stringTagBug.js +18 -0
- package/docs/node_modules/underscore/cjs/_tagTester.js +11 -0
- package/docs/node_modules/underscore/cjs/_toBufferView.js +13 -0
- package/docs/node_modules/underscore/cjs/_toPath.js +10 -0
- package/docs/node_modules/underscore/cjs/_unescapeMap.js +7 -0
- package/docs/node_modules/underscore/cjs/after.js +10 -0
- package/docs/node_modules/underscore/cjs/allKeys.js +15 -0
- package/docs/node_modules/underscore/cjs/before.js +14 -0
- package/docs/node_modules/underscore/cjs/bind.js +15 -0
- package/docs/node_modules/underscore/cjs/bindAll.js +19 -0
- package/docs/node_modules/underscore/cjs/chain.js +10 -0
- package/docs/node_modules/underscore/cjs/chunk.js +15 -0
- package/docs/node_modules/underscore/cjs/clone.js +11 -0
- package/docs/node_modules/underscore/cjs/compact.js +8 -0
- package/docs/node_modules/underscore/cjs/compose.js +14 -0
- package/docs/node_modules/underscore/cjs/constant.js +8 -0
- package/docs/node_modules/underscore/cjs/contains.js +12 -0
- package/docs/node_modules/underscore/cjs/countBy.js +11 -0
- package/docs/node_modules/underscore/cjs/create.js +13 -0
- package/docs/node_modules/underscore/cjs/debounce.js +42 -0
- package/docs/node_modules/underscore/cjs/defaults.js +7 -0
- package/docs/node_modules/underscore/cjs/defer.js +9 -0
- package/docs/node_modules/underscore/cjs/delay.js +11 -0
- package/docs/node_modules/underscore/cjs/difference.js +15 -0
- package/docs/node_modules/underscore/cjs/each.js +25 -0
- package/docs/node_modules/underscore/cjs/escape.js +7 -0
- package/docs/node_modules/underscore/cjs/every.js +17 -0
- package/docs/node_modules/underscore/cjs/extend.js +7 -0
- package/docs/node_modules/underscore/cjs/extendOwn.js +9 -0
- package/docs/node_modules/underscore/cjs/filter.js +14 -0
- package/docs/node_modules/underscore/cjs/find.js +12 -0
- package/docs/node_modules/underscore/cjs/findIndex.js +6 -0
- package/docs/node_modules/underscore/cjs/findKey.js +14 -0
- package/docs/node_modules/underscore/cjs/findLastIndex.js +6 -0
- package/docs/node_modules/underscore/cjs/findWhere.js +10 -0
- package/docs/node_modules/underscore/cjs/first.js +11 -0
- package/docs/node_modules/underscore/cjs/flatten.js +9 -0
- package/docs/node_modules/underscore/cjs/functions.js +12 -0
- package/docs/node_modules/underscore/cjs/get.js +14 -0
- package/docs/node_modules/underscore/cjs/groupBy.js +10 -0
- package/docs/node_modules/underscore/cjs/has.js +18 -0
- package/docs/node_modules/underscore/cjs/identity.js +6 -0
- package/docs/node_modules/underscore/cjs/index-default.js +11 -0
- package/docs/node_modules/underscore/cjs/index.js +278 -0
- package/docs/node_modules/underscore/cjs/indexBy.js +9 -0
- package/docs/node_modules/underscore/cjs/indexOf.js +11 -0
- package/docs/node_modules/underscore/cjs/initial.js +10 -0
- package/docs/node_modules/underscore/cjs/intersection.js +21 -0
- package/docs/node_modules/underscore/cjs/invert.js +13 -0
- package/docs/node_modules/underscore/cjs/invoke.js +30 -0
- package/docs/node_modules/underscore/cjs/isArguments.js +18 -0
- package/docs/node_modules/underscore/cjs/isArray.js +8 -0
- package/docs/node_modules/underscore/cjs/isArrayBuffer.js +5 -0
- package/docs/node_modules/underscore/cjs/isBoolean.js +8 -0
- package/docs/node_modules/underscore/cjs/isDataView.js +18 -0
- package/docs/node_modules/underscore/cjs/isDate.js +5 -0
- package/docs/node_modules/underscore/cjs/isElement.js +6 -0
- package/docs/node_modules/underscore/cjs/isEmpty.js +20 -0
- package/docs/node_modules/underscore/cjs/isEqual.js +140 -0
- package/docs/node_modules/underscore/cjs/isError.js +5 -0
- package/docs/node_modules/underscore/cjs/isFinite.js +9 -0
- package/docs/node_modules/underscore/cjs/isFunction.js +17 -0
- package/docs/node_modules/underscore/cjs/isMap.js +7 -0
- package/docs/node_modules/underscore/cjs/isMatch.js +15 -0
- package/docs/node_modules/underscore/cjs/isNaN.js +9 -0
- package/docs/node_modules/underscore/cjs/isNull.js +6 -0
- package/docs/node_modules/underscore/cjs/isNumber.js +5 -0
- package/docs/node_modules/underscore/cjs/isObject.js +7 -0
- package/docs/node_modules/underscore/cjs/isRegExp.js +5 -0
- package/docs/node_modules/underscore/cjs/isSet.js +7 -0
- package/docs/node_modules/underscore/cjs/isString.js +5 -0
- package/docs/node_modules/underscore/cjs/isSymbol.js +5 -0
- package/docs/node_modules/underscore/cjs/isTypedArray.js +17 -0
- package/docs/node_modules/underscore/cjs/isUndefined.js +6 -0
- package/docs/node_modules/underscore/cjs/isWeakMap.js +7 -0
- package/docs/node_modules/underscore/cjs/isWeakSet.js +5 -0
- package/docs/node_modules/underscore/cjs/iteratee.js +12 -0
- package/docs/node_modules/underscore/cjs/keys.js +18 -0
- package/docs/node_modules/underscore/cjs/last.js +11 -0
- package/docs/node_modules/underscore/cjs/lastIndexOf.js +8 -0
- package/docs/node_modules/underscore/cjs/map.js +18 -0
- package/docs/node_modules/underscore/cjs/mapObject.js +18 -0
- package/docs/node_modules/underscore/cjs/matcher.js +13 -0
- package/docs/node_modules/underscore/cjs/max.js +31 -0
- package/docs/node_modules/underscore/cjs/memoize.js +15 -0
- package/docs/node_modules/underscore/cjs/min.js +31 -0
- package/docs/node_modules/underscore/cjs/mixin.js +20 -0
- package/docs/node_modules/underscore/cjs/negate.js +8 -0
- package/docs/node_modules/underscore/cjs/noop.js +4 -0
- package/docs/node_modules/underscore/cjs/now.js +6 -0
- package/docs/node_modules/underscore/cjs/object.js +18 -0
- package/docs/node_modules/underscore/cjs/omit.js +24 -0
- package/docs/node_modules/underscore/cjs/once.js +8 -0
- package/docs/node_modules/underscore/cjs/pairs.js +15 -0
- package/docs/node_modules/underscore/cjs/partial.js +25 -0
- package/docs/node_modules/underscore/cjs/partition.js +9 -0
- package/docs/node_modules/underscore/cjs/pick.js +28 -0
- package/docs/node_modules/underscore/cjs/pluck.js +9 -0
- package/docs/node_modules/underscore/cjs/property.js +13 -0
- package/docs/node_modules/underscore/cjs/propertyOf.js +12 -0
- package/docs/node_modules/underscore/cjs/random.js +10 -0
- package/docs/node_modules/underscore/cjs/range.js +23 -0
- package/docs/node_modules/underscore/cjs/reduce.js +7 -0
- package/docs/node_modules/underscore/cjs/reduceRight.js +6 -0
- package/docs/node_modules/underscore/cjs/reject.js +10 -0
- package/docs/node_modules/underscore/cjs/rest.js +10 -0
- package/docs/node_modules/underscore/cjs/restArguments.js +29 -0
- package/docs/node_modules/underscore/cjs/result.js +24 -0
- package/docs/node_modules/underscore/cjs/sample.js +29 -0
- package/docs/node_modules/underscore/cjs/set.js +15 -0
- package/docs/node_modules/underscore/cjs/shuffle.js +8 -0
- package/docs/node_modules/underscore/cjs/size.js +10 -0
- package/docs/node_modules/underscore/cjs/some.js +17 -0
- package/docs/node_modules/underscore/cjs/sortBy.js +26 -0
- package/docs/node_modules/underscore/cjs/sortedIndex.js +17 -0
- package/docs/node_modules/underscore/cjs/tap.js +9 -0
- package/docs/node_modules/underscore/cjs/template.js +103 -0
- package/docs/node_modules/underscore/cjs/templateSettings.js +11 -0
- package/docs/node_modules/underscore/cjs/throttle.js +49 -0
- package/docs/node_modules/underscore/cjs/times.js +11 -0
- package/docs/node_modules/underscore/cjs/toArray.js +22 -0
- package/docs/node_modules/underscore/cjs/toPath.js +11 -0
- package/docs/node_modules/underscore/cjs/underscore-array-methods.js +31 -0
- package/docs/node_modules/underscore/cjs/underscore.js +27 -0
- package/docs/node_modules/underscore/cjs/unescape.js +7 -0
- package/docs/node_modules/underscore/cjs/union.js +11 -0
- package/docs/node_modules/underscore/cjs/uniq.js +38 -0
- package/docs/node_modules/underscore/cjs/uniqueId.js +9 -0
- package/docs/node_modules/underscore/cjs/unzip.js +17 -0
- package/docs/node_modules/underscore/cjs/values.js +14 -0
- package/docs/node_modules/underscore/cjs/where.js +10 -0
- package/docs/node_modules/underscore/cjs/without.js +9 -0
- package/docs/node_modules/underscore/cjs/wrap.js +10 -0
- package/docs/node_modules/underscore/cjs/zip.js +8 -0
- package/docs/node_modules/underscore/modules/.eslintrc +21 -0
- package/docs/node_modules/underscore/modules/_baseCreate.js +18 -0
- package/docs/node_modules/underscore/modules/_baseIteratee.js +17 -0
- package/docs/node_modules/underscore/modules/_cb.js +10 -0
- package/docs/node_modules/underscore/modules/_chainResult.js +6 -0
- package/docs/node_modules/underscore/modules/_collectNonEnumProps.js +40 -0
- package/docs/node_modules/underscore/modules/_createAssigner.js +18 -0
- package/docs/node_modules/underscore/modules/_createEscaper.js +17 -0
- package/docs/node_modules/underscore/modules/_createIndexFinder.js +28 -0
- package/docs/node_modules/underscore/modules/_createPredicateIndexFinder.js +15 -0
- package/docs/node_modules/underscore/modules/_createReduce.js +28 -0
- package/docs/node_modules/underscore/modules/_createSizePropertyCheck.js +9 -0
- package/docs/node_modules/underscore/modules/_deepGet.js +9 -0
- package/docs/node_modules/underscore/modules/_escapeMap.js +9 -0
- package/docs/node_modules/underscore/modules/_executeBound.js +13 -0
- package/docs/node_modules/underscore/modules/_flatten.js +31 -0
- package/docs/node_modules/underscore/modules/_getByteLength.js +4 -0
- package/docs/node_modules/underscore/modules/_getLength.js +4 -0
- package/docs/node_modules/underscore/modules/_group.js +15 -0
- package/docs/node_modules/underscore/modules/_has.js +6 -0
- package/docs/node_modules/underscore/modules/_hasObjectTag.js +3 -0
- package/docs/node_modules/underscore/modules/_isArrayLike.js +8 -0
- package/docs/node_modules/underscore/modules/_isBufferLike.js +6 -0
- package/docs/node_modules/underscore/modules/_keyInObj.js +5 -0
- package/docs/node_modules/underscore/modules/_methodFingerprint.js +37 -0
- package/docs/node_modules/underscore/modules/_optimizeCb.js +21 -0
- package/docs/node_modules/underscore/modules/_setup.js +43 -0
- package/docs/node_modules/underscore/modules/_shallowProperty.js +6 -0
- package/docs/node_modules/underscore/modules/_stringTagBug.js +13 -0
- package/docs/node_modules/underscore/modules/_tagTester.js +9 -0
- package/docs/node_modules/underscore/modules/_toBufferView.js +11 -0
- package/docs/node_modules/underscore/modules/_toPath.js +8 -0
- package/docs/node_modules/underscore/modules/_unescapeMap.js +5 -0
- package/docs/node_modules/underscore/modules/after.js +8 -0
- package/docs/node_modules/underscore/modules/allKeys.js +13 -0
- package/docs/node_modules/underscore/modules/before.js +12 -0
- package/docs/node_modules/underscore/modules/bind.js +13 -0
- package/docs/node_modules/underscore/modules/bindAll.js +17 -0
- package/docs/node_modules/underscore/modules/chain.js +8 -0
- package/docs/node_modules/underscore/modules/chunk.js +13 -0
- package/docs/node_modules/underscore/modules/clone.js +9 -0
- package/docs/node_modules/underscore/modules/compact.js +6 -0
- package/docs/node_modules/underscore/modules/compose.js +12 -0
- package/docs/node_modules/underscore/modules/constant.js +6 -0
- package/docs/node_modules/underscore/modules/contains.js +10 -0
- package/docs/node_modules/underscore/modules/countBy.js +9 -0
- package/docs/node_modules/underscore/modules/create.js +11 -0
- package/docs/node_modules/underscore/modules/debounce.js +40 -0
- package/docs/node_modules/underscore/modules/defaults.js +5 -0
- package/docs/node_modules/underscore/modules/defer.js +7 -0
- package/docs/node_modules/underscore/modules/delay.js +9 -0
- package/docs/node_modules/underscore/modules/difference.js +13 -0
- package/docs/node_modules/underscore/modules/each.js +23 -0
- package/docs/node_modules/underscore/modules/escape.js +5 -0
- package/docs/node_modules/underscore/modules/every.js +15 -0
- package/docs/node_modules/underscore/modules/extend.js +5 -0
- package/docs/node_modules/underscore/modules/extendOwn.js +7 -0
- package/docs/node_modules/underscore/modules/filter.js +12 -0
- package/docs/node_modules/underscore/modules/find.js +10 -0
- package/docs/node_modules/underscore/modules/findIndex.js +4 -0
- package/docs/node_modules/underscore/modules/findKey.js +12 -0
- package/docs/node_modules/underscore/modules/findLastIndex.js +4 -0
- package/docs/node_modules/underscore/modules/findWhere.js +8 -0
- package/docs/node_modules/underscore/modules/first.js +9 -0
- package/docs/node_modules/underscore/modules/flatten.js +7 -0
- package/docs/node_modules/underscore/modules/functions.js +10 -0
- package/docs/node_modules/underscore/modules/get.js +12 -0
- package/docs/node_modules/underscore/modules/groupBy.js +8 -0
- package/docs/node_modules/underscore/modules/has.js +16 -0
- package/docs/node_modules/underscore/modules/identity.js +4 -0
- package/docs/node_modules/underscore/modules/index-all.js +18 -0
- package/docs/node_modules/underscore/modules/index-default.js +27 -0
- package/docs/node_modules/underscore/modules/index.js +200 -0
- package/docs/node_modules/underscore/modules/indexBy.js +7 -0
- package/docs/node_modules/underscore/modules/indexOf.js +9 -0
- package/docs/node_modules/underscore/modules/initial.js +8 -0
- package/docs/node_modules/underscore/modules/intersection.js +19 -0
- package/docs/node_modules/underscore/modules/invert.js +11 -0
- package/docs/node_modules/underscore/modules/invoke.js +28 -0
- package/docs/node_modules/underscore/modules/isArguments.js +16 -0
- package/docs/node_modules/underscore/modules/isArray.js +6 -0
- package/docs/node_modules/underscore/modules/isArrayBuffer.js +3 -0
- package/docs/node_modules/underscore/modules/isBoolean.js +6 -0
- package/docs/node_modules/underscore/modules/isDataView.js +16 -0
- package/docs/node_modules/underscore/modules/isDate.js +3 -0
- package/docs/node_modules/underscore/modules/isElement.js +4 -0
- package/docs/node_modules/underscore/modules/isEmpty.js +18 -0
- package/docs/node_modules/underscore/modules/isEqual.js +138 -0
- package/docs/node_modules/underscore/modules/isError.js +3 -0
- package/docs/node_modules/underscore/modules/isFinite.js +7 -0
- package/docs/node_modules/underscore/modules/isFunction.js +15 -0
- package/docs/node_modules/underscore/modules/isMap.js +5 -0
- package/docs/node_modules/underscore/modules/isMatch.js +13 -0
- package/docs/node_modules/underscore/modules/isNaN.js +7 -0
- package/docs/node_modules/underscore/modules/isNull.js +4 -0
- package/docs/node_modules/underscore/modules/isNumber.js +3 -0
- package/docs/node_modules/underscore/modules/isObject.js +5 -0
- package/docs/node_modules/underscore/modules/isRegExp.js +3 -0
- package/docs/node_modules/underscore/modules/isSet.js +5 -0
- package/docs/node_modules/underscore/modules/isString.js +3 -0
- package/docs/node_modules/underscore/modules/isSymbol.js +3 -0
- package/docs/node_modules/underscore/modules/isTypedArray.js +15 -0
- package/docs/node_modules/underscore/modules/isUndefined.js +4 -0
- package/docs/node_modules/underscore/modules/isWeakMap.js +5 -0
- package/docs/node_modules/underscore/modules/isWeakSet.js +3 -0
- package/docs/node_modules/underscore/modules/iteratee.js +10 -0
- package/docs/node_modules/underscore/modules/keys.js +16 -0
- package/docs/node_modules/underscore/modules/last.js +9 -0
- package/docs/node_modules/underscore/modules/lastIndexOf.js +6 -0
- package/docs/node_modules/underscore/modules/map.js +16 -0
- package/docs/node_modules/underscore/modules/mapObject.js +16 -0
- package/docs/node_modules/underscore/modules/matcher.js +11 -0
- package/docs/node_modules/underscore/modules/max.js +29 -0
- package/docs/node_modules/underscore/modules/memoize.js +13 -0
- package/docs/node_modules/underscore/modules/min.js +29 -0
- package/docs/node_modules/underscore/modules/mixin.js +18 -0
- package/docs/node_modules/underscore/modules/negate.js +6 -0
- package/docs/node_modules/underscore/modules/noop.js +2 -0
- package/docs/node_modules/underscore/modules/now.js +4 -0
- package/docs/node_modules/underscore/modules/object.js +16 -0
- package/docs/node_modules/underscore/modules/omit.js +22 -0
- package/docs/node_modules/underscore/modules/once.js +6 -0
- package/docs/node_modules/underscore/modules/package.json +1 -0
- package/docs/node_modules/underscore/modules/pairs.js +13 -0
- package/docs/node_modules/underscore/modules/partial.js +24 -0
- package/docs/node_modules/underscore/modules/partition.js +7 -0
- package/docs/node_modules/underscore/modules/pick.js +26 -0
- package/docs/node_modules/underscore/modules/pluck.js +7 -0
- package/docs/node_modules/underscore/modules/property.js +11 -0
- package/docs/node_modules/underscore/modules/propertyOf.js +10 -0
- package/docs/node_modules/underscore/modules/random.js +8 -0
- package/docs/node_modules/underscore/modules/range.js +21 -0
- package/docs/node_modules/underscore/modules/reduce.js +5 -0
- package/docs/node_modules/underscore/modules/reduceRight.js +4 -0
- package/docs/node_modules/underscore/modules/reject.js +8 -0
- package/docs/node_modules/underscore/modules/rest.js +8 -0
- package/docs/node_modules/underscore/modules/restArguments.js +27 -0
- package/docs/node_modules/underscore/modules/result.js +22 -0
- package/docs/node_modules/underscore/modules/sample.js +27 -0
- package/docs/node_modules/underscore/modules/shuffle.js +6 -0
- package/docs/node_modules/underscore/modules/size.js +8 -0
- package/docs/node_modules/underscore/modules/some.js +15 -0
- package/docs/node_modules/underscore/modules/sortBy.js +24 -0
- package/docs/node_modules/underscore/modules/sortedIndex.js +15 -0
- package/docs/node_modules/underscore/modules/tap.js +7 -0
- package/docs/node_modules/underscore/modules/template.js +101 -0
- package/docs/node_modules/underscore/modules/templateSettings.js +9 -0
- package/docs/node_modules/underscore/modules/throttle.js +47 -0
- package/docs/node_modules/underscore/modules/times.js +9 -0
- package/docs/node_modules/underscore/modules/toArray.js +20 -0
- package/docs/node_modules/underscore/modules/toPath.js +9 -0
- package/docs/node_modules/underscore/modules/underscore-array-methods.js +31 -0
- package/docs/node_modules/underscore/modules/underscore.js +25 -0
- package/docs/node_modules/underscore/modules/unescape.js +5 -0
- package/docs/node_modules/underscore/modules/union.js +9 -0
- package/docs/node_modules/underscore/modules/uniq.js +36 -0
- package/docs/node_modules/underscore/modules/uniqueId.js +7 -0
- package/docs/node_modules/underscore/modules/unzip.js +15 -0
- package/docs/node_modules/underscore/modules/values.js +12 -0
- package/docs/node_modules/underscore/modules/where.js +8 -0
- package/docs/node_modules/underscore/modules/without.js +7 -0
- package/docs/node_modules/underscore/modules/wrap.js +8 -0
- package/docs/node_modules/underscore/modules/zip.js +6 -0
- package/docs/node_modules/underscore/package.json +124 -0
- package/docs/node_modules/underscore/underscore-esm-min.js +5 -0
- package/docs/node_modules/underscore/underscore-esm-min.js.map +1 -0
- package/docs/node_modules/underscore/underscore-esm.js +2039 -0
- package/docs/node_modules/underscore/underscore-esm.js.map +1 -0
- package/docs/node_modules/underscore/underscore-min.js +6 -0
- package/docs/node_modules/underscore/underscore-min.js.map +1 -0
- package/docs/node_modules/underscore/underscore-node-f.cjs +2163 -0
- package/docs/node_modules/underscore/underscore-node-f.cjs.map +1 -0
- package/docs/node_modules/underscore/underscore-node.cjs +11 -0
- package/docs/node_modules/underscore/underscore-node.cjs.map +1 -0
- package/docs/node_modules/underscore/underscore-node.mjs +7 -0
- package/docs/node_modules/underscore/underscore-node.mjs.map +1 -0
- package/docs/node_modules/underscore/underscore-umd-min.js +6 -0
- package/docs/node_modules/underscore/underscore-umd-min.js.map +1 -0
- package/docs/node_modules/underscore/underscore-umd.js +2047 -0
- package/docs/node_modules/underscore/underscore-umd.js.map +1 -0
- package/docs/node_modules/underscore/underscore.js +2047 -0
- package/docs/node_modules/xmlcreate/CHANGES.md +53 -0
- package/docs/node_modules/xmlcreate/LICENSE +201 -0
- package/docs/node_modules/xmlcreate/NOTICE +2 -0
- package/docs/node_modules/xmlcreate/README.md +141 -0
- package/docs/node_modules/xmlcreate/lib/error.d.ts +19 -0
- package/docs/node_modules/xmlcreate/lib/error.js +47 -0
- package/docs/node_modules/xmlcreate/lib/escape.d.ts +37 -0
- package/docs/node_modules/xmlcreate/lib/escape.js +55 -0
- package/docs/node_modules/xmlcreate/lib/main.d.ts +38 -0
- package/docs/node_modules/xmlcreate/lib/main.js +64 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlAttribute.d.ts +88 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlAttribute.js +146 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlAttributeText.d.ts +58 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlAttributeText.js +80 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlCdata.d.ts +63 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlCdata.js +88 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlCharData.d.ts +59 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlCharData.js +82 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlCharRef.d.ts +89 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlCharRef.js +136 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlComment.d.ts +62 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlComment.js +99 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDecl.d.ts +92 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDecl.js +180 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDocument.d.ts +96 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDocument.js +166 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtd.d.ts +147 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtd.js +312 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtdAttlist.d.ts +56 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtdAttlist.js +71 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtdElement.d.ts +56 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtdElement.js +71 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtdEntity.d.ts +56 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtdEntity.js +71 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtdNotation.d.ts +56 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtdNotation.js +71 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtdParamEntityRef.d.ts +56 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlDtdParamEntityRef.js +71 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlElement.d.ts +153 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlElement.js +302 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlEntityRef.d.ts +56 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlEntityRef.js +71 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlProcInst.d.ts +71 -0
- package/docs/node_modules/xmlcreate/lib/nodes/XmlProcInst.js +112 -0
- package/docs/node_modules/xmlcreate/lib/options.d.ts +51 -0
- package/docs/node_modules/xmlcreate/lib/options.js +45 -0
- package/docs/node_modules/xmlcreate/lib/validate.d.ts +46 -0
- package/docs/node_modules/xmlcreate/lib/validate.js +274 -0
- package/docs/node_modules/xmlcreate/package.json +55 -0
- package/docs/package-lock.json +343 -0
- package/docs/package.json +7 -0
- package/package.json +2 -4
- package/specs/public/js/bundle.js.map +2 -2
- package/src/AjaxSubmit.js +3 -1
- package/src/Autosubmit.js +2 -0
- package/src/ConfirmSubmit.js +2 -0
- package/src/ConfirmationDialog.js +2 -0
- package/src/ConstraintViolationMessage.js +2 -0
- package/src/ConstraintViolationMessages.js +2 -0
- package/src/CopyToClipboard.js +2 -0
- package/src/Form.js +2 -0
- package/src/I18nTranslation.js +2 -0
- package/src/LocaleDetection.js +24 -0
- package/src/Message.js +3 -2
- package/src/Tabs.js +1 -0
- package/src/Tracing.js +2 -0
- package/CODE_OF_CONDUCT.txt +0 -99
- package/LICENSE.txt +0 -370
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/Logger.js", "../../../src/RichString.js", "../../../src/BaseCustomElement.js", "../../../src/I18nTranslation.js", "../../../src/ConstraintViolationMessage.js", "../../../src/ConstraintViolationMessages.js", "../../../src/AjaxSubmit.js", "../../../src/Autosubmit.js", "../../../src/ConfirmationDialog.js", "../../../src/ConfirmSubmit.js", "../../../src/CopyToClipboard.js", "../../../src/Form.js", "../../../src/LocaleDetection.js", "../../../src/Message.js", "../../../src/Tabs.js", "../../../src/Tracing.js", "../../../src/index.js", "../../../src/appForTestingOnly.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * Abstract interface for logging information from a component.\n * This is intended to allow prefixed messages to be optionally shown\n * in the console to help debug.\n *\n * @see BufferedLogger\n * @see PrefixedLogger\n * @see BaseCustomElement#logger\n */\nclass Logger {\n /** Create a logger for the given prefix.\n *\n * @param {string|false} stringOrFalse - if false,returns a {@link BufferedLogger}. Otherwise, returns a {@link PrefixedLogger} using the param's value as the prefix.\n *\n * @returns {Logger}\n */\n static forPrefix(stringOrFalse) {\n if (!stringOrFalse) {\n return new BufferedLogger()\n }\n else {\n return new PrefixedLogger(stringOrFalse)\n }\n }\n\n /** Subclasses must implement this.\n *\n * @param {string} level - 'info' or 'warn' to indicate the logging level\n * @param {...*} args - args to pass directly to console.log\n */\n log() {\n throw `Subclass must implement`\n }\n\n /** Log an informational bit of information */\n info(...args) { this.log(\"info\",...args) }\n /** Log a warning */\n warn(...args) { this.log(\"warn\",...args) }\n}\n\n/** Logger that buffers, but does not print, its logged messages.\n * The reason it buffers them is to allow custom elements to retroatively log\n * information captured before warnings were turned on.\n */\nclass BufferedLogger extends Logger {\n constructor() {\n super()\n this.messages = []\n }\n log(...args) {\n this.messages.push(args)\n }\n}\n\n/** Log information to the JavaScript console.\n*/\nclass PrefixedLogger extends Logger {\n /** Create a PrefixedLogger.\n *\n * @param {string|true} prefixOrTrue - if true, uses the prefix `\"debug\"`, otherwise uses the param as the prefix to all\n * messages output.\n */\n constructor(prefixOrTrue) {\n super()\n this.prefix = prefixOrTrue === true ? \"debug\" : prefixOrTrue\n }\n\n /** Dumps hte contents of a {@link BufferedLogger} to this logger's output.\n *\n * @param {BufferedLogger} bufferedLogger - a logger with pent-up messages, waiting to be logged.\n */\n dump(bufferedLogger) {\n if (bufferedLogger instanceof BufferedLogger) {\n bufferedLogger.messages.forEach( (args) => {\n this.log(...args)\n })\n }\n }\n\n log(level,...args) {\n if (typeof(args[0]) === \"string\") {\n const message = `[prefix:${this.prefix}]:${args[0]}`\n console[level](message,...(args.slice(1)))\n }\n else {\n console[level](this.prefix,...args)\n }\n }\n}\nexport default Logger\n", "/** A wrapper around a string that provides useful utility functions\n * not present in the standard library.\n *\n * @example\n *\n * const string = RichString.fromString(element.textContent)\n * element.textContent = string.humanize().toString()\n */\nclass RichString {\n /** Prefer this over the constructor, as this will\n * wrap `possiblyDefinedStringOrRichString` only if necessary\n * as well as handle `null`.\n *\n * @param {null|undefined|String|RichString} possiblyDefinedStringOrRichString - if `null`, `undefined`, or otherwise falsey, this method returns `null`. If a String, returns a new `RichString` wrapping it. If a `RichString`, returns the `RichString` unchanged.\n */\n static fromString(possiblyDefinedStringOrRichString) {\n if (possiblyDefinedStringOrRichString instanceof RichString) {\n return possiblyDefinedStringOrRichString\n }\n if (!possiblyDefinedStringOrRichString) {\n return null\n }\n return new RichString(String(possiblyDefinedStringOrRichString))\n }\n\n /** Prefer `fromString` */\n constructor(string) {\n if (typeof string !== \"string\") {\n throw `You may only construct a RichString with a String, not a ${typeof string}`\n }\n this.string = string\n }\n\n /** Returns a `RichString` with the string capitalized. */\n capitalize() {\n return new RichString(this.string.charAt(0).toUpperCase() + this.string.slice(1))\n }\n\n /** Returns a `RichString` with the string un-capitalized. */\n decapitalize() {\n return new RichString(this.string.charAt(0).toLowerCase() + this.string.slice(1))\n }\n\n /** Returns a `RichString` with the string converted from snake or kebab case into camel case. */\n camelize() {\n // Taken from camelize npm module\n return RichString.fromString(this.string.replace(/[_.-](\\w|$)/g, function (_, x) {\n return x.toUpperCase()\n }))\n }\n\n /** Returns a 'humanized' `RichString`, which is basically a de-camelized version with the first letter\n * capitalized.\n */\n humanize() {\n return this.decamlize({spacer: \" \"}).capitalize()\n }\n\n /** Returns a `RichString` with the string converted from camel case to snake or kebab case.\n *\n * @param {Object} parameters\n * @param {string} parameters.spacer [\"_\"] - a string to use when joining words together.\n *\n */\n decamlize({spacer=\"_\"} = {}) {\n // Taken from decamelize NPM module\n\n // Checking the second character is done later on. Therefore process shorter strings here.\n if (this.string.length < 2) {\n return new RichString(this.string.toLowerCase())\n }\n\n const replacement = `$1${spacer}$2`\n\n // Split lowercase sequences followed by uppercase character.\n // `dataForUSACounties` \u2192 `data_For_USACounties`\n // `myURLstring \u2192 `my_URLstring`\n const decamelized = this.string.replace(\n /([\\p{Lowercase_Letter}\\d])(\\p{Uppercase_Letter})/gu,\n replacement,\n )\n\n // Split multiple uppercase characters followed by one or more lowercase characters.\n // `my_URLstring` \u2192 `my_ur_lstring`\n return new RichString(decamelized.\n replace(\n /(\\p{Uppercase_Letter})(\\p{Uppercase_Letter}\\p{Lowercase_Letter}+)/gu,\n replacement,\n ).\n toLowerCase()\n )\n }\n\n /** Return the underlying String value */\n toString() { return this.string }\n\n /** Return the underlying String value or null if the string is blank */\n toStringOrNull() {\n if (this.isBlank()) {\n return null\n }\n else {\n return this.string\n }\n }\n\n /* Returns true if this string has only whitespace in it */\n isBlank() {\n return this.string.trim() == \"\"\n }\n\n}\nexport default RichString\n", "import Logger from \"./Logger\"\nimport RichString from \"./RichString\"\n\n/** Base class for Custom Elements that provides a few quality-of-life enhancements.\n * \n * Custom elements that use this base class instead of `HTMLElement` get the following features:\n *\n * * `connectedCallback` and `attributeChangedCallback` call into a central `update` method where the \n * class can centralilize its logic\n * * Instead of implementing `attributeChangedCallback` and checking the name, per-attribute\n * callbacks can be implemented that are called when an observed attribute is changed. See {@link\n * attributeChangedCallback}.\n * * Support for defining the element by declaring a tag name\n * * Opt-in debugging support to allow verbose logging of mistaken use of the element that can be turned\n * off for production use.\n *\n * How to use this class:\n *\n * 1. Your custom element should extend this class via `extends BaseCustomElement`\n * 2. Create a static property called `tagName` that will be your element's tag name. Remember that all tag names must have a dash in them.\n * 3. Create a static property called `observedAttributes` that is an array of attribute names your element supports. This is part of the HTML spec and not specific to this base class.\n * 4. If you include the attribute `show-warnings` in your list of `observedAttributes`, you will have enhanced debugging abilities.\n * 5. For each attribute *other* than `show-warnings`, implement a callback to receive notifications on the attribute's changes. See {@link attributeChangedCallback} for more info.\n * 6. Implement `update` to execute whatever logic the component needs. `update` will be called multiple times and thus should be relatively idempotent. Specifically, it will be called after any attribute has changed, and it will be called as part of the standard `connectedCallback`.\n * 7. To use your component, call the static {@link define} method.\n *\n * Debugging\n *\n * Custom Elements have to work under a variety of degenerate cirucmstances. Further, if you are building \n * elements that wrap and enhance conventional elements, it can be easy to make a mistake, for example intending\n * to wrap a `FORM`, but wrapping only an `INPUT`.\n *\n * To help debug these situations, you are encouraged to use `this.logger.warn(...)` to emit warnings when\n * potentially incorrect use of your component is detected. By default, these warnings will not be shown. This\n * provides your users with a drama-free console. During development, however, you can add the `show-warnings`\n * attribute to your element. If that is set, warnings *are* shown in the console.\n *\n * `show-warnings` can be given a value, in which case that value if used to prefix all warnings the element emits.\n * This can be useful to know which use of an element is causing problems. If you don't give any value\n * to `show-warnings`, the element's `id` will be used as the prefix. If the element has no `id`, you will\n * still see warnings, but without a prefix. This could make it hard to know where the warnings are coming from.\n *\n * @example\n * // Replaces all span elements inside the component with\n * // an upper-cased value of the attribute 'some-attribute'\n * class MyComponent extends BaseCustomElement {\n * static tagName = \"my-component\"\n * static observedAttributes = [\n * \"show-warnings\",\n * \"some-attribute\",\n * ]\n *\n * someAttributeChangedCallback({newValue}) {\n * this.someAttribute = newValue ? newValue.toUpperCase() : null\n * }\n *\n * update() {\n * const spans = this.querySelectorAll(\"span\")\n * if (spans.length == 0) {\n * this.logger.warn(\"Did not find any <span> elements - element won't do anything\")\n * }\n * spans.forEach( (element) => {\n * element.textContent = this.someAttribute\n * })\n * }\n * }\n * docment.addEventListener(\"DOMContentLoaded\", () => {\n * MyComponent.define()\n * })\n *\n * // Then, in your HTML\n * <my-component some-attribute=\"hello there\">\n * <span></span>\n * <div></div>\n * <span></span>\n * </my-component>\n *\n * // The browser will effectively produce this HTML:\n * <my-component some-attribute=\"hello there\">\n * <span>HELLO THERE</span>\n * <div></div>\n * <span>HELLO THERE</span>\n * </my-component>\n *\n * // If JavaScript (or browser dev tools) changed some-attribute\n * // to be \"goodbye then\", the markup will change to look like so:\n * <my-component some-attribute=\"goodby then\">\n * <span>GOODBYE THEN</span>\n * <div></div>\n * <span>GOODBYE THEN</span>\n * </my-component>\n */\nclass BaseCustomElement extends HTMLElement {\n\n /** A {@link Logger} you can use to write warning messages. By default, these\n * messages are not shown in the console. If you put `show-warnings` as an attribute on your\n * element, warnings sent to this logger *are* shown.\n */\n logger = Logger.forPrefix(null)\n\n #_connectedCallbackCalled = false\n #_disconnectedCallbackCalled = false\n\n constructor() {\n super()\n this.logger = Logger.forPrefix(null)\n }\n\n /** You must call this to define the custom element. This is bascially\n * a wrapper around `customElements.define`. It is recommended that you call \n * this inside a `DOMContentLoaded` event, or after the page's HTML has been processed.\n * \n * @see external:CustomElementRegistry\n */\n static define() {\n if (!this.tagName) {\n throw `To use BaseCustomElement, you must define the static member tagName to return your custom tag's name`\n }\n customElements.define(this.tagName, this)\n }\n\n showWarningsChangedCallback({oldValue,newValue}) {\n let oldLogger\n if (!oldValue && newValue) {\n oldLogger = this.logger\n }\n let prefix = newValue == \"\" ? this.id : newValue\n if (!prefix) {\n prefix = \"UNKNOWN COMPONENT\"\n }\n this.logger = Logger.forPrefix(prefix)\n if (oldLogger) {\n this.logger.dump(oldLogger)\n }\n }\n\n /**\n * Overrides the standard callback to allow subclasses to have a slightly easier API when responding\n * to attribute changes. You can override this to use the custom element callback directly. Note that if\n * you do, `show-warnings` will not have any affect and you probably don't need to bother using\n * this class as your base class.\n *\n * This method will locate a per-attribute method and call that.\n * Attribute names are assumed to be in kebab-case and are translated to camelCase to create a method name.\n * That method is `\u00ABattributeInCamelCase\u00BBChangedCallback`, so if your attribute is `hex-code`,\n * a method named `hexCodeChangedCallback` in invoked. If no such method is defined, a\n * warning is logged in the console, regardless of the `show-warnings` attribute.\n *\n * The method is invoked with `{oldValue,newValue,newValueAsBoolean}` - i.e. an object and not positional parameters. This \n * means your implementation can omit any parameters it doesn't care about. `newValueAsBoolean` is not part of\n * the custom element spec, but is provided as an unambiguous way to know if a boolean attribute was set or not. This is\n * because if the value is set, it is likely to be the empty string, which is considered false by JavaScript. Cool.\n *\n * The return value of the method is ignored.\n *\n * After your method is called, if there is a method named `update`, it is called with no arguments.\n *\n * What this allows you to do is separate how you manage your element's attributes from how your logic\n * is managed. For complex elements that take a lot of attributes, this can simplify your element's code without straying too far from the spec.\n *\n * @example\n *\n * // If your element accepts the attribute `warning-message` that will be trimmed of whitespace\n * // then placed into all `H1` tags inside the element, you can manage that like so:\n * class MyElement extends BaseCustomElement {\n * static tagName = \"my-element\"\n * static observedAttributes = [\n * \"warning-message\",\n * ]\n *\n * // called by attributeChangedCallback when warning-message's value changes\n * warningMessageChangedCallback({newValue}) {\n * this.warningMessage = (newValue || \"\").trim()\n * }\n *\n * // called after attributeChangedCallback calls warningMessageChangedCallback\n * update() {\n * this.querySelectorAll(\"h1\").forEach( (e) => e.textContent = this.warningMessage )\n * }\n * }\n *\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements}\n *\n */\n attributeChangedCallback(name,oldValue,newValue) {\n const callbackName = `${new RichString(name).camelize()}ChangedCallback`\n if (this[callbackName]) {\n const newValueAsBoolean = newValue !== null\n this[callbackName]({oldValue,newValue,newValueAsBoolean})\n }\n else if (this.constructor.observedAttributes.indexOf(name) != -1) {\n console.warn(\"Observing %s but no method named %s was found to handle it\",name,callbackName)\n }\n this.__update()\n }\n \n /** Overrides the custom element callback to set internal flags allowing you to know if your\n * element has been disconnected. When an element is disconnected, `update` is not called.\n *\n * If you want to add your own logic during disconnection, override {@link onDisconnected}.\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements}\n */\n disconnectedCallback() {\n this.#_disconnectedCallbackCalled = true\n this.onDisconnected()\n }\n\n /** Override this to add logic when `disconnectedCallback` is called by the browser. This will\n * not be called if you overrode `disconnectedCallback`.\n */\n onDisconnected() {}\n\n /** Overrides the custom element callback to set internal flags allowing you to know if your\n * element has been connected. `update` is still called for elements that have not yet connected, however\n * in practice your element will be connected before any codepath that calls `update` is called.\n *\n * To add logic when your element is connected, override {@link onConnected}\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements}\n * @see BaseCustomElement#connectedCallbackCalled\n */\n connectedCallback() {\n this.#_connectedCallbackCalled = true\n this.onConnected()\n this.__update()\n }\n\n /** Override this to add logic when `connectedCallback` is called by the browser. This will\n * not be called if you overrode `connectedCallback`\n */\n onConnected() {}\n\n /** Returns true if this element is connected and the connected callback has been called.\n * This is different from `Node#isConnected`, which can return true before `connectedCallback` is called.\n */\n get connectedCallbackCalled() { return !!this.#_connectedCallbackCalled }\n\n /** Override this to perform whatever logic your element must perform.\n * Because changes to your element's attributes can happen at any time and in any order,\n * you will want to consolidate all logic into one method\u2014this one. You will also\n * want to make sure that this method is idempotent and fault-tolerant. It will be called multiple times.\n *\n * It is called by {@link BaseCustomElement#attributeChangedCallback|attributeChangedCallback} and {@link BaseCustomElement#connectedCallback|connectedCallback}, however\n * it will *not* be called after the elment has been disconnected.\n *\n * That means that any event listeners, rendering, content manipulation, or other behavior should happen hear\n * and it *must* be idempotent. In particular, any event listeners you attach must be done with care. Using\n * anonymous functions could result in duplicate listeners.\n */\n update() {}\n\n __update() {\n if (this.#_disconnectedCallbackCalled) {\n return\n }\n this.update()\n }\n}\nexport default BaseCustomElement\n", "import BaseCustomElement from \"./BaseCustomElement\"\n\n/** Manages a translation based on a key and value, with the value potentially having interpolation.\n *\n * This is intended to be server-rendered with the subset of keys the server manages that are relevant\n * to the front-end. Any other code on the page can then locate an element with the desired key and\n * call `translation` to get the human-readable key. It is assumed that the server would render\n * in the language required by the visitor, so there is no need to first select by locale.\n *\n * @property {string} key - an i18n key, presumably dot-delimited, however it can be any valid attribute value.\n * @property {string} value - the value of the key, in the browser's locale. It may contain placeholders for interpolation using `%{\u00ABplaceholder\u00BB}` syntax.\n *\n * @example\n * <brut-i18n-translation key=\"greeting\" value=\"Hello %{username}\"></brut-i18n-translation>\n */\nclass I18nTranslation extends BaseCustomElement {\n static tagName = \"brut-i18n-translation\"\n\n static observedAttributes = [\n \"show-warnings\",\n \"key\",\n \"value\",\n ]\n\n #key = null\n #value = \"\"\n\n keyChangedCallback({newValue}) {\n this.#key = newValue\n }\n\n valueChangedCallback({newValue}) {\n this.#value = newValue ? String(newValue) : \"\"\n }\n\n /**\n * Called by other JavaScript to get the translated string.\n * @param {Object} interpolatedValues - Object where the keys are placeholders in the string for interpolation and the values are\n * the values to replace. Placeholders not in the translated value are ignored. Missing placeholders won't cause an error, but the\n * placeholder will be present verbatim in the translated string.\n *\n * @example\n * const element = document.querySeletor(\"brut-i18n-translation[key='greeting']\")\n * if (element) {\n * const translation = element.translation({ username: \"Pat\" })\n * alert(translation) // Shows 'Hello Pat'\n * }\n */\n translation(interpolatedValues) {\n return this.#value.replaceAll(/%\\{([^}%]+)\\}/g, (match,key) => {\n if (interpolatedValues[key]) {\n return interpolatedValues[key]\n }\n return match\n })\n }\n\n}\nexport default I18nTranslation\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\nimport I18nTranslation from \"./I18nTranslation\"\n\n/** Like {@link Message} but specific to constraint violations of input fields. This accepts the name\n * of an input field via `input-name`, which can be used to locate the field's localized name.\n *\n * Here is how the field's name is determined:\n *\n * 1. It will look for a `<brut-i18n-translation>` element with the `key` `cv.fe.fieldNames.\u00ABinput-name\u00BB`.\n * 2. If that's not found, it will attempt to use \"this field\" by locating a `<brut-i18n-translation>` element with the `key`\n * `cv.this_field` (the underscore being what is used on Brut's server side).\n * 3. If that is not found, it will use the literaly string \"this field\" and emit a console warning.\n *\n * @property {string} key - the i18n translation key to use. It must map to the `key` of a `<brut-i18n-translation>` on the page or\n * the element will not render any text.\n * @property {string} input-name - the name of the input, used to insert into the message, e.g. \"Title is required\".\n * @property {boolean} server-side if true, this indicates the element contains constraint violation messages\n * from the server. Currently doesn't affect this element's behavior, however\n * AjaxSubmit will use it to locate where it should insert server-side errors.\n *\n * @see I18nTranslation\n * @see ConstraintViolationMessages\n * @see Message\n */\nclass ConstraintViolationMessage extends BaseCustomElement {\n static tagName = \"brut-cv\"\n\n static observedAttributes = [\n \"show-warnings\",\n \"key\",\n \"input-name\",\n \"server-side\",\n ]\n\n static createElement(document,attributes) {\n const element = document.createElement(ConstraintViolationMessage.tagName)\n element.setAttribute(\"key\",this.i18nKey(\"fe\", attributes.key))\n element.setAttribute(\"input-name\",attributes[\"input-name\"])\n if (Object.hasOwn(attributes,\"show-warnings\")) {\n element.setAttribute(\"show-warnings\",attributes[\"show-warnings\"])\n }\n return element\n }\n\n static markServerSide(element) {\n if (element.tagName.toLowerCase() == this.tagName) {\n element.setAttribute(\"server-side\", true)\n }\n }\n\n static clientSideSelector() {\n return `${this.tagName}:not([server-side])`\n }\n\n static serverSideSelector() {\n return `${this.tagName}[server-side]`\n }\n\n /** Returns the I18N key used for front-end constraint violations. This is useful\n * if you need to construct a key and want to follow Brut's conventions on how they\n * are managed.\n *\n * @param {...String} keyPath - parts of the path of the key after the namespace that Brut manages.\n */\n static i18nKey(...keyPath) {\n const path = [ \"cv\" ]\n return path.concat(keyPath).join(\".\")\n }\n\n #key = null\n #inputNameKey = null\n #thisFieldKey = this.#i18nKey(\"this_field\")\n\n keyChangedCallback({newValue}) {\n this.#key = newValue\n }\n\n inputNameChangedCallback({newValue}) {\n this.#inputNameKey = this.#i18nKey(\"fe\", \"fieldNames\", newValue)\n }\n\n serverSideChangedCallback({newValueAsBoolean}) {\n // attribute listed for documentation purposes only\n }\n\n update() {\n if (!this.#key) {\n this.logger.info(\"No key attribute, so can't do anything\")\n return\n }\n\n const selector = `${I18nTranslation.tagName}[key='${this.#key}']`\n const translation = document.querySelector(selector)\n if (!translation) {\n this.logger.info(\"Could not find translation based on selector '%s'\",selector)\n return\n }\n\n const fieldNameSelector = `${I18nTranslation.tagName}[key='${this.#inputNameKey}']`\n const thisFieldSelector = `${I18nTranslation.tagName}[key='${this.#thisFieldKey}']`\n\n let fieldNameTranslation = document.querySelector(fieldNameSelector)\n if (!fieldNameTranslation) {\n this.logger.info(\"Could not find translation for input/field name based on selector '%s'. Will try 'this field' fallback\",fieldNameSelector)\n fieldNameTranslation = document.querySelector(thisFieldSelector)\n if (!fieldNameTranslation) {\n this.logger.info(\"Could not find translation for 'this field' fallback key, based on selector '%s'\",thisFieldSelector)\n }\n }\n\n const fieldName = fieldNameTranslation ? fieldNameTranslation.translation() : \"this field\"\n this.textContent = RichString.fromString(translation.translation({ field: fieldName })).capitalize().toString()\n }\n\n /** Helper that calls the static version */\n #i18nKey(...keyPath) {\n return this.constructor.i18nKey(...keyPath)\n }\n\n\n}\nexport default ConstraintViolationMessage\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\nimport ConstraintViolationMessage from \"./ConstraintViolationMessage\"\n\n/**\n * Custom element to translate keys from {@link external:ValidityState} into \n * actual messges for a human. This works by inserting `<brut-cv>` elements\n * as children, where the key represents the particular errors present in the `ValidityState` passed\n * to `createMessages`. Note that this will not insert an element for `customError`, since there can't be\n * any sort of general error message to correspond to that.\n *\n * @property {string} input-name if set, this indicates this element contains constraint violation messages\n * for the input with this name inside the form this element is in. Currently doesn't affect\n * this element's behavior, however AjaxSubmit will use it to locate where it \n * should insert server-side errors.\n *\n * @see Form\n * @see ConstraintViolationMessage\n * @see AjaxSubmit\n */\nclass ConstraintViolationMessages extends BaseCustomElement {\n static tagName = \"brut-cv-messages\"\n\n static observedAttributes = [\n \"show-warnings\",\n \"input-name\",\n ]\n\n inputNameChangedCallback({newValue}) {\n // attribute listed for documentation purposes only\n }\n\n /** \n * Creates error messages based on the passed `ValidityState` and input name.\n *\n * This should be called as part of a Form validation event to provide a customized UX for\n * the error messages, beyond what the browser would do by default. The keys used are the same\n * as the attributes of a `ValidityState`, so for example, a range underflow would mean that `validity.rangeUnderflow` would return\n * true. Thus, a `<brut-cv>` would be created with `key=\"cv.fe.rangeUnderflow\"`.\n *\n * The `cv.fe` is hard-coded to be consistent with Brut's server-side translation management.\n *\n * @param {ValidityState} validityState - the return from an element's `validity` when it's found to have constraint violations.\n * @param {String} inputName - the element's `name`.\n */\n createMessages({validityState,inputName}) {\n const errors = this.#VALIDITY_STATE_ATTRIBUTES.filter( (attribute) => validityState[attribute] )\n this.clearClientSideMessages()\n errors.forEach( (key) => {\n const options = {\n key: key,\n \"input-name\": inputName,\n }\n const showWarnings = this.getAttribute(\"show-warnings\")\n if (showWarnings != null) {\n options[\"show-warnings\"] = showWarnings\n }\n const element = ConstraintViolationMessage.createElement(document,options)\n this.appendChild(element)\n })\n }\n\n /**\n * Clear any client-side messages previously inserted by another element.\n * This is useful to remove potentially out-of-date messages to replace with up-to-date ones.\n */\n clearClientSideMessages() {\n this.querySelectorAll(ConstraintViolationMessage.clientSideSelector()).forEach( (element) => {\n this.removeChild(element)\n })\n }\n\n /**\n * Clear any server-side messages previously inserted by another element or rendered from the server.\n * This is useful to remove potentially out-of-date messages to replace with up-to-date ones.\n */\n clearServerSideMessages() {\n this.querySelectorAll(ConstraintViolationMessage.serverSideSelector()).forEach( (element) => {\n this.removeChild(element)\n })\n }\n\n #VALIDITY_STATE_ATTRIBUTES = [\n \"badInput\",\n \"patternMismatch\",\n \"rangeOverflow\",\n \"rangeUnderflow\",\n \"stepMismatch\",\n \"tooLong\",\n \"tooShort\",\n \"typeMismatch\",\n \"valueMissing\",\n // customError omitted, since it makes no sense as a general error key to look up\n ]\n}\nexport default ConstraintViolationMessages\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport ConstraintViolationMessages from \"./ConstraintViolationMessages\"\nimport ConstraintViolationMessage from \"./ConstraintViolationMessage\"\n\n/** Wraps a `<BUTTON>` assumed to be inside a form to indicate that, when clicked, it should submit\n * the form it's a part of via AJAX. It accounts for network failures and timeouts.\n * \n * The general flow is as follows:\n *\n * 1. When the button is clicked, the form's validity is checked. If it's not valid, nothing happens.\n * 2. If the form is valid, this element will be given the `requesting` attribute.\n * 3. The request will be initiated, set to abort after `request-timeout` ms (see below).\n * 4. If the request returns OK:\n * - `requesting` will be removed and `submitted` will be added.\n * - `submitted` will be removed after `submitted-lifetime` ms.\n * 5. If the request returned a 422, error messages are parsed. See below.\n * 6. If the request returns not OK and not 422:\n * - if it has been `request-timeout` ms or more since the button was first clicked, the operation is aborted (see below).\n * - if it has been less than `request-timeout` ms and the HTTP status code was 5xx, the operation is retried.\n * - otherwise, the operation is aborted.\n * 7. If fetch throws an error, the operation is aborted.\n *\n * Aborting the operation will submit the form in the normal way, allowing the browser to deal with whatever the issue is. You can set\n * `log-request-errors` to introspect this process.\n *\n * For a 422 response, this element assumes the response is `text/html` and contains one or more `<brut-cv>`\n * elements. These elements will be inserted into the proper `<brut-cv-messages>` element, as follows:\n *\n * 1. The `input-name` is examined.\n * 2. A `<brut-cv-messages input-name=\"\u00ABinput-name\u00BB\">` is located\n * 3. The containing form is located\n * 4. The input element(s) are located inside that form, based on `input-name`.\n * 5. The `<brut-cv-messages>` are cleared of any element with attribute `server-side`\n * 6. The messages from the server are inserted, with the attribute `server-side` added if it's not there.\n * 7. The input is set as having a custom validity\n * 8. validity is reported\n * 9. The first input located is scrolled into view\n * 10. If the input is modified after this all happens, custom validity is cleared\n *\n * @property {number} request-timeout - number of ms that the entire operation is expected to complete within. Default is 5000\n * @property {number} submitted-lifetime - number of ms that \"submitted\" should remain on the element after the form has completed. Default is 2000\n * @property {boolean} requesting - boolean attribute that indicates the request has been made, but not yet returned. Don't set this yourself outside of development. It will be set and removed by this element.\n * @property {boolean} submitted - boolean attribute that indicates the form has been successfully submitted. Don't set this yourselr outside of develoment. It will be set and removed by this element.\n * @property {boolean} log-request-errors - if set, logging related to request error handling will appear in the console. It will also\n * cause any form submission to be delayed by 2s to allow you to read the console.\n *\n * @fires brut:submitok Fired when the AJAX request initated by this returns OK and all processing has completed\n * @fires brut:submitinvalid Fired when the AJAX request initated by this returns a 422 and all logic around managing the reponse has completed\n *\n * @example\n * <form action=\"/widgets\" method=\"post\">\n * <input type=text name=name>\n *\n * <brut-ajax-submit>\n * <button>Save</button>\n* </brut-ajax-submit>\n * </form>\n */\nclass AjaxSubmit extends BaseCustomElement {\n static tagName = \"brut-ajax-submit\"\n static observedAttributes = [\n \"show-warnings\",\n \"requesting\",\n \"submitted\",\n \"submitted-lifetime\",\n \"request-timeout\",\n \"max-retry-attempts\",\n \"log-request-errors\",\n ]\n\n #requestErrorLogger = () => {}\n #formSubmitDelay = 0\n #submittedLifetime = 2000\n #requestTimeout = 5000\n #maxRetryAttempts = 25\n\n submittedLifetimeChangedCallback({newValue}) {\n const newValueAsInt = parseInt(newValue)\n if (isNaN(newValueAsInt)) {\n throw `submitted-lifetime must be a number, not '${newValue}'`\n }\n this.#submittedLifetime = newValueAsInt\n }\n\n maxRetryAttemptsChangedCallback({newValue}) {\n const num = parseInt(newValue)\n if (isNaN(num)) {\n this.logger.warn(`max-retry-attempts '${newValue}' is not a number. Using 1 as a fallback`)\n this.#maxRetryAttempts = 1\n }\n else {\n this.#maxRetryAttempts = num\n }\n }\n\n requestTimeoutChangedCallback({newValue}) {\n const newValueAsInt = parseInt(newValue)\n if (isNaN(newValueAsInt)) {\n throw `request-timeout must be a number, not '${newValue}'`\n }\n this.#requestTimeout = newValueAsInt\n }\n\n submittedChangedCallback({newValueAsBoolean}) {\n // no op\n }\n\n requestingChangedCallback({newValueAsBoolean}) {\n if (this.#button()) {\n if (newValueAsBoolean) {\n this.#button().setAttribute(\"disabled\",true)\n }\n else {\n this.#button().removeAttribute(\"disabled\",true)\n }\n }\n }\n\n logRequestErrorsChangedCallback({newValueAsBoolean}) {\n if (newValueAsBoolean) {\n this.#requestErrorLogger = console.warn\n this.#formSubmitDelay = 2000\n }\n else {\n this.#requestErrorLogger = () => {}\n this.#formSubmitDelay = 0\n }\n }\n\n update() {\n const button = this.#button()\n if (!button)\n {\n this.logger.info(\"Could not find a <button> to attach behavior to\")\n return\n }\n const form = button.form\n if (!form) {\n this.logger.info(\"%o did not have a form associated with it - cannot attach behavior\",button)\n return\n }\n button.form.addEventListener(\"submit\",this.#formSubmitted)\n }\n\n\n #formSubmitted = (event) => {\n const submitter = event.submitter\n if (submitter == this.#button()) {\n event.preventDefault()\n const now = Date.now()\n this.#submitForm(event.target, now, 0)\n }\n }\n\n #submitForm(form, firstSubmittedAt, numAttempts) {\n\n const headers = new Headers()\n headers.append(\"X-Requested-With\",\"XMLHttpRequest\")\n headers.append(\"Content-Type\",\"application/x-www-form-urlencoded\")\n\n const formData = new FormData(form)\n const urlSearchParams = new URLSearchParams(formData)\n\n const timeoutSignal = AbortSignal.timeout(this.#requestTimeout)\n\n const request = new Request(\n form.action,\n {\n headers: headers,\n method: form.method,\n body: urlSearchParams,\n signal: timeoutSignal,\n }\n )\n\n if (numAttempts > this.#maxRetryAttempts) {\n this.#requestErrorLogger(\"%d attempts. Giving up\",numAttempts)\n this.#submitFormThroughBrowser(form)\n return\n }\n this.setAttribute(\"requesting\", true)\n fetch(request).then( (response) => {\n if (response.ok) {\n this.removeAttribute(\"requesting\")\n this.setAttribute(\"submitted\",true)\n\n setTimeout( () => this.removeAttribute(\"submitted\"), this.#submittedLifetime )\n this.dispatchEvent(new CustomEvent(\"brut:submitok\"))\n }\n else {\n\n let retry = false // if true, we retry the request via ajax\n let resubmit = false // if true, and we aren't retrying, we submit the\n // form the old fashioned way\n\n if ( (Date.now() - firstSubmittedAt) > this.#requestTimeout) {\n this.#requestErrorLogger(\"Since initial button press %d, it's taken more than %d ms to get a response.\",firstSubmittedAt,this.#requestTimeout)\n retry = false\n resubmit = true\n }\n else {\n const status = parseInt(response.status)\n if (isNaN(status)) {\n this.#requestErrorLogger(\"Got unparseable status: %d\",response.status)\n retry = false\n }\n else if (status >= 500) {\n this.#requestErrorLogger(\"Got a %d, maybe retry will fix\", status)\n retry = true\n }\n else {\n retry = false\n if (status == 422) {\n this.#handleConstraintViolations(response)\n }\n }\n }\n if (retry) {\n this.#requestErrorLogger(\"Trying again (attempt %d)\",numAttempts +1)\n setTimeout( () => this.#submitForm(form, firstSubmittedAt, numAttempts + 1), numAttempts * 10)\n }\n else if (resubmit) {\n this.#requestErrorLogger(\"'retry' was marked false, but resubmit is 'true', so submitting through browser\")\n this.#submitFormThroughBrowser(form)\n this.removeAttribute(\"requesting\")\n }\n }\n }).catch( (error) => {\n this.#requestErrorLogger(\"Got %o, which cannot be retried\",error)\n this.#submitFormThroughBrowser(form)\n })\n }\n\n #button = () => { return this.querySelector(\"button\") }\n\n #submitFormThroughBrowser(form) {\n form.removeEventListener(\"submit\",this.#formSubmitted)\n if (this.#formSubmitDelay > 0) {\n console.log(\"Form submission has been delayed by %d ms in order to allow examining the log\",this.#formSubmitDelay)\n setTimeout( () => form.requestSubmit(this.#button()), this.#formSubmitDelay)\n }\n else {\n form.requestSubmit(this.#button())\n }\n\n }\n\n #handleConstraintViolations(response) {\n let resubmit = false\n response.text().then( (text) => {\n try {\n const inputsToMessages = ErrorMessagesForInput.mapInputsToErrorMessages(\n this.#errorMessagesFromServer(text),\n this.#requestErrorLogger\n )\n\n let inputToScrollToAfterReportingValidity\n for (const [inputName, {input, messagesElement, errorMessages}] of Object.entries(inputsToMessages)) {\n if (!inputToScrollToAfterReportingValidity) {\n inputToScrollToAfterReportingValidity = input\n }\n messagesElement.clearServerSideMessages()\n errorMessages.forEach( (element) => {\n ConstraintViolationMessage.markServerSide(element)\n messagesElement.appendChild(element) \n })\n this.#setCustomValidityThatClearsOnChange(input,errorMessages)\n }\n\n if (inputToScrollToAfterReportingValidity) {\n inputToScrollToAfterReportingValidity.scrollIntoView()\n }\n resubmit = false\n this.removeAttribute(\"requesting\")\n this.dispatchEvent(new CustomEvent(\"brut:submitinvalid\"))\n }\n catch (e) {\n this.#requestErrorLogger(\"While parsing %s, got %s\", text, e)\n resubmit = true\n }\n if (resubmit) {\n this.#submitFormThroughBrowser(form)\n }\n })\n }\n\n #errorMessagesFromServer(text) {\n const parser = new DOMParser()\n const fragment = parser.parseFromString(text,\"text/html\")\n\n return fragment.querySelectorAll(ConstraintViolationMessage.tagName)\n }\n\n #setCustomValidityThatClearsOnChange(input,errorMessages) {\n input.setCustomValidity(errorMessages[0].textContent)\n input.reportValidity()\n input.addEventListener(\"change\", () => input.setCustomValidity(\"\") )\n }\n}\n\nclass ErrorMessagesForInput {\n static mapInputsToErrorMessages(errorMessages,requestErrorLogger) {\n const errorMessagesForInputs = Array.from(errorMessages).map( (element) => {\n return new ErrorMessagesForInput({\n element: element,\n inputName: element.getAttribute(\"input-name\"),\n document: document,\n })\n })\n\n const inputsToMessages = {}\n\n errorMessagesForInputs.forEach( (errorMessagesForInput) => {\n if (errorMessagesForInput.allElementsFound()) {\n\n if (!inputsToMessages[errorMessagesForInput.inputName]) {\n inputsToMessages[errorMessagesForInput.inputName] = {\n input: errorMessagesForInput.input,\n messagesElement: errorMessagesForInput.messagesElement,\n errorMessages: []\n }\n }\n\n inputsToMessages[errorMessagesForInput.inputName].errorMessages.push(\n errorMessagesForInput.element\n )\n }\n else {\n requestErrorLogger(\n \"Server message %o could not be shown to the user: %s\",\n errorMessagesForInput.element,\n errorMessagesForInput.reasonNotAllElementsFound()\n )\n }\n })\n\n return inputsToMessages\n }\n\n constructor({element,inputName,document}) {\n this.element = element\n this.inputName = inputName\n\n if (this.inputName) {\n const selector = `${ConstraintViolationMessages.tagName}[input-name='${this.inputName}']`\n this.messagesElement = document.querySelector(selector)\n if (this.messagesElement) {\n this.closestForm = this.messagesElement.closest(\"form\")\n }\n if (this.inputName && this.closestForm) {\n this.input = this.closestForm.elements.namedItem(this.inputName)\n }\n }\n }\n\n allElementsFound() {\n return !!this.input\n }\n\n reasonNotAllElementsFound() {\n let reason\n if (this.inputName) {\n if (this.messagesElement) {\n if (this.closestForm) {\n reason = `Form did not contain an input named ${this.inputName}`\n }\n else {\n reason = `Could not find a form that contained the ${ConstraintViolationMessages.tagName} element` \n }\n }\n else {\n reason = `Could not find a ${ConstraintViolationMessages.tagName} element for ${this.inputName}`\n }\n }\n else {\n reason = \"server message was missing an input-name\"\n }\n return reason\n }\n}\n\nexport default AjaxSubmit\n", "import BaseCustomElement from \"./BaseCustomElement\"\n\n/** When the value of the wrapped form element(s) fire(s) a change event, the form is submitted.\n * This will only work if it is inside a form *and* the form elements it contains are part of the form.\n * That means if your input/textarea/select uses the `form` attribute, this custom element has no effect.\n *\n * @example\n *\n * <form>\n * <brut-autosubmit>\n * <!-- when a selection is made, the form is submitted -->\n * <select name=\"status\">\n * <option value=\"draft\">Draft</option>\n * <option value=\"ready\">Ready</option>\n * <option value=\"published\">Published</option>\n * </select>\n * </brut-autosubmit>\n * <!-- when the value is changed, form is NOT submitted -->\n * <input type=\"text\" value=\"notes\">\n * <button>Save</button>\n * </form>\n */\nclass Autosubmit extends BaseCustomElement {\n static tagName = \"brut-autosubmit\"\n\n static observedAttributes = [\n \"show-warnings\",\n ]\n\n #submitForm = (event) => {\n const form = this.closest(\"form\")\n if (!form) {\n this.logger.info(\"No longer a form containing this element\")\n return\n }\n if (event.target.form != form) {\n this.logger.info(\"Event target %o's form is not the form that contains this element\",event.target)\n return\n }\n form.requestSubmit()\n }\n\n update() {\n const form = this.closest(\"form\")\n if (!form) {\n this.logger.info(\"No form containing this element - nothing to autosubmit\")\n return\n }\n const inputs = Array.from(this.querySelectorAll(\"input, textarea, select\")).filter( (element) => {\n return element.form == form\n })\n if (inputs.length == 0) {\n this.logger.info(\"No input, textarea, or select inside this element belongs to the form containing this element\")\n return\n }\n inputs.forEach( (input) => {\n input.addEventListener(\"change\", this.#submitForm)\n })\n }\n}\nexport default Autosubmit\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\n\n/**\n * Enhances a `DIALOG` element to allow it to be used for confirmation. Mostly useful\n * with {@link Confirm}.\n *\n * This element must:\n *\n * * Wrap a `<DIALOG>` element\n * * Contain an `<H1>` where the message will go\n * * Have a `<BUTTON>` with value `ok` that will be considered the confirmation button.\n * * Have a `<BUTTON>` with value `cancel` that will be considered the denial button.\n *\n * Omitting these will cause this element to not work properly. Set `show-warnings` to see\n * warnings on this.\n *\n * @property {string} message - the message to use to ask for confirmation\n * @property {string} confirm-label - the label to use for the \"OK\" or \"Confirm\" button\n *\n * @example <caption>Minimal Example</caption>\n * <brut-confirmation-dialog message=\"This cannot be undone\" confirm-label=\"DOIT\">\n * <dialog>\n * <h1></h1>\n * <button value=\"ok\"></button>\n * <button value=\"cancel\">Nevermind</button>\n * </dialog>\n * </brut-confirmation-dialog>\n */\nclass ConfirmationDialog extends BaseCustomElement {\n static tagName = \"brut-confirmation-dialog\"\n static observedAttributes = [\n \"message\",\n \"confirm-label\",\n \"show-warnings\"\n ]\n\n #onClose = () => {}\n #message = new RichString(\"\")\n #confirmLabel = new RichString(\"OK\")\n\n constructor() {\n super()\n this.okListener = (event) => {\n this.#closeDialog()\n this.#onClose(true)\n }\n this.cancelListener = (event) => {\n this.#closeDialog()\n this.#onClose(false)\n }\n }\n\n messageChangedCallback({newValue}) {\n this.#message = RichString.fromString(newValue)\n }\n\n confirmLabelChangedCallback({newValue}) {\n this.#confirmLabel = RichString.fromString(newValue)\n }\n\n /**\n * Call this to show the dialog. When the dialog is closed, `onClose` is called with the result.\n *\n * @param {function} onClose - a function called with either `true` or `false`, if the dialog was confirmed or \n * denied, respectively.\n *\n * @example\n * dialog.showModal( (confirmed) => {\n * if (confirmed) {\n * form.submit()\n * }\n * else {\n * // do nothing\n * }\n * })\n */\n showModal(onClose) {\n const dialog = this.#dialog\n if (dialog) {\n this.#onClose = onClose || (() => {})\n dialog.showModal()\n }\n else {\n this.logger.warn(\"No <dialog> found to show\")\n }\n }\n\n get #dialog() {\n return this.querySelector(\"dialog\")\n }\n\n #closeDialog() {\n const dialog = this.#dialog\n if (dialog) {\n dialog.close()\n }\n }\n\n update() {\n const dialog = this.#dialog\n if (!dialog) {\n this.logger.warn(\"Could not find a <dialog> - this custom element won't do anything\")\n return\n }\n this.#setMessage(dialog)\n this.#setupButtons()\n }\n\n #setMessage(dialog) {\n const h1 = dialog.querySelector(\"h1\")\n if (h1) {\n if (this.#message.isBlank()) {\n h1.textContent = null\n }\n else {\n h1.textContent = this.#message.toString()\n }\n }\n else {\n this.logger.warn(\"Dialog had no <h1>, so nowhere to put the message\")\n }\n }\n\n #setupButtons() {\n const okButton = this.querySelector(\"button[value='ok']\")\n const cancelButton = this.querySelector(\"button[value='cancel']\")\n\n if (!okButton || !cancelButton) {\n if (!okButton) { this.logger.warn(\"no <button value='ok'> which is required for this dialog to work\") }\n if (!cancelButton) { this.logger.warn(\"no <button value='cancel'> which is required for this dialog to work\") }\n return\n }\n\n okButton.textContent = this.#confirmLabel\n\n okButton.addEventListener(\"click\" , this.okListener)\n cancelButton.addEventListener(\"click\" , this.cancelListener)\n }\n}\nexport default ConfirmationDialog\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\nimport ConfirmationDialog from \"./ConfirmationDialog\"\n\n/** Confirms form submissions with the user before allowing the form to be submitted. This can be applied per submit\n * button and only affects the behavior of `button` or `input type=submit`, and *only* if no other click handler\n * has been put onto those buttons. Note that this does not affect links (`a` elements).\n *\n * This can ask for confirmation with {@link external:Window#confirm} or a\n * `brut-confirmation-dialog`. What it will use depends on several factors, all of which\n * are geared toward doing the right thing. Note that setting `show-warnings` will elucidate the reasons\n * this component does what it does.\n *\n * * If `dialog` is set:\n * - If that id is on a `<brut-confirmation-dialog>` that is used.\n * - If not, `window.confirm` is used.\n * * If `dialog` is not set:\n * - If there is exactly one `<brut-confirmation-dialog>` on the page, this is used.\n * - If there is more than one, or no `<brut-confirmation-dialog>`s, `window.confirm` is used.\n *\n * @see ConfirmationDialog\n *\n * @property {string} message - the message to show that asks for confirmation. It should be written such that\n * \"OK\" is grammatically correct for confirmation and \"Cancel\" is for aborting.\n * @property {string} dialog - optional ID of the `brut-confirmation-dialog` to use instead of `window.confirm`.\n * If there is no such dialog or the id references the wrong element type,\n * `window.confirm` will be used. Setting `show-warnings` will generate a warning for this.\n */\nclass ConfirmSubmit extends BaseCustomElement {\n static tagName = \"brut-confirm-submit\"\n\n static observedAttributes = [\n \"message\",\n \"dialog\",\n \"show-warnings\",\n ]\n\n #message = new RichString(\"\")\n #confirming = false\n #dialogId = null\n\n messageChangedCallback({newValue}) {\n this.#message = new RichString(newValue || \"\")\n }\n\n dialogChangedCallback({newValue}) {\n this.#dialogId = RichString.fromString(newValue)\n }\n\n constructor() {\n super()\n this.onClick = (event) => {\n if (this.#confirming) {\n this.#confirming = false\n return\n }\n if (this.#message.isBlank()) {\n this.logger.warn(\"No message provided, so cannot confirm\")\n return\n }\n const dialog = this.#findDialog()\n if (dialog) {\n event.preventDefault()\n dialog.setAttribute(\"message\",this.#message.toString())\n const buttonLabel = event.target.getAttribute(\"aria-label\") || event.target.textContent\n dialog.setAttribute(\"confirm-label\",buttonLabel)\n this.#confirming = true\n dialog.showModal((confirm) => {\n if (confirm) {\n event.target.click()\n }\n else {\n this.#confirming = false\n }\n })\n }\n else {\n const result = window.confirm(this.#message)\n if (!result) {\n event.preventDefault()\n }\n }\n }\n }\n\n #findDialog() {\n if (this.#dialogId) {\n const dialog = document.getElementById(this.#dialogId)\n if (dialog) {\n if (dialog.tagName.toLowerCase() != ConfirmationDialog.tagName) {\n throw `${this.#dialogId} is the id of a '${dialog.tagName}', not '${ConfirmationDialog.tagName}'`\n }\n return dialog\n }\n this.logger.warn(`No dialog with id ${this.#dialogId} - using window.confirm as a fallback`)\n return null\n }\n const dialogs = document.querySelectorAll(ConfirmationDialog.tagName)\n if (dialogs.length == 1) {\n return dialogs[0]\n }\n if (dialogs.length == 0) {\n this.logger.warn(`No '${ConfirmationDialog.tagName}' found in document - using window.confirm as a fallback`)\n return null\n }\n throw `Found ${dialogs.length} '${ConfirmationDialog.tagName}' elements. Not sure which to use. Remove all but one or specify the 'dialog' attribute on this element to specify which one to use`\n }\n\n update() {\n this.querySelectorAll(\"button\").forEach( (button) => button.addEventListener(\"click\", this.onClick) )\n this.querySelectorAll(\"input[type=submit]\").forEach( (button) => button.addEventListener(\"click\", this.onClick) )\n }\n}\nexport default ConfirmSubmit\n", "import BaseCustomElement from \"./BaseCustomElement\"\n\n/** Wraps a `<BUTTON>` that will copy text from another element into the system clipboard. It will set various attributes on itself\n * to allow styling the states of the process.\n *\n * Overall, the flow is as follows:\n *\n * 1. When the button is clicked, its default is prevented, and the element with the id of the `element` attribute is located.\n * 2. If found, this element gets the `copying` attribute set.\n * 3. If the copy completes successfully:\n * a. `copying` is removed\n * b. `copied` is set\n * c. `copied` is scheduled for removal in 2000ms or the number of milliseconds in the `copied-lifetime` attribute.\n * 4. If the copy failed:\n * a. `copying` is removed\n * b. `errored` is set\n * c. The `brut:copyfailed` event is fired. It's detail contains a `text:` value with the text that was attempted to be copied.\n *\n * The intention is to use these attributes to style whatever UX you want.\n *\n * @property {string} element - ID of the element whose `textContent` is what will be copied to the clipboard.\n * @property {number} copied-lifetime - number of milliseconds to wait before clearing the `copied` attribute after a successful copy.\n * @property {boolean} copying - Set after a copy is initiated, but before it completes\n * @property {boolean} copied - Set after a copy is completed successfully\n * @property {boolean} errored - Set after a copy is fails\n *\n * @fires brut:copyfailed Fired when the copy fails to complete\n *\n * @example\n * <pre><code id=\"code\">dx/exec bin/setup</code></pre>\n * <brut-copy-to-clipboard element=\"code\">\n * <button>Copy</button>\n * </brut-copy-to-clipboard>\n */\nclass CopyToClipboard extends BaseCustomElement {\n static tagName = \"brut-copy-to-clipboard\"\n\n static observedAttributes = [\n \"element\",\n \"copied-lifetime\",\n ]\n\n #elementId = null\n #copiedLifetime = 2000\n\n #copyCode = (event) => {\n event.preventDefault()\n\n const element = document.getElementById(this.#elementId)\n\n if (!element) {\n this.logger.info(\"No element with id %s, so nothing to copy\",this.#elementId)\n return\n }\n this.setAttribute(\"copying\",true)\n\n const text = element.textContent\n\n navigator.clipboard.writeText(text).then( () => {\n this.setAttribute(\"copied\", true)\n }).catch( (e) => {\n this.setAttribute(\"errored\", true)\n this.dispatchEvent(new CustomEvent(\"brut:copyfailed\", { detail: { text: text }}))\n }).finally( () => {\n this.removeAttribute(\"copying\")\n setTimeout( () => this.removeAttribute(\"copied\"), 2000)\n })\n }\n\n update() {\n const button = this.querySelector(\"button\")\n if (button) {\n button.addEventListener(\"click\", this.#copyCode)\n }\n else {\n this.logger.info(\"There is no button, so no way to initiate a copy\")\n }\n }\n\n elementChangedCallback({newValue}) {\n this.#elementId = newValue\n }\n\n copiedLifetimeChangedCallback({newValue}) {\n const newValueAsInt = parseInt(newValue)\n if (!isNaN(newValueAsInt)) {\n this.#copiedLifetime = newValueAsInt\n }\n else {\n this.logger.info(\"Value '%s' for copied-lifetime is not a number. Ignoring it\",newValue)\n }\n }\n}\nexport default CopyToClipboard\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\nimport AjaxSubmit from \"./AjaxSubmit\"\nimport ConstraintViolationMessages from \"./ConstraintViolationMessages\"\n\n/** A web component that enhances a form it contains to make constraint validations\n * easier to manage and control.\n *\n * This provides two main features:\n *\n * * While the `:user-invalid` selector allows you to target inputs that have been interacted\n * with (thus avoiding issues when using `:invalid`), this still creates the experience of a\n * user tabbing off of a control and getting an error message. If, instead, you only\n * want to show these errors when a submit has been attempted, this element will\n * set `submitted-invalid` on itself when that happens, thus allowing you to target invalid\n * fields only after a submission attempt.\n * * You may wish to control the messaging of client-side constraint violations\n * beyond what the browser gives you. Assuming your `INPUT` tags are inside a container\n * like `LABEL`, a `brut-cv` tag found in that container\n * (i.e. a sibling of your `INPUT`) will be modified to contain error messages specific\n * to the {@link external:ValidityState} of the control.\n *\n * @fires brut:invalid Fired when any element is found to be invalid\n * @fires brut:valid Fired when no element is found to be invalid. This should be reliable to know\n * when constraint violations have cleared.\n *\n * @example <caption>Basic Structure Required</caption>\n * <brut-form>\n * <form ...>\n * <label>\n * <input type=\"text\" required name=\"username\">\n * <brut-cv-messages>\n * </brut-cv-messages>\n * </label>\n * <div> <!-- container need not be a label -->\n * <input type=\"text\" required minlength=\"4\" name=\"alias\">\n * <brut-cv-messages>\n * </brut-cv-messages>\n * </div>\n * <button>Submit</button>\n * </form>\n * </brut-form>\n * <!-- after a submit of this form, the HTML will effectively be as follows -->\n * <brut-form submitted-invalid>\n * <form ...>\n * <label>\n * <input type=\"text\" required name=\"username\">\n * <brut-cv-messages>\n * <brut-cv>This field is required</brut-cv>\n * </brut-cv-messages>\n * </label>\n * <div> <!-- container need not be a label -->\n * <input type=\"text\" required minlength=\"4\" name=\"alias\">\n * <brut-cv-messages>\n * <brut-cv>This field is required</brut-cv>\n * </brut-cv-messages>\n * </div>\n * <button>Submit</button>\n * </form>\n * </brut-form>\n *\n * @property {boolean} submitted-invalid - set by this element when the form is submitted. Does not trigger any behavior and can be used in CSS.\n * @see ConstraintViolationMessages\n */\nclass Form extends BaseCustomElement {\n static tagName = \"brut-form\"\n static observedAttributes = [\n \"submitted-invalid\",\n \"show-warnings\",\n ]\n\n #markFormSubmittedInvalid = (event) => {\n this.setAttribute(\"submitted-invalid\",\"\")\n }\n #updateValidity = (event) => {\n this.#updateErrorMessages(event)\n }\n #sendValid = () => {\n this.dispatchEvent(new CustomEvent(\"brut:valid\"))\n }\n #sendInvalid = () => {\n this.dispatchEvent(new CustomEvent(\"brut:invalid\"))\n }\n\n submittedInvalidChangedCallback() {}\n\n update() {\n const forms = this.querySelectorAll(\"form\")\n if (forms.length == 0) {\n this.logger.warn(\"Didn't find any forms. Ignoring\")\n return\n }\n forms.forEach( (form) => {\n Array.from(form.elements).forEach( (formElement) => {\n formElement.addEventListener(\"invalid\", this.#updateValidity)\n formElement.addEventListener(\"invalid\", this.#markFormSubmittedInvalid)\n formElement.addEventListener(\"input\", this.#updateValidity)\n })\n form.querySelectorAll(AjaxSubmit.tagName).forEach( (ajaxSubmits) => {\n ajaxSubmits.addEventListener(\"brut:submitok\", this.#sendValid)\n ajaxSubmits.addEventListener(\"brut:submitinvalid\", this.#sendInvalid)\n })\n })\n }\n\n #updateErrorMessages(event) {\n const element = event.target\n const selector = ConstraintViolationMessages.tagName\n let errorLabels = element.parentNode.querySelectorAll(selector)\n if (errorLabels.length == 0) {\n if (element.name && element.form) {\n const moreGeneralSelector = `${ConstraintViolationMessages.tagName}[input-name='${element.name}']`\n errorLabels = element.form.querySelectorAll(moreGeneralSelector)\n if (errorLabels.length == 0) {\n this.logger.warn(`Did not find any elements matching ${selector} or ${moreGeneralSelector}, so no error messages will be shown`)\n }\n }\n else {\n this.logger.warn(\"Did not find any elements matching %s and the form element has %s %s\",\n selector,\n element.name ? \"no name\" : \"a name, but\",\n element.form ? \"no form\" : \"though has a form\")\n }\n }\n if (errorLabels.length == 0) {\n return\n }\n let anyErrors = false\n errorLabels.forEach( (errorLabel) => {\n if (element.validity.valid) {\n errorLabel.clearClientSideMessages()\n }\n else {\n anyErrors = true\n errorLabel.createMessages({\n validityState: element.validity,\n inputName: element.name\n })\n }\n })\n if (anyErrors) {\n this.#sendInvalid()\n }\n else {\n this.#sendValid()\n }\n }\n}\nexport default Form\n", "import BaseCustomElement from \"./BaseCustomElement\"\n\nclass LocaleDetection extends BaseCustomElement {\n static tagName = \"brut-locale-detection\"\n\n static observedAttributes = [\n \"locale-from-server\",\n \"timezone-from-server\",\n \"url\",\n \"timeout-before-ping-ms\",\n \"show-warnings\",\n ]\n\n #localeFromServer = null\n #timezoneFromServer = null\n #reportingURL = null\n #timeoutBeforePing = 1000\n #serverContacted = false\n\n localeFromServerChangedCallback({newValue}) {\n this.#localeFromServer = newValue\n }\n\n timezoneFromServerChangedCallback({newValue}) {\n this.#timezoneFromServer = newValue\n }\n\n urlChangedCallback({newValue}) {\n if (this.#serverContacted) {\n this.#serverContacted = false\n }\n this.#reportingURL = newValue\n }\n\n timeoutBeforePingMsChangedCallback({newValue}) {\n this.#timeoutBeforePing = newValue\n }\n\n update() {\n if (this.#timeoutBeforePing == 0) {\n this.#pingServerWithLocaleInfo()\n }\n else {\n setTimeout(this.#pingServerWithLocaleInfo.bind(this), this.#timeoutBeforePing)\n }\n }\n\n #pingServerWithLocaleInfo() {\n if (!this.#reportingURL) {\n this.logger.info(\"no url= set, so nowhere to report to\")\n return\n }\n if (this.#localeFromServer && this.#timezoneFromServer) {\n this.logger.info(\"locale and timezone both set, not contacting server\")\n return\n }\n\n if (this.#serverContacted) {\n this.logger.info(\"server has already been contacted at the given url, not doing it again\")\n return\n }\n this.#serverContacted = true\n\n const formatOptions = Intl.DateTimeFormat().resolvedOptions()\n const request = new Request(\n this.#reportingURL,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n body: JSON.stringify({\n locale: formatOptions.locale,\n timeZone: formatOptions.timeZone,\n }),\n }\n )\n\n window.fetch(request).then( (response) => {\n if (response.ok) {\n this.logger.info(\"Server gave us the OK\") \n }\n else {\n console.warn(response)\n }\n }).catch( (e) => {\n console.warn(e)\n })\n }\n\n\n}\nexport default LocaleDetection\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\nimport I18nTranslation from \"./I18nTranslation\"\n\n/** Renders a translated message for a given key, handling all the needed interpolation based\n * on the existence of `<brut-i18n-translation>` elements on the page.\n *\n * When the `key` attribute has a value, this element will locate the `<brut-i18-translation>` element and call `translate`. Note that\n * interpolation is not supported.\n *\n * @property {string} key - the i18n translation key to use. It must map to the `key` of a `<brut-i18n-translation>` on the page or\n * the element will not render any text.\n *\n * @see I18nTranslation\n * @see ConstraintViolationMessage\n */\nclass Message extends BaseCustomElement {\n static tagName = \"brut-message\"\n\n static observedAttributes = [\n \"show-warnings\",\n \"key\",\n ]\n\n static createElement(document,attributes) {\n const element = document.createElement(Message.tagName)\n element.setAttribute(\"key\",attributes.key)\n element.setAttribute(\"show-warnings\",attributes[\"show-warnings\"])\n return element\n }\n\n #key = null\n\n keyChangedCallback({newValue}) {\n this.#key = newValue\n }\n\n update() {\n if (!this.#key) {\n this.logger.info(\"No key attribute, so can't do anything\")\n return\n }\n\n const selector = `${I18nTranslation.tagName}[key='${this.#key}']`\n const translation = document.querySelector(selector)\n if (!translation) {\n this.logger.info(\"Could not find translation based on selector '%s'\",selector)\n return\n }\n\n this.textContent = RichString.fromString(translation.translation()).capitalize().toString()\n }\n\n}\nexport default Message\n", "import BaseCustomElement from \"./BaseCustomElement\"\n\n/** Implements an in-page tab selector. It's intended to wrap a set of `<a>` or `<button>` elements\n * that represent the tabs of a tabbed UI, as defined by ARIA roles. \n *\n * Each direct child must be an `<a>` or a `<button>`, though `<a>` is recommended.\n * Any other elements are ignored. Each `<a>` or `<button>`\n * (herafter referred to as \"tab\") must have the correct ARIA attributes:\n *\n * * `role=\"tab\"`\n * * `aria-selected` as true or false, depending on what tab is selected when the page is first rendered. This\n * custom element will ensure this value is updated as different tabs are selected.\n * * `tabindex` should be 0 if selected, -1 otherwise. This custom element will ensure this value is updated as\n * different tabs are selected.\n * * `aria-controls` to the ID or list of IDs of panels that should be shown when this tab is selected.\n * * `id` to allow the `tab-panel` to refer back to this tab.\n *\n * This custom element will set click listeners on all tabs and, when clicked, hide all panels referred to by\n * every tab (by setting the `hidden` attribute), then show only those panels referred to by the clicked\n * tab. You can use CSS to style everything the way you like it.\n *\n * @property {boolean} tab-selection-pushes-and-restores-state if set, this custom element will use the \n * history API to manage state. When a tab\n * implemented by an `<a>` with an `href` is\n * clicked, that `href` will be pushed into \n * the state. When the back button is hit,\n * this will select the previous tab as selected.\n * Note that this will conflict with anything else\n * on the page that manipulates state, so only\n * set this if your UI is a \"full page tab\"\n * style UI.\n *\n * @fires Tabs#brut:tabselected whenever the tab selection has changed\n * @example\n * <brut-tabs>\n * <a role=\"tab\" aria-selected=\"true\" tabindex=\"0\" aria-controls=\"inbox-panel\" id=\"inbox-tab\"\n * href=\"?tab=inbox\">Inbox</a>\n * <a role=\"tab\" aria-selected=\"false\" tabindex=\"-1\" aria-controls=\"drafts-panel\" id=\"drafts-tab\"\n * href=\"?tab=drafts\">Drafts</a>\n * <a role=\"tab\" aria-selected=\"false\" tabindex=\"-1\" aria-controls=\"spam-panel\" id=\"spam-tab\"\n * href=\"?tab=spam\">Spam</a>\n * </brut-tabs>\n * <section role=\"tabpanel\" tabindex=\"0\" id=\"inbox-panel\">\n * <h3>Inbox</h3>\n * </section>\n * <section role=\"tabpanel\" tabindex=\"0\" id=\"drafts-panel\" hidden>\n * <h3>Drafts</h3>\n * </section>\n * <section role=\"tabpanel\" tabindex=\"0\" id=\"spam-panel\" hidden>\n * <h3>Spam</h3>\n * </section>\n * <!-- if a user clicks on 'Drafts', the DOM will be updated to look\n * effectively like so: -->\n * <brut-tabs>\n * <a role=\"tab\" aria-selected=\"false\" tabindex=\"-1\" aria-controls=\"inbox-panel\" id=\"inbox-tab\"\n * href=\"?tab=inbox\">Inbox</a>\n * <a role=\"tab\" aria-selected=\"true\" tabindex=\"0\" aria-controls=\"drafts-panel\" id=\"drafts-tab\"\n * href=\"?tab=drafts\">Drafts</a>\n * <a role=\"tab\" aria-selected=\"false\" tabindex=\"-1\" aria-controls=\"spam-panel\" id=\"spam-tab\"\n * href=\"?tab=spam\">Spam</a>\n * </brut-tabs>\n * <section role=\"tabpanel\" tabindex=\"0\" id=\"inbox-panel\" hidden>\n * <h3>Inbox</h3>\n * </section>\n * <section role=\"tabpanel\" tabindex=\"-1\" id=\"drafts-panel\">\n * <h3>Drafts</h3>\n * </section>\n * <section role=\"tabpanel\" tabindex=\"-1\" id=\"spam-panel\" hidden>\n * <h3>Spam</h3>\n * </section>\n *\n */\nclass Tabs extends BaseCustomElement {\n static tagName = \"brut-tabs\"\n static observedAttributes = [\n \"tab-selection-pushes-and-restores-state\",\n \"show-warnings\",\n ]\n\n tabSelectionPushesAndRestoresStateChangedCallback({newValue,oldValue}) {\n this.#pushAndRestoreTabState = newValue != null\n }\n\n update() {\n this.#tabs().forEach( (tab) => {\n tab.addEventListener(\"click\", this.#tabClicked)\n })\n }\n\n #pushAndRestoreTabState = false\n\n #tabClicked = (event) => {\n event.preventDefault()\n this.#setTabAsSelected(event.target)\n event.preventDefault()\n }\n\n #reloadTab = (event) => {\n const tab = document.getElementById(event.state.tabId)\n if (tab) {\n this.#setTabAsSelected(tab, { skipPushState: true })\n }\n }\n\n #setTabAsSelected(selectedTab, { skipPushState = false } = {}) {\n this.#tabs().forEach( (tab) => {\n const tabPanels = []\n const ariaControls = tab.getAttribute(\"aria-controls\")\n if (ariaControls) {\n ariaControls.split(/\\s+/).forEach( (id) => {\n const panel = document.getElementById(id)\n if (panel) {\n tabPanels.push(panel)\n }\n else {\n this.logger.warn(\"Tab %o references panel with id %s, but no such element exists with that id\",tab,id)\n }\n })\n }\n if (tab == selectedTab) {\n tab.setAttribute(\"aria-selected\",true)\n tab.setAttribute(\"tabindex\",\"0\")\n tabPanels.forEach( (panel) => panel.removeAttribute(\"hidden\") )\n if (this.#pushAndRestoreTabState && !skipPushState) {\n let href = tab.getAttribute(\"href\") || \"\"\n if (href.startsWith(\"?\")) {\n let hrefQueryString = href.slice(1)\n const anchorIndex = hrefQueryString.indexOf(\"#\")\n if (anchorIndex != -1) {\n hrefQueryString = hrefQueryString.slice(-1 * (hrefQueryString.length - anchorIndex - 1))\n }\n const currentQuery = new URLSearchParams(window.location.search)\n const hrefQuery = new URLSearchParams(hrefQueryString)\n hrefQuery.forEach( (value,key) => {\n currentQuery.set(key,value)\n })\n href = \"?\" + currentQuery.toString() + (anchorIndex == -1 ? \"\" : hrefQueryString.slice(anchorIndex))\n }\n window.history.pushState({ tabId: tab.id },\"\",href)\n window.addEventListener(\"popstate\", this.#reloadTab)\n }\n this.dispatchEvent(new CustomEvent(\"brut:tabselected\", { tabId: tab.id }))\n }\n else {\n tab.setAttribute(\"aria-selected\",false)\n tab.setAttribute(\"tabindex\",\"-1\")\n tabPanels.forEach( (panel) => panel.setAttribute(\"hidden\", true) )\n }\n })\n }\n\n\n #tabs() {\n const tabs = []\n this.querySelectorAll(\"[role=tab]\").forEach( (tab) => {\n if ( (tab.tagName.toLowerCase() == \"a\") || (tab.tagName.toLowerCase() == \"button\") ) {\n tabs.push(tab)\n }\n else {\n this.logger.warn(\"An element with tag %s was assigned role=tab, and %s doesn't work that way. Use an <a> or a <button>\",tab.tagName,this.constructor.name)\n }\n })\n return tabs\n }\n\n}\nexport default Tabs\n", "import { BaseCustomElement } from \"brut-js\"\n\n/** Sends performance data to an endpoint in a Brut-powered app that is expected to save it as an Open Telemetry span.\n * Uses the W3C-recommended headers \"traceparent\" and \"tracestate\" to do this.\n *\n * ### Supported Metrics\n *\n * Currently, this will attempt to send \"navigation\", \"largest-contentful-paint\", and \"first-contentful-paint\" back to the server.\n * Not all browsers support these, so this element will send back as many as it can. It will wait for all supported metrics to be\n * received before contacting the server. It will attempt to do this exactly once.\n *\n * ### Use\n *\n * To use this element, your page must have a `<meta>` element that contains the value for \"traceparent\". It is expected that your\n * server will include this in server-generatd HTML. The Brut's `Brut::FrontEnd::Components::Traceparent` component will handle this\n * for you. The value for \"traceparent\" is key to connecting the browser metrics to the back-end request that generated the page.\n *\n * The element also requires a `url` attribute to know where to send the data. By default, Brut is listening in\n * `/__brut/instrumentation`. See the example.\n *\n * ### Durations vs Timestamps\n *\n * The performance API produces durations since an origin timestamp. Open Telemetry wants timestamps. In theory,\n * `Performance.timeOrigin` is provided by the browser as a reference time when the page started doing anything.\n * In practice, this value is incorrect on Firefox, so the element records a timestamp when it is created.\n *\n * When the data is merged back to the server span, the specific timestamps will not exactly match reality, however the durations will\n * be accurate. Note that even if `Performance.timeOrigin` was correct, clock drift between client and server would make\n * the timestamps inaccurate anyway.\n *\n * ### Encoding\n *\n * The spec for the \"tracestate\" header leaves open how the data is to be encoded. It supports multiple vendors using a key/value\n * pair:\n *\n * tracestate: honeycomb=\u00ABencoded data\u00BB,newrelic=\u00ABencoded data\u00BB\n *\n * This element uses the vendor name \"brut\". The data is a Base64-encoded JSON blob containing the data. \n *\n * tracestate: brut=\u00ABBase64 encoded JSON\u00BB\n *\n * The values captured and format of the JSON map closely to Open Telemetry's browser instrumentation format.\n * Of course, this element is many magnitudes smaller in size than Open Telemetry's, which is why it exists at all\n *\n * @example\n * <!DOCTYPE html>\n * <html>\n * <head>\n * <meta name=\"traceparent\" content=\"293874293749237439843294\">\n * <brut-tracing url=\"/__brut/instrumentation\"></brut-tracing>\n * <!-- ... -->\n * </head>\n * <body>\n * <!-- ... -->\n * </body>\n * </html>\n *\n * @property {string} url - the url where the trace information is to be sent.\n *\n * @see {@link https://www.w3.org/TR/trace-context/}\n * @see external:Performance\n */\nclass Tracing extends BaseCustomElement {\n static tagName = \"brut-tracing\"\n\n static observedAttributes = [\n \"url\",\n \"show-warnings\",\n ]\n\n\n #url = null\n #sent = {}\n #payload = {}\n #timeOrigin = null\n #supportedTypes = []\n\n #performanceObserver = new PerformanceObserver( (entries) => {\n const navigation = entries.getEntriesByType(\"navigation\")[0]\n if (navigation && navigation.loadEventEnd != 0 && !this.#payload.navigation) {\n this.#payload.navigation = this.#parseNavigation(navigation)\n }\n const largestContentfulPaint = entries.getEntriesByType(\"largest-contentful-paint\")\n if (largestContentfulPaint.length > 0 && !this.#payload[\"largest-contentful-paint\"]) {\n this.#payload[\"largest-contentful-paint\"] = this.#parseLargestContentfulPaint(largestContentfulPaint)\n }\n const paint = entries.getEntriesByName(\"first-contentful-paint\", \"paint\")[0]\n if (paint && !this.#payload.paint) {\n this.#payload.paint = this.#parseFirstContentfulPaint(paint)\n }\n\n if ( this.#supportedTypes.every( (type) => this.#payload[type] ) ) {\n this.#sendSpans()\n this.#payload = {}\n }\n })\n\n constructor() {\n super()\n this.#timeOrigin = Date.now()\n this.#supportedTypes = [\n \"navigation\",\n \"largest-contentful-paint\",\n \"paint\",\n ].filter( (type) => {\n return PerformanceObserver.supportedEntryTypes.includes(type)\n })\n }\n\n urlChangedCallback({newValue}) {\n this.#url = newValue\n }\n\n update() {\n this.#supportedTypes.forEach( (type) => {\n this.#performanceObserver.observe({type: type, buffered: true})\n })\n }\n\n #sendSpans() {\n const headers = this.#initializerHeadersIfCanContinue()\n if (!headers) {\n return\n }\n const span = this.#payload.navigation\n\n if (this.#payload.paint) {\n span.events.push({\n name: this.#payload.paint.name,\n timestamp: this.#timeOrigin + this.#payload.paint.startTime\n })\n }\n if (this.#payload[\"largest-contentful-paint\"]) {\n this.#payload[\"largest-contentful-paint\"].forEach( (event) => {\n span.events.push({\n name: event.name,\n timestamp: this.#timeOrigin + event.startTime,\n attributes: {\n \"element.tag\": event.element?.tagName,\n \"element.class\": event.element?.className,\n }\n })\n })\n }\n\n this.#sent[this.#url] = true\n headers.append(\"tracestate\",`brut=${window.btoa(JSON.stringify(span))}`)\n const request = new Request(\n this.#url,\n {\n headers: headers,\n method: \"GET\",\n }\n )\n fetch(request).then( (response) => {\n if (!response.ok) {\n console.warn(\"Problem sending instrumentation: %s/%s\", response.status,response.statusText)\n }\n }).catch( (error) => {\n console.warn(\"Problem sending instrumentation: %o\", error)\n })\n }\n\n #parseNavigation(navigation) {\n const documentFetch = {\n name: \"browser.documentFetch\",\n start_timestamp: navigation.fetchStart + this.#timeOrigin,\n end_timestamp: navigation.responseEnd + this.#timeOrigin,\n attributes: {\n \"http.url\": navigation.name,\n },\n }\n const events = [\n \"fetchStart\",\n \"unloadEventStart\",\n \"unloadEventEnd\",\n \"domInteractive\",\n \"domInteractive\",\n \"domContentLoadedEventStart\",\n \"domContentLoadedEventEnd\",\n \"domComplete\",\n \"loadEventStart\",\n \"loadEventEnd\",\n ]\n\n return {\n name: \"browser.documentLoad\",\n start_timestamp: navigation.fetchStart + this.#timeOrigin,\n end_timestamp: navigation.loadEventEnd + this.#timeOrigin,\n attributes: {\n \"http.url\": navigation.name,\n \"http.user_agent\": window.navigator.userAgent,\n },\n events: events.map( (eventName) => {\n return {\n name: eventName,\n timestamp: this.#timeOrigin + navigation[eventName],\n }\n }),\n spans: [\n documentFetch\n ]\n }\n }\n\n #parseFirstContentfulPaint(paint) {\n return {\n name: \"browser.first-contentful-paint\",\n startTime: paint.startTime,\n }\n }\n\n #parseLargestContentfulPaint(largestContentfulPaint) {\n return largestContentfulPaint.map( (entry) => {\n return {\n name: \"browser.largest-contentful-paint\",\n startTime: entry.startTime,\n element: entry.element,\n }\n })\n }\n\n #initializerHeadersIfCanContinue() {\n if (!this.#url) {\n this.logger.info(\"No url set, no traces will be reported\")\n return\n }\n const $traceparent = document.querySelector(\"meta[name='traceparent']\")\n if (!$traceparent) {\n this.logger.info(\"No <meta name='traceparent' ...> in the document, no traces can be reported\")\n return\n }\n if (this.#sent[this.#url]) {\n this.logger.info(\"Already sent to %s\", this.#url)\n return\n }\n const traceparent = $traceparent.getAttribute(\"content\")\n if (!traceparent) {\n this.logger.info(\"%o had no value for the content attribute, no traces can be reported\",$traceparent)\n return\n }\n return new Headers({ traceparent })\n }\n}\nexport default Tracing\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport AjaxSubmit from \"./AjaxSubmit\"\nimport Autosubmit from \"./Autosubmit\"\nimport ConfirmSubmit from \"./ConfirmSubmit\"\nimport ConfirmationDialog from \"./ConfirmationDialog\"\nimport ConstraintViolationMessage from \"./ConstraintViolationMessage\"\nimport ConstraintViolationMessages from \"./ConstraintViolationMessages\"\nimport CopyToClipboard from \"./CopyToClipboard\"\nimport Form from \"./Form\"\nimport I18nTranslation from \"./I18nTranslation\"\nimport LocaleDetection from \"./LocaleDetection\"\nimport Message from \"./Message\"\nimport RichString from \"./RichString\"\nimport Tabs from \"./Tabs\"\nimport Tracing from \"./Tracing\"\n\n/**\n * This is the code for a test case. It may return a {@link external:Promise} if there is async behavior that must\n * be waited-on to properly assert behavior.\n *\n * @callback testCodeCallback\n *\n * @param {Object} objects - objects passed into your test that you may need.\n * @param {Window} objects.window - Access to the top-level window object. Note that this provided by JSDOM and is not exactly like the `Window` you'd get in your browser.\n * @param {Document} objects.document - Access to the top-level document object. Note that this provided by JSDOM and is not exactly like the `Document` you'd get in your browser.\n * @param {Object} objects.assert - The NodeJS assert object that you should use to assert behavior.\n * @param {Object} objects.fetchRequests - An array of `Request` instances given to `fetch`. This will be updated as `fetch` is\n * called and can be useful to assert the contents of what was requested via `fetch`.\n *\n * @example\n * test(\"some test\", ({document,assert}) => {\n * const element = document.querySelector(\"div\")\n * assert(div.getAttribute(\"data-foo\") != null)\n * })\n *\n * @example\n * test(\"some other test\", ({document,window,assert}) => {\n * const element = document.querySelector(\"div\")\n * assert.equal(window.history.state[\"foo\"], \"bar\")\n * })\n */\n\n/**\n * @external Performance\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Performance|Performance API}\n */\n\n/**\n * @external Promise\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise|Promise}\n */\n/**\n * @external fetch\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/fetch|fetch}\n */\n\n/**\n * @external ValidityState\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/ValidityState|ValidityState}\n */\n\n/**\n * The standard `CustomElementRegistry`\n *\n * @external CustomElementRegistry\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry|CustomElementRegistry}\n */\n\n/**\n * @external Window\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/|Window}\n */\n\n/** \n * @method confirm\n * @memberof external:Window#\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm|confirm}\n */\n\n/**\n * Class that can be used to automatically define all of brut's custom\n * elements.\n */\nclass BrutCustomElements {\n static elementClasses = []\n static define() {\n this.elementClasses.forEach( (e) => {\n e.define() \n })\n }\n static addElementClasses(...classes) {\n this.elementClasses.push(...classes)\n }\n}\n\nBrutCustomElements.addElementClasses(\n // Ordering is important here - TBD how to make sure these are created in order\n I18nTranslation,\n CopyToClipboard,\n Message,\n ConfirmSubmit,\n ConfirmationDialog,\n ConstraintViolationMessages,\n Form,\n AjaxSubmit,\n ConstraintViolationMessage,\n Tabs,\n LocaleDetection,\n Autosubmit,\n Tracing,\n)\n\nexport {\n AjaxSubmit,\n Autosubmit,\n BaseCustomElement,\n BrutCustomElements,\n ConfirmSubmit,\n ConfirmationDialog,\n ConstraintViolationMessage,\n ConstraintViolationMessages,\n Form,\n I18nTranslation,\n LocaleDetection,\n Message,\n RichString,\n Tabs,\n Tracing\n}\n\n", "import * as BrutJS from \"./index.js\"\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n BrutJS.BrutCustomElements.define()\n if (!HTMLDialogElement.prototype.showModal) {\n HTMLDialogElement.prototype.showModal = function() {\n this.open = true\n }\n }\n if (!HTMLDialogElement.prototype.close) {\n HTMLDialogElement.prototype.close = function(returnValue) {\n this.open = false\n this.returnValue = returnValue\n }\n }\n})\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/**\n * Abstract interface for logging information from a component.\n * This is intended to allow prefixed messages to be optionally shown\n * in the console to help debug.\n *\n * @see BufferedLogger\n * @see PrefixedLogger\n * @see BaseCustomElement#logger\n */\nclass Logger {\n /** Create a logger for the given prefix.\n *\n * @param {string|false} stringOrFalse - if false,returns a {@link BufferedLogger}. Otherwise, returns a {@link PrefixedLogger} using the param's value as the prefix.\n *\n * @returns {Logger}\n */\n static forPrefix(stringOrFalse) {\n if (!stringOrFalse) {\n return new BufferedLogger()\n }\n else {\n return new PrefixedLogger(stringOrFalse)\n }\n }\n\n /** Subclasses must implement this.\n *\n * @param {string} level - 'info' or 'warn' to indicate the logging level\n * @param {...*} args - args to pass directly to console.log\n */\n log() {\n throw `Subclass must implement`\n }\n\n /** Log an informational bit of information */\n info(...args) { this.log(\"info\",...args) }\n /** Log a warning */\n warn(...args) { this.log(\"warn\",...args) }\n}\n\n/** Logger that buffers, but does not print, its logged messages.\n * The reason it buffers them is to allow custom elements to retroatively log\n * information captured before warnings were turned on.\n */\nclass BufferedLogger extends Logger {\n constructor() {\n super()\n this.messages = []\n }\n log(...args) {\n this.messages.push(args)\n }\n}\n\n/** Log information to the JavaScript console.\n*/\nclass PrefixedLogger extends Logger {\n /** Create a PrefixedLogger.\n *\n * @param {string|true} prefixOrTrue - if true, uses the prefix `\"debug\"`, otherwise uses the param as the prefix to all\n * messages output.\n */\n constructor(prefixOrTrue) {\n super()\n this.prefix = prefixOrTrue === true ? \"debug\" : prefixOrTrue\n }\n\n /** Dumps hte contents of a {@link BufferedLogger} to this logger's output.\n *\n * @param {BufferedLogger} bufferedLogger - a logger with pent-up messages, waiting to be logged.\n */\n dump(bufferedLogger) {\n if (bufferedLogger instanceof BufferedLogger) {\n bufferedLogger.messages.forEach( (args) => {\n this.log(...args)\n })\n }\n }\n\n log(level,...args) {\n if (typeof(args[0]) === \"string\") {\n const message = `[prefix:${this.prefix}]:${args[0]}`\n console[level](message,...(args.slice(1)))\n }\n else {\n console[level](this.prefix,...args)\n }\n }\n}\nexport default Logger\n", "/** A wrapper around a string that provides useful utility functions\n * not present in the standard library.\n *\n * @example\n *\n * const string = RichString.fromString(element.textContent)\n * element.textContent = string.humanize().toString()\n */\nclass RichString {\n /** Prefer this over the constructor, as this will\n * wrap `possiblyDefinedStringOrRichString` only if necessary\n * as well as handle `null`.\n *\n * @param {null|undefined|String|RichString} possiblyDefinedStringOrRichString - if `null`, `undefined`, or otherwise falsey, this method returns `null`. If a String, returns a new `RichString` wrapping it. If a `RichString`, returns the `RichString` unchanged.\n */\n static fromString(possiblyDefinedStringOrRichString) {\n if (possiblyDefinedStringOrRichString instanceof RichString) {\n return possiblyDefinedStringOrRichString\n }\n if (!possiblyDefinedStringOrRichString) {\n return null\n }\n return new RichString(String(possiblyDefinedStringOrRichString))\n }\n\n /** Prefer `fromString` */\n constructor(string) {\n if (typeof string !== \"string\") {\n throw `You may only construct a RichString with a String, not a ${typeof string}`\n }\n this.string = string\n }\n\n /** Returns a `RichString` with the string capitalized. */\n capitalize() {\n return new RichString(this.string.charAt(0).toUpperCase() + this.string.slice(1))\n }\n\n /** Returns a `RichString` with the string un-capitalized. */\n decapitalize() {\n return new RichString(this.string.charAt(0).toLowerCase() + this.string.slice(1))\n }\n\n /** Returns a `RichString` with the string converted from snake or kebab case into camel case. */\n camelize() {\n // Taken from camelize npm module\n return RichString.fromString(this.string.replace(/[_.-](\\w|$)/g, function (_, x) {\n return x.toUpperCase()\n }))\n }\n\n /** Returns a 'humanized' `RichString`, which is basically a de-camelized version with the first letter\n * capitalized.\n */\n humanize() {\n return this.decamlize({spacer: \" \"}).capitalize()\n }\n\n /** Returns a `RichString` with the string converted from camel case to snake or kebab case.\n *\n * @param {Object} parameters\n * @param {string} parameters.spacer [\"_\"] - a string to use when joining words together.\n *\n */\n decamlize({spacer=\"_\"} = {}) {\n // Taken from decamelize NPM module\n\n // Checking the second character is done later on. Therefore process shorter strings here.\n if (this.string.length < 2) {\n return new RichString(this.string.toLowerCase())\n }\n\n const replacement = `$1${spacer}$2`\n\n // Split lowercase sequences followed by uppercase character.\n // `dataForUSACounties` \u2192 `data_For_USACounties`\n // `myURLstring \u2192 `my_URLstring`\n const decamelized = this.string.replace(\n /([\\p{Lowercase_Letter}\\d])(\\p{Uppercase_Letter})/gu,\n replacement,\n )\n\n // Split multiple uppercase characters followed by one or more lowercase characters.\n // `my_URLstring` \u2192 `my_ur_lstring`\n return new RichString(decamelized.\n replace(\n /(\\p{Uppercase_Letter})(\\p{Uppercase_Letter}\\p{Lowercase_Letter}+)/gu,\n replacement,\n ).\n toLowerCase()\n )\n }\n\n /** Return the underlying String value */\n toString() { return this.string }\n\n /** Return the underlying String value or null if the string is blank */\n toStringOrNull() {\n if (this.isBlank()) {\n return null\n }\n else {\n return this.string\n }\n }\n\n /* Returns true if this string has only whitespace in it */\n isBlank() {\n return this.string.trim() == \"\"\n }\n\n}\nexport default RichString\n", "import Logger from \"./Logger\"\nimport RichString from \"./RichString\"\n\n/** Base class for Custom Elements that provides a few quality-of-life enhancements.\n * \n * Custom elements that use this base class instead of `HTMLElement` get the following features:\n *\n * * `connectedCallback` and `attributeChangedCallback` call into a central `update` method where the \n * class can centralilize its logic\n * * Instead of implementing `attributeChangedCallback` and checking the name, per-attribute\n * callbacks can be implemented that are called when an observed attribute is changed. See {@link\n * attributeChangedCallback}.\n * * Support for defining the element by declaring a tag name\n * * Opt-in debugging support to allow verbose logging of mistaken use of the element that can be turned\n * off for production use.\n *\n * How to use this class:\n *\n * 1. Your custom element should extend this class via `extends BaseCustomElement`\n * 2. Create a static property called `tagName` that will be your element's tag name. Remember that all tag names must have a dash in them.\n * 3. Create a static property called `observedAttributes` that is an array of attribute names your element supports. This is part of the HTML spec and not specific to this base class.\n * 4. If you include the attribute `show-warnings` in your list of `observedAttributes`, you will have enhanced debugging abilities.\n * 5. For each attribute *other* than `show-warnings`, implement a callback to receive notifications on the attribute's changes. See {@link attributeChangedCallback} for more info.\n * 6. Implement `update` to execute whatever logic the component needs. `update` will be called multiple times and thus should be relatively idempotent. Specifically, it will be called after any attribute has changed, and it will be called as part of the standard `connectedCallback`.\n * 7. To use your component, call the static {@link define} method.\n *\n * Debugging\n *\n * Custom Elements have to work under a variety of degenerate cirucmstances. Further, if you are building \n * elements that wrap and enhance conventional elements, it can be easy to make a mistake, for example intending\n * to wrap a `FORM`, but wrapping only an `INPUT`.\n *\n * To help debug these situations, you are encouraged to use `this.logger.warn(...)` to emit warnings when\n * potentially incorrect use of your component is detected. By default, these warnings will not be shown. This\n * provides your users with a drama-free console. During development, however, you can add the `show-warnings`\n * attribute to your element. If that is set, warnings *are* shown in the console.\n *\n * `show-warnings` can be given a value, in which case that value if used to prefix all warnings the element emits.\n * This can be useful to know which use of an element is causing problems. If you don't give any value\n * to `show-warnings`, the element's `id` will be used as the prefix. If the element has no `id`, you will\n * still see warnings, but without a prefix. This could make it hard to know where the warnings are coming from.\n *\n * @example\n * // Replaces all span elements inside the component with\n * // an upper-cased value of the attribute 'some-attribute'\n * class MyComponent extends BaseCustomElement {\n * static tagName = \"my-component\"\n * static observedAttributes = [\n * \"show-warnings\",\n * \"some-attribute\",\n * ]\n *\n * someAttributeChangedCallback({newValue}) {\n * this.someAttribute = newValue ? newValue.toUpperCase() : null\n * }\n *\n * update() {\n * const spans = this.querySelectorAll(\"span\")\n * if (spans.length == 0) {\n * this.logger.warn(\"Did not find any <span> elements - element won't do anything\")\n * }\n * spans.forEach( (element) => {\n * element.textContent = this.someAttribute\n * })\n * }\n * }\n * docment.addEventListener(\"DOMContentLoaded\", () => {\n * MyComponent.define()\n * })\n *\n * // Then, in your HTML\n * <my-component some-attribute=\"hello there\">\n * <span></span>\n * <div></div>\n * <span></span>\n * </my-component>\n *\n * // The browser will effectively produce this HTML:\n * <my-component some-attribute=\"hello there\">\n * <span>HELLO THERE</span>\n * <div></div>\n * <span>HELLO THERE</span>\n * </my-component>\n *\n * // If JavaScript (or browser dev tools) changed some-attribute\n * // to be \"goodbye then\", the markup will change to look like so:\n * <my-component some-attribute=\"goodby then\">\n * <span>GOODBYE THEN</span>\n * <div></div>\n * <span>GOODBYE THEN</span>\n * </my-component>\n */\nclass BaseCustomElement extends HTMLElement {\n\n /** A {@link Logger} you can use to write warning messages. By default, these\n * messages are not shown in the console. If you put `show-warnings` as an attribute on your\n * element, warnings sent to this logger *are* shown.\n */\n logger = Logger.forPrefix(null)\n\n #_connectedCallbackCalled = false\n #_disconnectedCallbackCalled = false\n\n constructor() {\n super()\n this.logger = Logger.forPrefix(null)\n }\n\n /** You must call this to define the custom element. This is bascially\n * a wrapper around `customElements.define`. It is recommended that you call \n * this inside a `DOMContentLoaded` event, or after the page's HTML has been processed.\n * \n * @see external:CustomElementRegistry\n */\n static define() {\n if (!this.tagName) {\n throw `To use BaseCustomElement, you must define the static member tagName to return your custom tag's name`\n }\n customElements.define(this.tagName, this)\n }\n\n showWarningsChangedCallback({oldValue,newValue}) {\n let oldLogger\n if (!oldValue && newValue) {\n oldLogger = this.logger\n }\n let prefix = newValue == \"\" ? this.id : newValue\n if (!prefix) {\n prefix = \"UNKNOWN COMPONENT\"\n }\n this.logger = Logger.forPrefix(prefix)\n if (oldLogger) {\n this.logger.dump(oldLogger)\n }\n }\n\n /**\n * Overrides the standard callback to allow subclasses to have a slightly easier API when responding\n * to attribute changes. You can override this to use the custom element callback directly. Note that if\n * you do, `show-warnings` will not have any affect and you probably don't need to bother using\n * this class as your base class.\n *\n * This method will locate a per-attribute method and call that.\n * Attribute names are assumed to be in kebab-case and are translated to camelCase to create a method name.\n * That method is `\u00ABattributeInCamelCase\u00BBChangedCallback`, so if your attribute is `hex-code`,\n * a method named `hexCodeChangedCallback` in invoked. If no such method is defined, a\n * warning is logged in the console, regardless of the `show-warnings` attribute.\n *\n * The method is invoked with `{oldValue,newValue,newValueAsBoolean}` - i.e. an object and not positional parameters. This \n * means your implementation can omit any parameters it doesn't care about. `newValueAsBoolean` is not part of\n * the custom element spec, but is provided as an unambiguous way to know if a boolean attribute was set or not. This is\n * because if the value is set, it is likely to be the empty string, which is considered false by JavaScript. Cool.\n *\n * The return value of the method is ignored.\n *\n * After your method is called, if there is a method named `update`, it is called with no arguments.\n *\n * What this allows you to do is separate how you manage your element's attributes from how your logic\n * is managed. For complex elements that take a lot of attributes, this can simplify your element's code without straying too far from the spec.\n *\n * @example\n *\n * // If your element accepts the attribute `warning-message` that will be trimmed of whitespace\n * // then placed into all `H1` tags inside the element, you can manage that like so:\n * class MyElement extends BaseCustomElement {\n * static tagName = \"my-element\"\n * static observedAttributes = [\n * \"warning-message\",\n * ]\n *\n * // called by attributeChangedCallback when warning-message's value changes\n * warningMessageChangedCallback({newValue}) {\n * this.warningMessage = (newValue || \"\").trim()\n * }\n *\n * // called after attributeChangedCallback calls warningMessageChangedCallback\n * update() {\n * this.querySelectorAll(\"h1\").forEach( (e) => e.textContent = this.warningMessage )\n * }\n * }\n *\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements}\n *\n */\n attributeChangedCallback(name,oldValue,newValue) {\n const callbackName = `${new RichString(name).camelize()}ChangedCallback`\n if (this[callbackName]) {\n const newValueAsBoolean = newValue !== null\n this[callbackName]({oldValue,newValue,newValueAsBoolean})\n }\n else if (this.constructor.observedAttributes.indexOf(name) != -1) {\n console.warn(\"Observing %s but no method named %s was found to handle it\",name,callbackName)\n }\n this.__update()\n }\n \n /** Overrides the custom element callback to set internal flags allowing you to know if your\n * element has been disconnected. When an element is disconnected, `update` is not called.\n *\n * If you want to add your own logic during disconnection, override {@link onDisconnected}.\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements}\n */\n disconnectedCallback() {\n this.#_disconnectedCallbackCalled = true\n this.onDisconnected()\n }\n\n /** Override this to add logic when `disconnectedCallback` is called by the browser. This will\n * not be called if you overrode `disconnectedCallback`.\n */\n onDisconnected() {}\n\n /** Overrides the custom element callback to set internal flags allowing you to know if your\n * element has been connected. `update` is still called for elements that have not yet connected, however\n * in practice your element will be connected before any codepath that calls `update` is called.\n *\n * To add logic when your element is connected, override {@link onConnected}\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements}\n * @see BaseCustomElement#connectedCallbackCalled\n */\n connectedCallback() {\n this.#_connectedCallbackCalled = true\n this.onConnected()\n this.__update()\n }\n\n /** Override this to add logic when `connectedCallback` is called by the browser. This will\n * not be called if you overrode `connectedCallback`\n */\n onConnected() {}\n\n /** Returns true if this element is connected and the connected callback has been called.\n * This is different from `Node#isConnected`, which can return true before `connectedCallback` is called.\n */\n get connectedCallbackCalled() { return !!this.#_connectedCallbackCalled }\n\n /** Override this to perform whatever logic your element must perform.\n * Because changes to your element's attributes can happen at any time and in any order,\n * you will want to consolidate all logic into one method\u2014this one. You will also\n * want to make sure that this method is idempotent and fault-tolerant. It will be called multiple times.\n *\n * It is called by {@link BaseCustomElement#attributeChangedCallback|attributeChangedCallback} and {@link BaseCustomElement#connectedCallback|connectedCallback}, however\n * it will *not* be called after the elment has been disconnected.\n *\n * That means that any event listeners, rendering, content manipulation, or other behavior should happen hear\n * and it *must* be idempotent. In particular, any event listeners you attach must be done with care. Using\n * anonymous functions could result in duplicate listeners.\n */\n update() {}\n\n __update() {\n if (this.#_disconnectedCallbackCalled) {\n return\n }\n this.update()\n }\n}\nexport default BaseCustomElement\n", "import BaseCustomElement from \"./BaseCustomElement\"\n\n/** Manages a translation based on a key and value, with the value potentially having interpolation.\n *\n * This is intended to be server-rendered with the subset of keys the server manages that are relevant\n * to the front-end. Any other code on the page can then locate an element with the desired key and\n * call `translation` to get the human-readable key. It is assumed that the server would render\n * in the language required by the visitor, so there is no need to first select by locale.\n *\n * @property {string} key - an i18n key, presumably dot-delimited, however it can be any valid attribute value.\n * @property {string} value - the value of the key, in the browser's locale. It may contain placeholders for interpolation using `%{\u00ABplaceholder\u00BB}` syntax.\n *\n * @example\n * <brut-i18n-translation key=\"greeting\" value=\"Hello %{username}\"></brut-i18n-translation>\n */\nclass I18nTranslation extends BaseCustomElement {\n static tagName = \"brut-i18n-translation\"\n\n static observedAttributes = [\n \"show-warnings\",\n \"key\",\n \"value\",\n ]\n\n #key = null\n #value = \"\"\n\n keyChangedCallback({newValue}) {\n this.#key = newValue\n }\n\n valueChangedCallback({newValue}) {\n this.#value = newValue ? String(newValue) : \"\"\n }\n\n /**\n * Called by other JavaScript to get the translated string.\n * @param {Object} interpolatedValues - Object where the keys are placeholders in the string for interpolation and the values are\n * the values to replace. Placeholders not in the translated value are ignored. Missing placeholders won't cause an error, but the\n * placeholder will be present verbatim in the translated string.\n *\n * @example\n * const element = document.querySeletor(\"brut-i18n-translation[key='greeting']\")\n * if (element) {\n * const translation = element.translation({ username: \"Pat\" })\n * alert(translation) // Shows 'Hello Pat'\n * }\n */\n translation(interpolatedValues) {\n return this.#value.replaceAll(/%\\{([^}%]+)\\}/g, (match,key) => {\n if (interpolatedValues[key]) {\n return interpolatedValues[key]\n }\n return match\n })\n }\n\n}\nexport default I18nTranslation\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\nimport I18nTranslation from \"./I18nTranslation\"\n\n/** Like {@link Message} but specific to constraint violations of input fields. This accepts the name\n * of an input field via `input-name`, which can be used to locate the field's localized name.\n *\n * Here is how the field's name is determined:\n *\n * 1. It will look for a `<brut-i18n-translation>` element with the `key` `cv.fe.fieldNames.\u00ABinput-name\u00BB`.\n * 2. If that's not found, it will attempt to use \"this field\" by locating a `<brut-i18n-translation>` element with the `key`\n * `cv.this_field` (the underscore being what is used on Brut's server side).\n * 3. If that is not found, it will use the literaly string \"this field\" and emit a console warning.\n *\n * @property {string} key - the i18n translation key to use. It must map to the `key` of a `<brut-i18n-translation>` on the page or\n * the element will not render any text.\n * @property {string} input-name - the name of the input, used to insert into the message, e.g. \"Title is required\".\n * @property {boolean} server-side if true, this indicates the element contains constraint violation messages\n * from the server. Currently doesn't affect this element's behavior, however\n * AjaxSubmit will use it to locate where it should insert server-side errors.\n *\n * @see I18nTranslation\n * @see ConstraintViolationMessages\n * @see Message\n */\nclass ConstraintViolationMessage extends BaseCustomElement {\n static tagName = \"brut-cv\"\n\n static observedAttributes = [\n \"show-warnings\",\n \"key\",\n \"input-name\",\n \"server-side\",\n ]\n\n static createElement(document,attributes) {\n const element = document.createElement(ConstraintViolationMessage.tagName)\n element.setAttribute(\"key\",this.i18nKey(\"fe\", attributes.key))\n element.setAttribute(\"input-name\",attributes[\"input-name\"])\n if (Object.hasOwn(attributes,\"show-warnings\")) {\n element.setAttribute(\"show-warnings\",attributes[\"show-warnings\"])\n }\n return element\n }\n\n static markServerSide(element) {\n if (element.tagName.toLowerCase() == this.tagName) {\n element.setAttribute(\"server-side\", true)\n }\n }\n\n static clientSideSelector() {\n return `${this.tagName}:not([server-side])`\n }\n\n static serverSideSelector() {\n return `${this.tagName}[server-side]`\n }\n\n /** Returns the I18N key used for front-end constraint violations. This is useful\n * if you need to construct a key and want to follow Brut's conventions on how they\n * are managed.\n *\n * @param {...String} keyPath - parts of the path of the key after the namespace that Brut manages.\n */\n static i18nKey(...keyPath) {\n const path = [ \"cv\" ]\n return path.concat(keyPath).join(\".\")\n }\n\n #key = null\n #inputNameKey = null\n #thisFieldKey = this.#i18nKey(\"this_field\")\n\n keyChangedCallback({newValue}) {\n this.#key = newValue\n }\n\n inputNameChangedCallback({newValue}) {\n this.#inputNameKey = this.#i18nKey(\"fe\", \"fieldNames\", newValue)\n }\n\n serverSideChangedCallback({newValueAsBoolean}) {\n // attribute listed for documentation purposes only\n }\n\n update() {\n if (!this.#key) {\n this.logger.info(\"No key attribute, so can't do anything\")\n return\n }\n\n const selector = `${I18nTranslation.tagName}[key='${this.#key}']`\n const translation = document.querySelector(selector)\n if (!translation) {\n this.logger.info(\"Could not find translation based on selector '%s'\",selector)\n return\n }\n\n const fieldNameSelector = `${I18nTranslation.tagName}[key='${this.#inputNameKey}']`\n const thisFieldSelector = `${I18nTranslation.tagName}[key='${this.#thisFieldKey}']`\n\n let fieldNameTranslation = document.querySelector(fieldNameSelector)\n if (!fieldNameTranslation) {\n this.logger.info(\"Could not find translation for input/field name based on selector '%s'. Will try 'this field' fallback\",fieldNameSelector)\n fieldNameTranslation = document.querySelector(thisFieldSelector)\n if (!fieldNameTranslation) {\n this.logger.info(\"Could not find translation for 'this field' fallback key, based on selector '%s'\",thisFieldSelector)\n }\n }\n\n const fieldName = fieldNameTranslation ? fieldNameTranslation.translation() : \"this field\"\n this.textContent = RichString.fromString(translation.translation({ field: fieldName })).capitalize().toString()\n }\n\n /** Helper that calls the static version */\n #i18nKey(...keyPath) {\n return this.constructor.i18nKey(...keyPath)\n }\n\n\n}\nexport default ConstraintViolationMessage\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\nimport ConstraintViolationMessage from \"./ConstraintViolationMessage\"\n\n/**\n * Custom element to translate keys from {@link external:ValidityState} into \n * actual messges for a human. This works by inserting `<brut-cv>` elements\n * as children, where the key represents the particular errors present in the `ValidityState` passed\n * to `createMessages`. Note that this will not insert an element for `customError`, since there can't be\n * any sort of general error message to correspond to that.\n *\n * @property {string} input-name if set, this indicates this element contains constraint violation messages\n * for the input with this name inside the form this element is in. Currently doesn't affect\n * this element's behavior, however AjaxSubmit will use it to locate where it \n * should insert server-side errors.\n *\n * @see Form\n * @see ConstraintViolationMessage\n * @see AjaxSubmit\n */\nclass ConstraintViolationMessages extends BaseCustomElement {\n static tagName = \"brut-cv-messages\"\n\n static observedAttributes = [\n \"show-warnings\",\n \"input-name\",\n ]\n\n inputNameChangedCallback({newValue}) {\n // attribute listed for documentation purposes only\n }\n\n /** \n * Creates error messages based on the passed `ValidityState` and input name.\n *\n * This should be called as part of a Form validation event to provide a customized UX for\n * the error messages, beyond what the browser would do by default. The keys used are the same\n * as the attributes of a `ValidityState`, so for example, a range underflow would mean that `validity.rangeUnderflow` would return\n * true. Thus, a `<brut-cv>` would be created with `key=\"cv.fe.rangeUnderflow\"`.\n *\n * The `cv.fe` is hard-coded to be consistent with Brut's server-side translation management.\n *\n * @param {ValidityState} validityState - the return from an element's `validity` when it's found to have constraint violations.\n * @param {String} inputName - the element's `name`.\n */\n createMessages({validityState,inputName}) {\n const errors = this.#VALIDITY_STATE_ATTRIBUTES.filter( (attribute) => validityState[attribute] )\n this.clearClientSideMessages()\n errors.forEach( (key) => {\n const options = {\n key: key,\n \"input-name\": inputName,\n }\n const showWarnings = this.getAttribute(\"show-warnings\")\n if (showWarnings != null) {\n options[\"show-warnings\"] = showWarnings\n }\n const element = ConstraintViolationMessage.createElement(document,options)\n this.appendChild(element)\n })\n }\n\n /**\n * Clear any client-side messages previously inserted by another element.\n * This is useful to remove potentially out-of-date messages to replace with up-to-date ones.\n */\n clearClientSideMessages() {\n this.querySelectorAll(ConstraintViolationMessage.clientSideSelector()).forEach( (element) => {\n this.removeChild(element)\n })\n }\n\n /**\n * Clear any server-side messages previously inserted by another element or rendered from the server.\n * This is useful to remove potentially out-of-date messages to replace with up-to-date ones.\n */\n clearServerSideMessages() {\n this.querySelectorAll(ConstraintViolationMessage.serverSideSelector()).forEach( (element) => {\n this.removeChild(element)\n })\n }\n\n #VALIDITY_STATE_ATTRIBUTES = [\n \"badInput\",\n \"patternMismatch\",\n \"rangeOverflow\",\n \"rangeUnderflow\",\n \"stepMismatch\",\n \"tooLong\",\n \"tooShort\",\n \"typeMismatch\",\n \"valueMissing\",\n // customError omitted, since it makes no sense as a general error key to look up\n ]\n}\nexport default ConstraintViolationMessages\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport ConstraintViolationMessages from \"./ConstraintViolationMessages\"\nimport ConstraintViolationMessage from \"./ConstraintViolationMessage\"\n\n/** Wraps a `<BUTTON>` assumed to be inside a form to indicate that, when clicked, it should submit\n * the form it's a part of via AJAX. It accounts for network failures and timeouts.\n * \n * The general flow is as follows:\n *\n * 1. When the button is clicked, the form's validity is checked. If it's not valid, nothing happens.\n * 2. If the form is valid, this element will be given the `requesting` attribute.\n * 3. The request will be initiated, set to abort after `request-timeout` ms (see below).\n * 4. If the request returns OK:\n * - `requesting` will be removed and `submitted` will be added.\n * - `submitted` will be removed after `submitted-lifetime` ms.\n * 5. If the request returned a 422, error messages are parsed. See below.\n * 6. If the request returns not OK and not 422:\n * - if it has been `request-timeout` ms or more since the button was first clicked, the operation is aborted (see below).\n * - if it has been less than `request-timeout` ms and the HTTP status code was 5xx, the operation is retried.\n * - otherwise, the operation is aborted.\n * 7. If fetch throws an error, the operation is aborted.\n *\n * Aborting the operation will submit the form in the normal way, allowing the browser to deal with whatever the issue is. You can set\n * `log-request-errors` to introspect this process.\n *\n * For a 422 response, this element assumes the response is `text/html` and contains one or more `<brut-cv>`\n * elements. These elements will be inserted into the proper `<brut-cv-messages>` element, as follows:\n *\n * 1. The `input-name` is examined.\n * 2. A `<brut-cv-messages input-name=\"\u00ABinput-name\u00BB\">` is located\n * 3. The containing form is located\n * 4. The input element(s) are located inside that form, based on `input-name`.\n * 5. The `<brut-cv-messages>` are cleared of any element with attribute `server-side`\n * 6. The messages from the server are inserted, with the attribute `server-side` added if it's not there.\n * 7. The input is set as having a custom validity\n * 8. validity is reported\n * 9. The first input located is scrolled into view\n * 10. If the input is modified after this all happens, custom validity is cleared\n *\n * @property {number} request-timeout - number of ms that the entire operation is expected to complete within. Default is 5000\n * @property {number} submitted-lifetime - number of ms that \"submitted\" should remain on the element after the form has completed. Default is 2000\n * @property {boolean} requesting - boolean attribute that indicates the request has been made, but not yet returned. Don't set this yourself outside of development. It will be set and removed by this element.\n * @property {boolean} submitted - boolean attribute that indicates the form has been successfully submitted. Don't set this yourselr outside of develoment. It will be set and removed by this element.\n * @property {boolean} log-request-errors - if set, logging related to request error handling will appear in the console. It will also\n * cause any form submission to be delayed by 2s to allow you to read the console.\n *\n * @fires brut:submitok Fired when the AJAX request initated by this returns OK and all processing has completed\n * @fires brut:submitinvalid Fired when the AJAX request initated by this returns a 422 and all logic around managing the reponse has completed\n *\n * @example\n * <form action=\"/widgets\" method=\"post\">\n * <input type=text name=name>\n *\n * <brut-ajax-submit>\n * <button>Save</button>\n* </brut-ajax-submit>\n * </form>\n */\nclass AjaxSubmit extends BaseCustomElement {\n static tagName = \"brut-ajax-submit\"\n static observedAttributes = [\n \"show-warnings\",\n \"requesting\",\n \"submitted\",\n \"submitted-lifetime\",\n \"request-timeout\",\n \"max-retry-attempts\",\n \"log-request-errors\",\n ]\n\n #requestErrorLogger = () => {}\n #formSubmitDelay = 0\n #submittedLifetime = 2000\n #requestTimeout = 5000\n #maxRetryAttempts = 25\n\n submittedLifetimeChangedCallback({newValue}) {\n const newValueAsInt = parseInt(newValue)\n if (isNaN(newValueAsInt)) {\n throw `submitted-lifetime must be a number, not '${newValue}'`\n }\n this.#submittedLifetime = newValueAsInt\n }\n\n maxRetryAttemptsChangedCallback({newValue}) {\n const num = parseInt(newValue)\n if (isNaN(num)) {\n this.logger.warn(`max-retry-attempts '${newValue}' is not a number. Using 1 as a fallback`)\n this.#maxRetryAttempts = 1\n }\n else {\n this.#maxRetryAttempts = num\n }\n }\n\n requestTimeoutChangedCallback({newValue}) {\n const newValueAsInt = parseInt(newValue)\n if (isNaN(newValueAsInt)) {\n throw `request-timeout must be a number, not '${newValue}'`\n }\n this.#requestTimeout = newValueAsInt\n }\n\n submittedChangedCallback({newValueAsBoolean}) {\n // no op\n }\n\n requestingChangedCallback({newValueAsBoolean}) {\n if (this.#button()) {\n if (newValueAsBoolean) {\n this.#button().setAttribute(\"disabled\",true)\n }\n else {\n this.#button().removeAttribute(\"disabled\",true)\n }\n }\n }\n\n logRequestErrorsChangedCallback({newValueAsBoolean}) {\n if (newValueAsBoolean) {\n this.#requestErrorLogger = console.warn\n this.#formSubmitDelay = 2000\n }\n else {\n this.#requestErrorLogger = () => {}\n this.#formSubmitDelay = 0\n }\n }\n\n update() {\n const button = this.#button()\n if (!button)\n {\n this.logger.info(\"Could not find a <button> to attach behavior to\")\n return\n }\n const form = button.form\n if (!form) {\n this.logger.info(\"%o did not have a form associated with it - cannot attach behavior\",button)\n return\n }\n button.form.addEventListener(\"submit\",this.#formSubmitted)\n }\n\n\n #formSubmitted = (event) => {\n const submitter = event.submitter\n if (submitter == this.#button()) {\n event.preventDefault()\n const now = Date.now()\n this.#submitForm(event.target, now, 0)\n }\n }\n\n #submitForm(form, firstSubmittedAt, numAttempts) {\n\n const headers = new Headers()\n headers.append(\"X-Requested-With\",\"XMLHttpRequest\")\n headers.append(\"Content-Type\",\"application/x-www-form-urlencoded\")\n\n const formData = new FormData(form)\n const urlSearchParams = new URLSearchParams(formData)\n\n const timeoutSignal = AbortSignal.timeout(this.#requestTimeout)\n\n const request = new Request(\n form.action,\n {\n headers: headers,\n method: form.method,\n body: urlSearchParams,\n signal: timeoutSignal,\n }\n )\n\n if (numAttempts > this.#maxRetryAttempts) {\n this.#requestErrorLogger(\"%d attempts. Giving up\",numAttempts)\n this.#submitFormThroughBrowser(form)\n return\n }\n this.setAttribute(\"requesting\", true)\n fetch(request).then( (response) => {\n if (response.ok) {\n this.removeAttribute(\"requesting\")\n this.setAttribute(\"submitted\",true)\n\n setTimeout( () => this.removeAttribute(\"submitted\"), this.#submittedLifetime )\n this.dispatchEvent(new CustomEvent(\"brut:submitok\"))\n }\n else {\n\n let retry = false // if true, we retry the request via ajax\n let resubmit = false // if true, and we aren't retrying, we submit the\n // form the old fashioned way\n\n if ( (Date.now() - firstSubmittedAt) > this.#requestTimeout) {\n this.#requestErrorLogger(\"Since initial button press %d, it's taken more than %d ms to get a response.\",firstSubmittedAt,this.#requestTimeout)\n retry = false\n resubmit = true\n }\n else {\n const status = parseInt(response.status)\n if (isNaN(status)) {\n this.#requestErrorLogger(\"Got unparseable status: %d\",response.status)\n retry = false\n }\n else if (status >= 500) {\n this.#requestErrorLogger(\"Got a %d, maybe retry will fix\", status)\n retry = true\n }\n else {\n retry = false\n if (status == 422) {\n this.#handleConstraintViolations(response)\n }\n }\n }\n if (retry) {\n this.#requestErrorLogger(\"Trying again (attempt %d)\",numAttempts +1)\n setTimeout( () => this.#submitForm(form, firstSubmittedAt, numAttempts + 1), numAttempts * 10)\n }\n else if (resubmit) {\n this.#requestErrorLogger(\"'retry' was marked false, but resubmit is 'true', so submitting through browser\")\n this.#submitFormThroughBrowser(form)\n this.removeAttribute(\"requesting\")\n }\n }\n }).catch( (error) => {\n this.#requestErrorLogger(\"Got %o, which cannot be retried\",error)\n this.#submitFormThroughBrowser(form)\n })\n }\n\n #button = () => { return this.querySelector(\"button\") }\n\n #submitFormThroughBrowser(form) {\n form.removeEventListener(\"submit\",this.#formSubmitted)\n if (this.#formSubmitDelay > 0) {\n console.log(\"Form submission has been delayed by %d ms in order to allow examining the log\",this.#formSubmitDelay)\n setTimeout( () => form.requestSubmit(this.#button()), this.#formSubmitDelay)\n }\n else {\n form.requestSubmit(this.#button())\n }\n\n }\n\n #handleConstraintViolations(response) {\n let resubmit = false\n response.text().then( (text) => {\n try {\n const inputsToMessages = ErrorMessagesForInput.mapInputsToErrorMessages(\n this.#errorMessagesFromServer(text),\n this.#requestErrorLogger\n )\n\n let inputToScrollToAfterReportingValidity\n for (const [inputName, {input, messagesElement, errorMessages}] of Object.entries(inputsToMessages)) {\n if (!inputToScrollToAfterReportingValidity) {\n inputToScrollToAfterReportingValidity = input\n }\n messagesElement.clearServerSideMessages()\n errorMessages.forEach( (element) => {\n ConstraintViolationMessage.markServerSide(element)\n messagesElement.appendChild(element) \n })\n this.#setCustomValidityThatClearsOnChange(input,errorMessages)\n }\n\n if (inputToScrollToAfterReportingValidity) {\n inputToScrollToAfterReportingValidity.scrollIntoView()\n }\n resubmit = false\n this.removeAttribute(\"requesting\")\n this.dispatchEvent(new CustomEvent(\"brut:submitinvalid\"))\n }\n catch (e) {\n this.#requestErrorLogger(\"While parsing %s, got %s\", text, e)\n resubmit = true\n }\n if (resubmit) {\n this.#submitFormThroughBrowser(form)\n }\n })\n }\n\n #errorMessagesFromServer(text) {\n const parser = new DOMParser()\n const fragment = parser.parseFromString(text,\"text/html\")\n\n return fragment.querySelectorAll(ConstraintViolationMessage.tagName)\n }\n\n #setCustomValidityThatClearsOnChange(input,errorMessages) {\n input.setCustomValidity(errorMessages[0].textContent)\n input.reportValidity()\n input.addEventListener(\"change\", () => input.setCustomValidity(\"\") )\n }\n}\n\nclass ErrorMessagesForInput {\n static mapInputsToErrorMessages(errorMessages,requestErrorLogger) {\n const errorMessagesForInputs = Array.from(errorMessages).map( (element) => {\n return new ErrorMessagesForInput({\n element: element,\n inputName: element.getAttribute(\"input-name\"),\n document: document,\n })\n })\n\n const inputsToMessages = {}\n\n errorMessagesForInputs.forEach( (errorMessagesForInput) => {\n if (errorMessagesForInput.allElementsFound()) {\n\n if (!inputsToMessages[errorMessagesForInput.inputName]) {\n inputsToMessages[errorMessagesForInput.inputName] = {\n input: errorMessagesForInput.input,\n messagesElement: errorMessagesForInput.messagesElement,\n errorMessages: []\n }\n }\n\n inputsToMessages[errorMessagesForInput.inputName].errorMessages.push(\n errorMessagesForInput.element\n )\n }\n else {\n requestErrorLogger(\n \"Server message %o could not be shown to the user: %s\",\n errorMessagesForInput.element,\n errorMessagesForInput.reasonNotAllElementsFound()\n )\n }\n })\n\n return inputsToMessages\n }\n\n constructor({element,inputName,document}) {\n this.element = element\n this.inputName = inputName\n\n if (this.inputName) {\n const selector = `${ConstraintViolationMessages.tagName}[input-name='${this.inputName}']`\n this.messagesElement = document.querySelector(selector)\n if (this.messagesElement) {\n this.closestForm = this.messagesElement.closest(\"form\")\n }\n if (this.inputName && this.closestForm) {\n this.input = this.closestForm.elements.namedItem(this.inputName)\n }\n }\n }\n\n allElementsFound() {\n return !!this.input\n }\n\n reasonNotAllElementsFound() {\n let reason\n if (this.inputName) {\n if (this.messagesElement) {\n if (this.closestForm) {\n reason = `Form did not contain an input named ${this.inputName}`\n }\n else {\n reason = `Could not find a form that contained the ${ConstraintViolationMessages.tagName} element` \n }\n }\n else {\n reason = `Could not find a ${ConstraintViolationMessages.tagName} element for ${this.inputName}`\n }\n }\n else {\n reason = \"server message was missing an input-name\"\n }\n return reason\n }\n}\n\nexport default AjaxSubmit\n", "import BaseCustomElement from \"./BaseCustomElement\"\n\n/** When the value of the wrapped form element(s) fire(s) a change event, the form is submitted.\n * This will only work if it is inside a form *and* the form elements it contains are part of the form.\n * That means if your input/textarea/select uses the `form` attribute, this custom element has no effect.\n *\n * @example\n *\n * <form>\n * <brut-autosubmit>\n * <!-- when a selection is made, the form is submitted -->\n * <select name=\"status\">\n * <option value=\"draft\">Draft</option>\n * <option value=\"ready\">Ready</option>\n * <option value=\"published\">Published</option>\n * </select>\n * </brut-autosubmit>\n * <!-- when the value is changed, form is NOT submitted -->\n * <input type=\"text\" value=\"notes\">\n * <button>Save</button>\n * </form>\n */\nclass Autosubmit extends BaseCustomElement {\n static tagName = \"brut-autosubmit\"\n\n static observedAttributes = [\n \"show-warnings\",\n ]\n\n #submitForm = (event) => {\n const form = this.closest(\"form\")\n if (!form) {\n this.logger.info(\"No longer a form containing this element\")\n return\n }\n if (event.target.form != form) {\n this.logger.info(\"Event target %o's form is not the form that contains this element\",event.target)\n return\n }\n form.requestSubmit()\n }\n\n update() {\n const form = this.closest(\"form\")\n if (!form) {\n this.logger.info(\"No form containing this element - nothing to autosubmit\")\n return\n }\n const inputs = Array.from(this.querySelectorAll(\"input, textarea, select\")).filter( (element) => {\n return element.form == form\n })\n if (inputs.length == 0) {\n this.logger.info(\"No input, textarea, or select inside this element belongs to the form containing this element\")\n return\n }\n inputs.forEach( (input) => {\n input.addEventListener(\"change\", this.#submitForm)\n })\n }\n}\nexport default Autosubmit\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\n\n/**\n * Enhances a `DIALOG` element to allow it to be used for confirmation. Mostly useful\n * with {@link Confirm}.\n *\n * This element must:\n *\n * * Wrap a `<DIALOG>` element\n * * Contain an `<H1>` where the message will go\n * * Have a `<BUTTON>` with value `ok` that will be considered the confirmation button.\n * * Have a `<BUTTON>` with value `cancel` that will be considered the denial button.\n *\n * Omitting these will cause this element to not work properly. Set `show-warnings` to see\n * warnings on this.\n *\n * @property {string} message - the message to use to ask for confirmation\n * @property {string} confirm-label - the label to use for the \"OK\" or \"Confirm\" button\n *\n * @example <caption>Minimal Example</caption>\n * <brut-confirmation-dialog message=\"This cannot be undone\" confirm-label=\"DOIT\">\n * <dialog>\n * <h1></h1>\n * <button value=\"ok\"></button>\n * <button value=\"cancel\">Nevermind</button>\n * </dialog>\n * </brut-confirmation-dialog>\n */\nclass ConfirmationDialog extends BaseCustomElement {\n static tagName = \"brut-confirmation-dialog\"\n static observedAttributes = [\n \"message\",\n \"confirm-label\",\n \"show-warnings\"\n ]\n\n #onClose = () => {}\n #message = new RichString(\"\")\n #confirmLabel = new RichString(\"OK\")\n\n constructor() {\n super()\n this.okListener = (event) => {\n this.#closeDialog()\n this.#onClose(true)\n }\n this.cancelListener = (event) => {\n this.#closeDialog()\n this.#onClose(false)\n }\n }\n\n messageChangedCallback({newValue}) {\n this.#message = RichString.fromString(newValue)\n }\n\n confirmLabelChangedCallback({newValue}) {\n this.#confirmLabel = RichString.fromString(newValue)\n }\n\n /**\n * Call this to show the dialog. When the dialog is closed, `onClose` is called with the result.\n *\n * @param {function} onClose - a function called with either `true` or `false`, if the dialog was confirmed or \n * denied, respectively.\n *\n * @example\n * dialog.showModal( (confirmed) => {\n * if (confirmed) {\n * form.submit()\n * }\n * else {\n * // do nothing\n * }\n * })\n */\n showModal(onClose) {\n const dialog = this.#dialog\n if (dialog) {\n this.#onClose = onClose || (() => {})\n dialog.showModal()\n }\n else {\n this.logger.warn(\"No <dialog> found to show\")\n }\n }\n\n get #dialog() {\n return this.querySelector(\"dialog\")\n }\n\n #closeDialog() {\n const dialog = this.#dialog\n if (dialog) {\n dialog.close()\n }\n }\n\n update() {\n const dialog = this.#dialog\n if (!dialog) {\n this.logger.warn(\"Could not find a <dialog> - this custom element won't do anything\")\n return\n }\n this.#setMessage(dialog)\n this.#setupButtons()\n }\n\n #setMessage(dialog) {\n const h1 = dialog.querySelector(\"h1\")\n if (h1) {\n if (this.#message.isBlank()) {\n h1.textContent = null\n }\n else {\n h1.textContent = this.#message.toString()\n }\n }\n else {\n this.logger.warn(\"Dialog had no <h1>, so nowhere to put the message\")\n }\n }\n\n #setupButtons() {\n const okButton = this.querySelector(\"button[value='ok']\")\n const cancelButton = this.querySelector(\"button[value='cancel']\")\n\n if (!okButton || !cancelButton) {\n if (!okButton) { this.logger.warn(\"no <button value='ok'> which is required for this dialog to work\") }\n if (!cancelButton) { this.logger.warn(\"no <button value='cancel'> which is required for this dialog to work\") }\n return\n }\n\n okButton.textContent = this.#confirmLabel\n\n okButton.addEventListener(\"click\" , this.okListener)\n cancelButton.addEventListener(\"click\" , this.cancelListener)\n }\n}\nexport default ConfirmationDialog\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\nimport ConfirmationDialog from \"./ConfirmationDialog\"\n\n/** Confirms form submissions with the user before allowing the form to be submitted. This can be applied per submit\n * button and only affects the behavior of `button` or `input type=submit`, and *only* if no other click handler\n * has been put onto those buttons. Note that this does not affect links (`a` elements).\n *\n * This can ask for confirmation with {@link external:Window#confirm} or a\n * `brut-confirmation-dialog`. What it will use depends on several factors, all of which\n * are geared toward doing the right thing. Note that setting `show-warnings` will elucidate the reasons\n * this component does what it does.\n *\n * * If `dialog` is set:\n * - If that id is on a `<brut-confirmation-dialog>` that is used.\n * - If not, `window.confirm` is used.\n * * If `dialog` is not set:\n * - If there is exactly one `<brut-confirmation-dialog>` on the page, this is used.\n * - If there is more than one, or no `<brut-confirmation-dialog>`s, `window.confirm` is used.\n *\n * @see ConfirmationDialog\n *\n * @property {string} message - the message to show that asks for confirmation. It should be written such that\n * \"OK\" is grammatically correct for confirmation and \"Cancel\" is for aborting.\n * @property {string} dialog - optional ID of the `brut-confirmation-dialog` to use instead of `window.confirm`.\n * If there is no such dialog or the id references the wrong element type,\n * `window.confirm` will be used. Setting `show-warnings` will generate a warning for this.\n */\nclass ConfirmSubmit extends BaseCustomElement {\n static tagName = \"brut-confirm-submit\"\n\n static observedAttributes = [\n \"message\",\n \"dialog\",\n \"show-warnings\",\n ]\n\n #message = new RichString(\"\")\n #confirming = false\n #dialogId = null\n\n messageChangedCallback({newValue}) {\n this.#message = new RichString(newValue || \"\")\n }\n\n dialogChangedCallback({newValue}) {\n this.#dialogId = RichString.fromString(newValue)\n }\n\n constructor() {\n super()\n this.onClick = (event) => {\n if (this.#confirming) {\n this.#confirming = false\n return\n }\n if (this.#message.isBlank()) {\n this.logger.warn(\"No message provided, so cannot confirm\")\n return\n }\n const dialog = this.#findDialog()\n if (dialog) {\n event.preventDefault()\n dialog.setAttribute(\"message\",this.#message.toString())\n const buttonLabel = event.target.getAttribute(\"aria-label\") || event.target.textContent\n dialog.setAttribute(\"confirm-label\",buttonLabel)\n this.#confirming = true\n dialog.showModal((confirm) => {\n if (confirm) {\n event.target.click()\n }\n else {\n this.#confirming = false\n }\n })\n }\n else {\n const result = window.confirm(this.#message)\n if (!result) {\n event.preventDefault()\n }\n }\n }\n }\n\n #findDialog() {\n if (this.#dialogId) {\n const dialog = document.getElementById(this.#dialogId)\n if (dialog) {\n if (dialog.tagName.toLowerCase() != ConfirmationDialog.tagName) {\n throw `${this.#dialogId} is the id of a '${dialog.tagName}', not '${ConfirmationDialog.tagName}'`\n }\n return dialog\n }\n this.logger.warn(`No dialog with id ${this.#dialogId} - using window.confirm as a fallback`)\n return null\n }\n const dialogs = document.querySelectorAll(ConfirmationDialog.tagName)\n if (dialogs.length == 1) {\n return dialogs[0]\n }\n if (dialogs.length == 0) {\n this.logger.warn(`No '${ConfirmationDialog.tagName}' found in document - using window.confirm as a fallback`)\n return null\n }\n throw `Found ${dialogs.length} '${ConfirmationDialog.tagName}' elements. Not sure which to use. Remove all but one or specify the 'dialog' attribute on this element to specify which one to use`\n }\n\n update() {\n this.querySelectorAll(\"button\").forEach( (button) => button.addEventListener(\"click\", this.onClick) )\n this.querySelectorAll(\"input[type=submit]\").forEach( (button) => button.addEventListener(\"click\", this.onClick) )\n }\n}\nexport default ConfirmSubmit\n", "import BaseCustomElement from \"./BaseCustomElement\"\n\n/** Wraps a `<BUTTON>` that will copy text from another element into the system clipboard. It will set various attributes on itself\n * to allow styling the states of the process.\n *\n * Overall, the flow is as follows:\n *\n * 1. When the button is clicked, its default is prevented, and the element with the id of the `element` attribute is located.\n * 2. If found, this element gets the `copying` attribute set.\n * 3. If the copy completes successfully:\n * a. `copying` is removed\n * b. `copied` is set\n * c. `copied` is scheduled for removal in 2000ms or the number of milliseconds in the `copied-lifetime` attribute.\n * 4. If the copy failed:\n * a. `copying` is removed\n * b. `errored` is set\n * c. The `brut:copyfailed` event is fired. It's detail contains a `text:` value with the text that was attempted to be copied.\n *\n * The intention is to use these attributes to style whatever UX you want.\n *\n * @property {string} element - ID of the element whose `textContent` is what will be copied to the clipboard.\n * @property {number} copied-lifetime - number of milliseconds to wait before clearing the `copied` attribute after a successful copy.\n * @property {boolean} copying - Set after a copy is initiated, but before it completes\n * @property {boolean} copied - Set after a copy is completed successfully\n * @property {boolean} errored - Set after a copy is fails\n *\n * @fires brut:copyfailed Fired when the copy fails to complete\n *\n * @example\n * <pre><code id=\"code\">dx/exec bin/setup</code></pre>\n * <brut-copy-to-clipboard element=\"code\">\n * <button>Copy</button>\n * </brut-copy-to-clipboard>\n */\nclass CopyToClipboard extends BaseCustomElement {\n static tagName = \"brut-copy-to-clipboard\"\n\n static observedAttributes = [\n \"element\",\n \"copied-lifetime\",\n ]\n\n #elementId = null\n #copiedLifetime = 2000\n\n #copyCode = (event) => {\n event.preventDefault()\n\n const element = document.getElementById(this.#elementId)\n\n if (!element) {\n this.logger.info(\"No element with id %s, so nothing to copy\",this.#elementId)\n return\n }\n this.setAttribute(\"copying\",true)\n\n const text = element.textContent\n\n navigator.clipboard.writeText(text).then( () => {\n this.setAttribute(\"copied\", true)\n }).catch( (e) => {\n this.setAttribute(\"errored\", true)\n this.dispatchEvent(new CustomEvent(\"brut:copyfailed\", { detail: { text: text }}))\n }).finally( () => {\n this.removeAttribute(\"copying\")\n setTimeout( () => this.removeAttribute(\"copied\"), 2000)\n })\n }\n\n update() {\n const button = this.querySelector(\"button\")\n if (button) {\n button.addEventListener(\"click\", this.#copyCode)\n }\n else {\n this.logger.info(\"There is no button, so no way to initiate a copy\")\n }\n }\n\n elementChangedCallback({newValue}) {\n this.#elementId = newValue\n }\n\n copiedLifetimeChangedCallback({newValue}) {\n const newValueAsInt = parseInt(newValue)\n if (!isNaN(newValueAsInt)) {\n this.#copiedLifetime = newValueAsInt\n }\n else {\n this.logger.info(\"Value '%s' for copied-lifetime is not a number. Ignoring it\",newValue)\n }\n }\n}\nexport default CopyToClipboard\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\nimport AjaxSubmit from \"./AjaxSubmit\"\nimport ConstraintViolationMessages from \"./ConstraintViolationMessages\"\n\n/** A web component that enhances a form it contains to make constraint validations\n * easier to manage and control.\n *\n * This provides two main features:\n *\n * * While the `:user-invalid` selector allows you to target inputs that have been interacted\n * with (thus avoiding issues when using `:invalid`), this still creates the experience of a\n * user tabbing off of a control and getting an error message. If, instead, you only\n * want to show these errors when a submit has been attempted, this element will\n * set `submitted-invalid` on itself when that happens, thus allowing you to target invalid\n * fields only after a submission attempt.\n * * You may wish to control the messaging of client-side constraint violations\n * beyond what the browser gives you. Assuming your `INPUT` tags are inside a container\n * like `LABEL`, a `brut-cv` tag found in that container\n * (i.e. a sibling of your `INPUT`) will be modified to contain error messages specific\n * to the {@link external:ValidityState} of the control.\n *\n * @fires brut:invalid Fired when any element is found to be invalid\n * @fires brut:valid Fired when no element is found to be invalid. This should be reliable to know\n * when constraint violations have cleared.\n *\n * @example <caption>Basic Structure Required</caption>\n * <brut-form>\n * <form ...>\n * <label>\n * <input type=\"text\" required name=\"username\">\n * <brut-cv-messages>\n * </brut-cv-messages>\n * </label>\n * <div> <!-- container need not be a label -->\n * <input type=\"text\" required minlength=\"4\" name=\"alias\">\n * <brut-cv-messages>\n * </brut-cv-messages>\n * </div>\n * <button>Submit</button>\n * </form>\n * </brut-form>\n * <!-- after a submit of this form, the HTML will effectively be as follows -->\n * <brut-form submitted-invalid>\n * <form ...>\n * <label>\n * <input type=\"text\" required name=\"username\">\n * <brut-cv-messages>\n * <brut-cv>This field is required</brut-cv>\n * </brut-cv-messages>\n * </label>\n * <div> <!-- container need not be a label -->\n * <input type=\"text\" required minlength=\"4\" name=\"alias\">\n * <brut-cv-messages>\n * <brut-cv>This field is required</brut-cv>\n * </brut-cv-messages>\n * </div>\n * <button>Submit</button>\n * </form>\n * </brut-form>\n *\n * @property {boolean} submitted-invalid - set by this element when the form is submitted. Does not trigger any behavior and can be used in CSS.\n * @see ConstraintViolationMessages\n */\nclass Form extends BaseCustomElement {\n static tagName = \"brut-form\"\n static observedAttributes = [\n \"submitted-invalid\",\n \"show-warnings\",\n ]\n\n #markFormSubmittedInvalid = (event) => {\n this.setAttribute(\"submitted-invalid\",\"\")\n }\n #updateValidity = (event) => {\n this.#updateErrorMessages(event)\n }\n #sendValid = () => {\n this.dispatchEvent(new CustomEvent(\"brut:valid\"))\n }\n #sendInvalid = () => {\n this.dispatchEvent(new CustomEvent(\"brut:invalid\"))\n }\n\n submittedInvalidChangedCallback() {}\n\n update() {\n const forms = this.querySelectorAll(\"form\")\n if (forms.length == 0) {\n this.logger.warn(\"Didn't find any forms. Ignoring\")\n return\n }\n forms.forEach( (form) => {\n Array.from(form.elements).forEach( (formElement) => {\n formElement.addEventListener(\"invalid\", this.#updateValidity)\n formElement.addEventListener(\"invalid\", this.#markFormSubmittedInvalid)\n formElement.addEventListener(\"input\", this.#updateValidity)\n })\n form.querySelectorAll(AjaxSubmit.tagName).forEach( (ajaxSubmits) => {\n ajaxSubmits.addEventListener(\"brut:submitok\", this.#sendValid)\n ajaxSubmits.addEventListener(\"brut:submitinvalid\", this.#sendInvalid)\n })\n })\n }\n\n #updateErrorMessages(event) {\n const element = event.target\n const selector = ConstraintViolationMessages.tagName\n let errorLabels = element.parentNode.querySelectorAll(selector)\n if (errorLabels.length == 0) {\n if (element.name && element.form) {\n const moreGeneralSelector = `${ConstraintViolationMessages.tagName}[input-name='${element.name}']`\n errorLabels = element.form.querySelectorAll(moreGeneralSelector)\n if (errorLabels.length == 0) {\n this.logger.warn(`Did not find any elements matching ${selector} or ${moreGeneralSelector}, so no error messages will be shown`)\n }\n }\n else {\n this.logger.warn(\"Did not find any elements matching %s and the form element has %s %s\",\n selector,\n element.name ? \"no name\" : \"a name, but\",\n element.form ? \"no form\" : \"though has a form\")\n }\n }\n if (errorLabels.length == 0) {\n return\n }\n let anyErrors = false\n errorLabels.forEach( (errorLabel) => {\n if (element.validity.valid) {\n errorLabel.clearClientSideMessages()\n }\n else {\n anyErrors = true\n errorLabel.createMessages({\n validityState: element.validity,\n inputName: element.name\n })\n }\n })\n if (anyErrors) {\n this.#sendInvalid()\n }\n else {\n this.#sendValid()\n }\n }\n}\nexport default Form\n", "import BaseCustomElement from \"./BaseCustomElement\"\n\nclass LocaleDetection extends BaseCustomElement {\n static tagName = \"brut-locale-detection\"\n\n static observedAttributes = [\n \"locale-from-server\",\n \"timezone-from-server\",\n \"url\",\n \"timeout-before-ping-ms\",\n \"show-warnings\",\n ]\n\n #localeFromServer = null\n #timezoneFromServer = null\n #reportingURL = null\n #timeoutBeforePing = 1000\n #serverContacted = false\n\n localeFromServerChangedCallback({newValue}) {\n this.#localeFromServer = newValue\n }\n\n timezoneFromServerChangedCallback({newValue}) {\n this.#timezoneFromServer = newValue\n }\n\n urlChangedCallback({newValue}) {\n if (this.#serverContacted) {\n this.#serverContacted = false\n }\n this.#reportingURL = newValue\n }\n\n timeoutBeforePingMsChangedCallback({newValue}) {\n this.#timeoutBeforePing = newValue\n }\n\n update() {\n if (this.#timeoutBeforePing == 0) {\n this.#pingServerWithLocaleInfo()\n }\n else {\n setTimeout(this.#pingServerWithLocaleInfo.bind(this), this.#timeoutBeforePing)\n }\n }\n\n #pingServerWithLocaleInfo() {\n if (!this.#reportingURL) {\n this.logger.info(\"no url= set, so nowhere to report to\")\n return\n }\n if (this.#localeFromServer && this.#timezoneFromServer) {\n this.logger.info(\"locale and timezone both set, not contacting server\")\n return\n }\n\n if (this.#serverContacted) {\n this.logger.info(\"server has already been contacted at the given url, not doing it again\")\n return\n }\n this.#serverContacted = true\n\n const formatOptions = Intl.DateTimeFormat().resolvedOptions()\n const request = new Request(\n this.#reportingURL,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n method: \"POST\",\n body: JSON.stringify({\n locale: formatOptions.locale,\n timeZone: formatOptions.timeZone,\n }),\n }\n )\n\n window.fetch(request).then( (response) => {\n if (response.ok) {\n this.logger.info(\"Server gave us the OK\") \n }\n else {\n console.warn(response)\n }\n }).catch( (e) => {\n console.warn(e)\n })\n }\n\n\n}\nexport default LocaleDetection\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport RichString from \"./RichString\"\nimport I18nTranslation from \"./I18nTranslation\"\n\n/** Renders a translated message for a given key, handling all the needed interpolation based\n * on the existence of `<brut-i18n-translation>` elements on the page.\n *\n * When the `key` attribute has a value, this element will locate the `<brut-i18-translation>` element and call `translate`. Note that\n * interpolation is not supported.\n *\n * @property {string} key - the i18n translation key to use. It must map to the `key` of a `<brut-i18n-translation>` on the page or\n * the element will not render any text.\n *\n * @see I18nTranslation\n * @see ConstraintViolationMessage\n */\n\nclass Message extends BaseCustomElement {\n static tagName = \"brut-message\"\n static observedAttributes = [\n \"show-warnings\",\n \"key\",\n ]\n\n static createElement(document,attributes) {\n const element = document.createElement(Message.tagName)\n element.setAttribute(\"key\",attributes.key)\n element.setAttribute(\"show-warnings\",attributes[\"show-warnings\"])\n return element\n }\n\n #key = null\n\n keyChangedCallback({newValue}) {\n this.#key = newValue\n }\n\n update() {\n if (!this.#key) {\n this.logger.info(\"No key attribute, so can't do anything\")\n return\n }\n\n const selector = `${I18nTranslation.tagName}[key='${this.#key}']`\n const translation = document.querySelector(selector)\n if (!translation) {\n this.logger.info(\"Could not find translation based on selector '%s'\",selector)\n return\n }\n\n this.textContent = RichString.fromString(translation.translation()).capitalize().toString()\n }\n}\n\nexport default Message\n", "import BaseCustomElement from \"./BaseCustomElement\"\n\n/** Implements an in-page tab selector. It's intended to wrap a set of `<a>` or `<button>` elements\n * that represent the tabs of a tabbed UI, as defined by ARIA roles. \n *\n * Each direct child must be an `<a>` or a `<button>`, though `<a>` is recommended.\n * Any other elements are ignored. Each `<a>` or `<button>`\n * (herafter referred to as \"tab\") must have the correct ARIA attributes:\n *\n * * `role=\"tab\"`\n * * `aria-selected` as true or false, depending on what tab is selected when the page is first rendered. This\n * custom element will ensure this value is updated as different tabs are selected.\n * * `tabindex` should be 0 if selected, -1 otherwise. This custom element will ensure this value is updated as\n * different tabs are selected.\n * * `aria-controls` to the ID or list of IDs of panels that should be shown when this tab is selected.\n * * `id` to allow the `tab-panel` to refer back to this tab.\n *\n * This custom element will set click listeners on all tabs and, when clicked, hide all panels referred to by\n * every tab (by setting the `hidden` attribute), then show only those panels referred to by the clicked\n * tab. You can use CSS to style everything the way you like it.\n *\n * @property {boolean} tab-selection-pushes-and-restores-state if set, this custom element will use the \n * history API to manage state. When a tab\n * implemented by an `<a>` with an `href` is\n * clicked, that `href` will be pushed into \n * the state. When the back button is hit,\n * this will select the previous tab as selected.\n * Note that this will conflict with anything else\n * on the page that manipulates state, so only\n * set this if your UI is a \"full page tab\"\n * style UI.\n *\n * @fires Tabs#brut:tabselected whenever the tab selection has changed\n * @example\n * <brut-tabs>\n * <a role=\"tab\" aria-selected=\"true\" tabindex=\"0\" aria-controls=\"inbox-panel\" id=\"inbox-tab\"\n * href=\"?tab=inbox\">Inbox</a>\n * <a role=\"tab\" aria-selected=\"false\" tabindex=\"-1\" aria-controls=\"drafts-panel\" id=\"drafts-tab\"\n * href=\"?tab=drafts\">Drafts</a>\n * <a role=\"tab\" aria-selected=\"false\" tabindex=\"-1\" aria-controls=\"spam-panel\" id=\"spam-tab\"\n * href=\"?tab=spam\">Spam</a>\n * </brut-tabs>\n * <section role=\"tabpanel\" tabindex=\"0\" id=\"inbox-panel\">\n * <h3>Inbox</h3>\n * </section>\n * <section role=\"tabpanel\" tabindex=\"0\" id=\"drafts-panel\" hidden>\n * <h3>Drafts</h3>\n * </section>\n * <section role=\"tabpanel\" tabindex=\"0\" id=\"spam-panel\" hidden>\n * <h3>Spam</h3>\n * </section>\n * <!-- if a user clicks on 'Drafts', the DOM will be updated to look\n * effectively like so: -->\n * <brut-tabs>\n * <a role=\"tab\" aria-selected=\"false\" tabindex=\"-1\" aria-controls=\"inbox-panel\" id=\"inbox-tab\"\n * href=\"?tab=inbox\">Inbox</a>\n * <a role=\"tab\" aria-selected=\"true\" tabindex=\"0\" aria-controls=\"drafts-panel\" id=\"drafts-tab\"\n * href=\"?tab=drafts\">Drafts</a>\n * <a role=\"tab\" aria-selected=\"false\" tabindex=\"-1\" aria-controls=\"spam-panel\" id=\"spam-tab\"\n * href=\"?tab=spam\">Spam</a>\n * </brut-tabs>\n * <section role=\"tabpanel\" tabindex=\"0\" id=\"inbox-panel\" hidden>\n * <h3>Inbox</h3>\n * </section>\n * <section role=\"tabpanel\" tabindex=\"-1\" id=\"drafts-panel\">\n * <h3>Drafts</h3>\n * </section>\n * <section role=\"tabpanel\" tabindex=\"-1\" id=\"spam-panel\" hidden>\n * <h3>Spam</h3>\n * </section>\n *\n */\nclass Tabs extends BaseCustomElement {\n static tagName = \"brut-tabs\"\n static observedAttributes = [\n \"tab-selection-pushes-and-restores-state\",\n \"show-warnings\",\n ]\n\n tabSelectionPushesAndRestoresStateChangedCallback({newValue,oldValue}) {\n this.#pushAndRestoreTabState = newValue != null\n }\n\n update() {\n this.#tabs().forEach( (tab) => {\n tab.addEventListener(\"click\", this.#tabClicked)\n })\n }\n\n #pushAndRestoreTabState = false\n\n #tabClicked = (event) => {\n event.preventDefault()\n this.#setTabAsSelected(event.target)\n event.preventDefault()\n }\n\n #reloadTab = (event) => {\n const tab = document.getElementById(event.state.tabId)\n if (tab) {\n this.#setTabAsSelected(tab, { skipPushState: true })\n }\n }\n\n #setTabAsSelected(selectedTab, { skipPushState = false } = {}) {\n this.#tabs().forEach( (tab) => {\n const tabPanels = []\n const ariaControls = tab.getAttribute(\"aria-controls\")\n if (ariaControls) {\n ariaControls.split(/\\s+/).forEach( (id) => {\n const panel = document.getElementById(id)\n if (panel) {\n tabPanels.push(panel)\n }\n else {\n this.logger.warn(\"Tab %o references panel with id %s, but no such element exists with that id\",tab,id)\n }\n })\n }\n if (tab == selectedTab) {\n tab.setAttribute(\"aria-selected\",true)\n tab.setAttribute(\"tabindex\",\"0\")\n tabPanels.forEach( (panel) => panel.removeAttribute(\"hidden\") )\n if (this.#pushAndRestoreTabState && !skipPushState) {\n let href = tab.getAttribute(\"href\") || \"\"\n if (href.startsWith(\"?\")) {\n let hrefQueryString = href.slice(1)\n const anchorIndex = hrefQueryString.indexOf(\"#\")\n if (anchorIndex != -1) {\n hrefQueryString = hrefQueryString.slice(-1 * (hrefQueryString.length - anchorIndex - 1))\n }\n const currentQuery = new URLSearchParams(window.location.search)\n const hrefQuery = new URLSearchParams(hrefQueryString)\n hrefQuery.forEach( (value,key) => {\n currentQuery.set(key,value)\n })\n href = \"?\" + currentQuery.toString() + (anchorIndex == -1 ? \"\" : hrefQueryString.slice(anchorIndex))\n }\n window.history.pushState({ tabId: tab.id },\"\",href)\n window.addEventListener(\"popstate\", this.#reloadTab)\n }\n this.dispatchEvent(new CustomEvent(\"brut:tabselected\", { tabId: tab.id }))\n }\n else {\n tab.setAttribute(\"aria-selected\",false)\n tab.setAttribute(\"tabindex\",\"-1\")\n tabPanels.forEach( (panel) => panel.setAttribute(\"hidden\", true) )\n }\n })\n }\n\n\n #tabs() {\n const tabs = []\n this.querySelectorAll(\"[role=tab]\").forEach( (tab) => {\n if ( (tab.tagName.toLowerCase() == \"a\") || (tab.tagName.toLowerCase() == \"button\") ) {\n tabs.push(tab)\n }\n else {\n this.logger.warn(\"An element with tag %s was assigned role=tab, and %s doesn't work that way. Use an <a> or a <button>\",tab.tagName,this.constructor.name)\n }\n })\n return tabs\n }\n\n}\nexport default Tabs\n", "import { BaseCustomElement } from \"brut-js\"\n\n/** Sends performance data to an endpoint in a Brut-powered app that is expected to save it as an Open Telemetry span.\n * Uses the W3C-recommended headers \"traceparent\" and \"tracestate\" to do this.\n *\n * ### Supported Metrics\n *\n * Currently, this will attempt to send \"navigation\", \"largest-contentful-paint\", and \"first-contentful-paint\" back to the server.\n * Not all browsers support these, so this element will send back as many as it can. It will wait for all supported metrics to be\n * received before contacting the server. It will attempt to do this exactly once.\n *\n * ### Use\n *\n * To use this element, your page must have a `<meta>` element that contains the value for \"traceparent\". It is expected that your\n * server will include this in server-generatd HTML. The Brut's `Brut::FrontEnd::Components::Traceparent` component will handle this\n * for you. The value for \"traceparent\" is key to connecting the browser metrics to the back-end request that generated the page.\n *\n * The element also requires a `url` attribute to know where to send the data. By default, Brut is listening in\n * `/__brut/instrumentation`. See the example.\n *\n * ### Durations vs Timestamps\n *\n * The performance API produces durations since an origin timestamp. Open Telemetry wants timestamps. In theory,\n * `Performance.timeOrigin` is provided by the browser as a reference time when the page started doing anything.\n * In practice, this value is incorrect on Firefox, so the element records a timestamp when it is created.\n *\n * When the data is merged back to the server span, the specific timestamps will not exactly match reality, however the durations will\n * be accurate. Note that even if `Performance.timeOrigin` was correct, clock drift between client and server would make\n * the timestamps inaccurate anyway.\n *\n * ### Encoding\n *\n * The spec for the \"tracestate\" header leaves open how the data is to be encoded. It supports multiple vendors using a key/value\n * pair:\n *\n * tracestate: honeycomb=\u00ABencoded data\u00BB,newrelic=\u00ABencoded data\u00BB\n *\n * This element uses the vendor name \"brut\". The data is a Base64-encoded JSON blob containing the data. \n *\n * tracestate: brut=\u00ABBase64 encoded JSON\u00BB\n *\n * The values captured and format of the JSON map closely to Open Telemetry's browser instrumentation format.\n * Of course, this element is many magnitudes smaller in size than Open Telemetry's, which is why it exists at all\n *\n * @example\n * <!DOCTYPE html>\n * <html>\n * <head>\n * <meta name=\"traceparent\" content=\"293874293749237439843294\">\n * <brut-tracing url=\"/__brut/instrumentation\"></brut-tracing>\n * <!-- ... -->\n * </head>\n * <body>\n * <!-- ... -->\n * </body>\n * </html>\n *\n * @property {string} url - the url where the trace information is to be sent.\n *\n * @see {@link https://www.w3.org/TR/trace-context/}\n * @see external:Performance\n */\nclass Tracing extends BaseCustomElement {\n static tagName = \"brut-tracing\"\n\n static observedAttributes = [\n \"url\",\n \"show-warnings\",\n ]\n\n\n #url = null\n #sent = {}\n #payload = {}\n #timeOrigin = null\n #supportedTypes = []\n\n #performanceObserver = new PerformanceObserver( (entries) => {\n const navigation = entries.getEntriesByType(\"navigation\")[0]\n if (navigation && navigation.loadEventEnd != 0 && !this.#payload.navigation) {\n this.#payload.navigation = this.#parseNavigation(navigation)\n }\n const largestContentfulPaint = entries.getEntriesByType(\"largest-contentful-paint\")\n if (largestContentfulPaint.length > 0 && !this.#payload[\"largest-contentful-paint\"]) {\n this.#payload[\"largest-contentful-paint\"] = this.#parseLargestContentfulPaint(largestContentfulPaint)\n }\n const paint = entries.getEntriesByName(\"first-contentful-paint\", \"paint\")[0]\n if (paint && !this.#payload.paint) {\n this.#payload.paint = this.#parseFirstContentfulPaint(paint)\n }\n\n if ( this.#supportedTypes.every( (type) => this.#payload[type] ) ) {\n this.#sendSpans()\n this.#payload = {}\n }\n })\n\n constructor() {\n super()\n this.#timeOrigin = Date.now()\n this.#supportedTypes = [\n \"navigation\",\n \"largest-contentful-paint\",\n \"paint\",\n ].filter( (type) => {\n return PerformanceObserver.supportedEntryTypes.includes(type)\n })\n }\n\n urlChangedCallback({newValue}) {\n this.#url = newValue\n }\n\n update() {\n this.#supportedTypes.forEach( (type) => {\n this.#performanceObserver.observe({type: type, buffered: true})\n })\n }\n\n #sendSpans() {\n const headers = this.#initializerHeadersIfCanContinue()\n if (!headers) {\n return\n }\n const span = this.#payload.navigation\n\n if (this.#payload.paint) {\n span.events.push({\n name: this.#payload.paint.name,\n timestamp: this.#timeOrigin + this.#payload.paint.startTime\n })\n }\n if (this.#payload[\"largest-contentful-paint\"]) {\n this.#payload[\"largest-contentful-paint\"].forEach( (event) => {\n span.events.push({\n name: event.name,\n timestamp: this.#timeOrigin + event.startTime,\n attributes: {\n \"element.tag\": event.element?.tagName,\n \"element.class\": event.element?.className,\n }\n })\n })\n }\n\n this.#sent[this.#url] = true\n headers.append(\"tracestate\",`brut=${window.btoa(JSON.stringify(span))}`)\n const request = new Request(\n this.#url,\n {\n headers: headers,\n method: \"GET\",\n }\n )\n fetch(request).then( (response) => {\n if (!response.ok) {\n console.warn(\"Problem sending instrumentation: %s/%s\", response.status,response.statusText)\n }\n }).catch( (error) => {\n console.warn(\"Problem sending instrumentation: %o\", error)\n })\n }\n\n #parseNavigation(navigation) {\n const documentFetch = {\n name: \"browser.documentFetch\",\n start_timestamp: navigation.fetchStart + this.#timeOrigin,\n end_timestamp: navigation.responseEnd + this.#timeOrigin,\n attributes: {\n \"http.url\": navigation.name,\n },\n }\n const events = [\n \"fetchStart\",\n \"unloadEventStart\",\n \"unloadEventEnd\",\n \"domInteractive\",\n \"domInteractive\",\n \"domContentLoadedEventStart\",\n \"domContentLoadedEventEnd\",\n \"domComplete\",\n \"loadEventStart\",\n \"loadEventEnd\",\n ]\n\n return {\n name: \"browser.documentLoad\",\n start_timestamp: navigation.fetchStart + this.#timeOrigin,\n end_timestamp: navigation.loadEventEnd + this.#timeOrigin,\n attributes: {\n \"http.url\": navigation.name,\n \"http.user_agent\": window.navigator.userAgent,\n },\n events: events.map( (eventName) => {\n return {\n name: eventName,\n timestamp: this.#timeOrigin + navigation[eventName],\n }\n }),\n spans: [\n documentFetch\n ]\n }\n }\n\n #parseFirstContentfulPaint(paint) {\n return {\n name: \"browser.first-contentful-paint\",\n startTime: paint.startTime,\n }\n }\n\n #parseLargestContentfulPaint(largestContentfulPaint) {\n return largestContentfulPaint.map( (entry) => {\n return {\n name: \"browser.largest-contentful-paint\",\n startTime: entry.startTime,\n element: entry.element,\n }\n })\n }\n\n #initializerHeadersIfCanContinue() {\n if (!this.#url) {\n this.logger.info(\"No url set, no traces will be reported\")\n return\n }\n const $traceparent = document.querySelector(\"meta[name='traceparent']\")\n if (!$traceparent) {\n this.logger.info(\"No <meta name='traceparent' ...> in the document, no traces can be reported\")\n return\n }\n if (this.#sent[this.#url]) {\n this.logger.info(\"Already sent to %s\", this.#url)\n return\n }\n const traceparent = $traceparent.getAttribute(\"content\")\n if (!traceparent) {\n this.logger.info(\"%o had no value for the content attribute, no traces can be reported\",$traceparent)\n return\n }\n return new Headers({ traceparent })\n }\n}\nexport default Tracing\n", "import BaseCustomElement from \"./BaseCustomElement\"\nimport AjaxSubmit from \"./AjaxSubmit\"\nimport Autosubmit from \"./Autosubmit\"\nimport ConfirmSubmit from \"./ConfirmSubmit\"\nimport ConfirmationDialog from \"./ConfirmationDialog\"\nimport ConstraintViolationMessage from \"./ConstraintViolationMessage\"\nimport ConstraintViolationMessages from \"./ConstraintViolationMessages\"\nimport CopyToClipboard from \"./CopyToClipboard\"\nimport Form from \"./Form\"\nimport I18nTranslation from \"./I18nTranslation\"\nimport LocaleDetection from \"./LocaleDetection\"\nimport Message from \"./Message\"\nimport RichString from \"./RichString\"\nimport Tabs from \"./Tabs\"\nimport Tracing from \"./Tracing\"\n\n/**\n * This is the code for a test case. It may return a {@link external:Promise} if there is async behavior that must\n * be waited-on to properly assert behavior.\n *\n * @callback testCodeCallback\n *\n * @param {Object} objects - objects passed into your test that you may need.\n * @param {Window} objects.window - Access to the top-level window object. Note that this provided by JSDOM and is not exactly like the `Window` you'd get in your browser.\n * @param {Document} objects.document - Access to the top-level document object. Note that this provided by JSDOM and is not exactly like the `Document` you'd get in your browser.\n * @param {Object} objects.assert - The NodeJS assert object that you should use to assert behavior.\n * @param {Object} objects.fetchRequests - An array of `Request` instances given to `fetch`. This will be updated as `fetch` is\n * called and can be useful to assert the contents of what was requested via `fetch`.\n *\n * @example\n * test(\"some test\", ({document,assert}) => {\n * const element = document.querySelector(\"div\")\n * assert(div.getAttribute(\"data-foo\") != null)\n * })\n *\n * @example\n * test(\"some other test\", ({document,window,assert}) => {\n * const element = document.querySelector(\"div\")\n * assert.equal(window.history.state[\"foo\"], \"bar\")\n * })\n */\n\n/**\n * @external Performance\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Performance|Performance API}\n */\n\n/**\n * @external Promise\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise|Promise}\n */\n/**\n * @external fetch\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/fetch|fetch}\n */\n\n/**\n * @external ValidityState\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/ValidityState|ValidityState}\n */\n\n/**\n * The standard `CustomElementRegistry`\n *\n * @external CustomElementRegistry\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry|CustomElementRegistry}\n */\n\n/**\n * @external Window\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/|Window}\n */\n\n/** \n * @method confirm\n * @memberof external:Window#\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm|confirm}\n */\n\n/**\n * Class that can be used to automatically define all of brut's custom\n * elements.\n */\nclass BrutCustomElements {\n static elementClasses = []\n static define() {\n this.elementClasses.forEach( (e) => {\n e.define() \n })\n }\n static addElementClasses(...classes) {\n this.elementClasses.push(...classes)\n }\n}\n\nBrutCustomElements.addElementClasses(\n // Ordering is important here - TBD how to make sure these are created in order\n I18nTranslation,\n CopyToClipboard,\n Message,\n ConfirmSubmit,\n ConfirmationDialog,\n ConstraintViolationMessages,\n Form,\n AjaxSubmit,\n ConstraintViolationMessage,\n Tabs,\n LocaleDetection,\n Autosubmit,\n Tracing,\n)\n\nexport {\n AjaxSubmit,\n Autosubmit,\n BaseCustomElement,\n BrutCustomElements,\n ConfirmSubmit,\n ConfirmationDialog,\n ConstraintViolationMessage,\n ConstraintViolationMessages,\n Form,\n I18nTranslation,\n LocaleDetection,\n Message,\n RichString,\n Tabs,\n Tracing\n}\n\n", "import * as BrutJS from \"./index.js\"\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n BrutJS.BrutCustomElements.define()\n if (!HTMLDialogElement.prototype.showModal) {\n HTMLDialogElement.prototype.showModal = function() {\n this.open = true\n }\n }\n if (!HTMLDialogElement.prototype.close) {\n HTMLDialogElement.prototype.close = function(returnValue) {\n this.open = false\n this.returnValue = returnValue\n }\n }\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["document", "form", "document", "form", "form", "document"]
|
|
7
7
|
}
|