gemi 0.36.0 → 0.36.2

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.
@@ -1,227 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../node_modules/.bun/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/core/output.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/core/token.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/javascript/acorn.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/core/options.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/javascript/options.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/core/inputscanner.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/core/tokenstream.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/core/pattern.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/core/whitespacepattern.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/core/tokenizer.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/core/directives.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/core/templatablepattern.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/javascript/tokenizer.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/javascript/beautifier.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/javascript/index.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/css/options.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/css/beautifier.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/css/index.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/html/options.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/html/tokenizer.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/html/beautifier.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/html/index.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/src/index.js", "../../../node_modules/.bun/js-beautify@1.15.4/node_modules/js-beautify/js/index.js", "../services/file-storage/drivers/FileStorageDriver.ts", "../services/file-storage/drivers/FileSystemDriver.ts", "../services/file-storage/FileStorageServiceProvider.ts", "../../../node_modules/.bun/@aws-sdk+middleware-expect-continue@3.972.8/node_modules/@aws-sdk/middleware-expect-continue/dist-es/index.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/constants.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/stringUnionSelector.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsMiddleware.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumAlgorithmForRequest.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumLocationName.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/hasHeader.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/hasHeaderWithPrefix.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/isStreaming.js", "../../../node_modules/.bun/tslib@2.8.1/node_modules/tslib/modules/index.js", "../../../node_modules/.bun/@smithy+util-buffer-from@2.2.0/node_modules/@smithy/util-buffer-from/dist-es/index.js", "../../../node_modules/.bun/@smithy+util-utf8@2.3.0/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js", "../../../node_modules/.bun/@aws-crypto+util@5.2.0/node_modules/@aws-crypto/util/build/module/convertToBuffer.js", "../../../node_modules/.bun/@aws-crypto+util@5.2.0/node_modules/@aws-crypto/util/build/module/isEmptyData.js", "../../../node_modules/.bun/@aws-crypto+util@5.2.0/node_modules/@aws-crypto/util/build/module/numToUint8.js", "../../../node_modules/.bun/@aws-crypto+util@5.2.0/node_modules/@aws-crypto/util/build/module/uint32ArrayFrom.js", "../../../node_modules/.bun/@aws-crypto+crc32c@5.2.0/node_modules/@aws-crypto/crc32c/build/module/aws_crc32c.js", "../../../node_modules/.bun/@aws-crypto+crc32c@5.2.0/node_modules/@aws-crypto/crc32c/build/module/index.js", "../../../node_modules/.bun/@aws-sdk+crc64-nvme@3.972.5/node_modules/@aws-sdk/crc64-nvme/dist-es/Crc64Nvme.js", "../../../node_modules/.bun/@aws-sdk+crc64-nvme@3.972.5/node_modules/@aws-sdk/crc64-nvme/dist-es/crc64-nvme-crt-container.js", "../../../node_modules/.bun/@aws-crypto+crc32@5.2.0/node_modules/@aws-crypto/crc32/build/module/aws_crc32.js", "../../../node_modules/.bun/@aws-crypto+crc32@5.2.0/node_modules/@aws-crypto/crc32/build/module/index.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/types.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/selectChecksumAlgorithmFunction.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/stringHasher.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsInputMiddleware.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsResponseMiddleware.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumAlgorithmListForResponse.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/isChecksumWithPartNumber.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/validateChecksumFromResponse.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksum.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getFlexibleChecksumsPlugin.js", "../../../node_modules/.bun/@aws-sdk+middleware-flexible-checksums@3.974.4/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/resolveFlexibleChecksumsConfig.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/check-content-length-header.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-endpoint-middleware.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-middleware.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-expires-middleware.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCache.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCacheEntry.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityProviderImpl.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/SignatureV4S3Express.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/constants.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressMiddleware.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressHttpSigningMiddleware.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/signS3Express.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3Configuration.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/throw-200-exceptions.js", "../../../node_modules/.bun/@aws-sdk+util-arn-parser@3.972.3/node_modules/@aws-sdk/util-arn-parser/dist-es/index.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/bucket-endpoint-middleware.js", "../../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.24/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/validate-bucket-name.js", "../../../node_modules/.bun/@smithy+eventstream-serde-config-resolver@4.3.12/node_modules/@smithy/eventstream-serde-config-resolver/dist-es/EventStreamSerdeConfig.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthSchemeProvider.js", "../../../node_modules/.bun/@aws-sdk+signature-v4-multi-region@3.996.12/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/SignatureV4MultiRegion.js", "../../../node_modules/.bun/@aws-sdk+signature-v4-multi-region@3.996.12/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/signature-v4-crt-container.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/endpointResolver.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/ruleset.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateSessionCommand.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/EndpointParameters.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/schemas/schemas_0.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/models/S3ServiceException.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/models/errors.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js", "../../../node_modules/.bun/@aws-sdk+credential-provider-node@3.972.25/node_modules/@aws-sdk/credential-provider-node/dist-es/defaultProvider.js", "../../../node_modules/.bun/@aws-sdk+credential-provider-node@3.972.25/node_modules/@aws-sdk/credential-provider-node/dist-es/remoteProvider.js", "../../../node_modules/.bun/@aws-sdk+credential-provider-node@3.972.25/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js", "../../../node_modules/.bun/@aws-sdk+middleware-bucket-endpoint@3.972.8/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/NodeUseArnRegionConfigOptions.js", "../../../node_modules/.bun/@smithy+eventstream-codec@4.2.12/node_modules/@smithy/eventstream-codec/dist-es/HeaderMarshaller.js", "../../../node_modules/.bun/@smithy+eventstream-codec@4.2.12/node_modules/@smithy/eventstream-codec/dist-es/Int64.js", "../../../node_modules/.bun/@smithy+eventstream-codec@4.2.12/node_modules/@smithy/eventstream-codec/dist-es/splitMessage.js", "../../../node_modules/.bun/@smithy+eventstream-codec@4.2.12/node_modules/@smithy/eventstream-codec/dist-es/EventStreamCodec.js", "../../../node_modules/.bun/@smithy+eventstream-codec@4.2.12/node_modules/@smithy/eventstream-codec/dist-es/MessageDecoderStream.js", "../../../node_modules/.bun/@smithy+eventstream-codec@4.2.12/node_modules/@smithy/eventstream-codec/dist-es/MessageEncoderStream.js", "../../../node_modules/.bun/@smithy+eventstream-codec@4.2.12/node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageDecoderStream.js", "../../../node_modules/.bun/@smithy+eventstream-codec@4.2.12/node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageEncoderStream.js", "../../../node_modules/.bun/@smithy+eventstream-serde-universal@4.2.12/node_modules/@smithy/eventstream-serde-universal/dist-es/getChunkedStream.js", "../../../node_modules/.bun/@smithy+eventstream-serde-universal@4.2.12/node_modules/@smithy/eventstream-serde-universal/dist-es/getUnmarshalledStream.js", "../../../node_modules/.bun/@smithy+eventstream-serde-universal@4.2.12/node_modules/@smithy/eventstream-serde-universal/dist-es/EventStreamMarshaller.js", "../../../node_modules/.bun/@smithy+eventstream-serde-node@4.2.12/node_modules/@smithy/eventstream-serde-node/dist-es/EventStreamMarshaller.js", "../../../node_modules/.bun/@smithy+eventstream-serde-node@4.2.12/node_modules/@smithy/eventstream-serde-node/dist-es/utils.js", "../../../node_modules/.bun/@smithy+eventstream-serde-node@4.2.12/node_modules/@smithy/eventstream-serde-node/dist-es/provider.js", "../../../node_modules/.bun/@smithy+hash-stream-node@4.2.12/node_modules/@smithy/hash-stream-node/dist-es/HashCalculator.js", "../../../node_modules/.bun/@smithy+hash-stream-node@4.2.12/node_modules/@smithy/hash-stream-node/dist-es/readableStreamHasher.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.shared.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeExtensions.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthExtensionConfiguration.js", "../../../node_modules/.bun/@aws-sdk+middleware-ssec@3.972.8/node_modules/@aws-sdk/middleware-ssec/dist-es/index.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectCommand.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectsV2Command.js", "../../../node_modules/.bun/@aws-sdk+client-s3@3.1015.0/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectCommand.js", "../services/file-storage/drivers/S3Driver.ts", "../services/rate-limiter/drivers/RateLimiterDriver.ts", "../services/rate-limiter/drivers/InMemoryRateLimiterDriver.ts", "../services/rate-limiter/RateLimiterServiceProvider.ts", "../../../node_modules/.bun/@react-email+render@0.0.16+67f6792bdf102c28/node_modules/@react-email/render/dist/node/index.mjs", "../../../node_modules/.bun/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js", "../../../node_modules/.bun/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js", "../../../node_modules/.bun/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js", "../../../node_modules/.bun/leac@0.6.0/node_modules/leac/lib/leac.mjs", "../../../node_modules/.bun/peberminta@0.9.0/node_modules/peberminta/lib/core.mjs", "../../../node_modules/.bun/parseley@0.12.1/node_modules/parseley/lib/parseley.mjs", "../../../node_modules/.bun/selderee@0.11.0/node_modules/selderee/lib/selderee.mjs", "../../../node_modules/.bun/@selderee+plugin-htmlparser2@0.11.0/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.mjs", "../../../node_modules/.bun/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js", "../../../node_modules/.bun/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js", "../../../node_modules/.bun/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js", "../../../node_modules/.bun/entities@4.5.0/node_modules/entities/lib/esm/decode.js", "../../../node_modules/.bun/htmlparser2@8.0.2/node_modules/htmlparser2/lib/esm/Tokenizer.js", "../../../node_modules/.bun/htmlparser2@8.0.2/node_modules/htmlparser2/lib/esm/Parser.js", "../../../node_modules/.bun/entities@4.5.0/node_modules/entities/lib/esm/escape.js", "../../../node_modules/.bun/entities@4.5.0/node_modules/entities/lib/esm/index.js", "../../../node_modules/.bun/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js", "../../../node_modules/.bun/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/index.js", "../../../node_modules/.bun/htmlparser2@8.0.2/node_modules/htmlparser2/lib/esm/index.js", "../../../node_modules/.bun/html-to-text@9.0.5/node_modules/html-to-text/lib/html-to-text.mjs", "../../../node_modules/.bun/resend@3.5.0+67f6792bdf102c28/node_modules/resend/dist/index.mjs", "../services/email/drivers/EmailDriver.ts", "../services/email/drivers/ResendDriver.ts", "../services/email/EmailServiceProvider.ts", "../services/pubsub/BroadcastingServiceProvider.ts", "../services/router/ViewRouterServiceProvider.ts", "../services/router/ApiRouterServiceProvider.ts", "../services/logging/LoggingServiceProvider.ts", "../services/queue/QueueServiceProvider.ts", "../services/queue/Job.ts", "../services/image-optimization/drivers/SharpDriver.ts", "../services/image-optimization/drivers/ImageOptimizationDriver.ts", "../services/image-optimization/ImageOptimizationServiceProvider.ts", "../auth/oauth/OAuthProvider.ts", "../auth/oauth/GoogleOAuthProvider.ts", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/globals.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/TwitterPaginator.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/paginator.v1.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/dm.paginator.v1.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/types/v1/tweet.v1.types.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/types/v1/dm.v1.types.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/types/errors.types.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/types/client.types.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/types/plugins/client.plugins.types.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v1/client.v1.write.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/settings.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/helpers.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/stream/TweetStream.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client-mixins/request-handler.helper.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/stream/TweetStreamEventCombiner.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/stream/TweetStreamParser.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/plugins/helpers.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client-mixins/oauth1.helper.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client-mixins/form-data.helper.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client-mixins/request-param.helper.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client-mixins/oauth2.helper.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client-mixins/request-maker.mixin.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client.base.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client.subclient.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/tweet.paginator.v1.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/mutes.paginator.v1.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/followers.paginator.v1.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/friends.paginator.v1.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/user.paginator.v1.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/list.paginator.v1.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v1/client.v1.read.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v1/media-helpers.v1.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v1/client.v1.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v2/includes.v2.helper.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/v2.paginator.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/tweet.paginator.v2.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/user.paginator.v2.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/list.paginator.v2.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v2-labs/client.v2.labs.read.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/paginators/dm.paginator.v2.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v2/client.v2.read.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v2-labs/client.v2.labs.write.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v2/client.v2.write.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v2-labs/client.v2.labs.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/v2/client.v2.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client/readonly.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client/readwrite.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/ads/client.ads.read.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/ads/client.ads.write.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/ads-sandbox/client.ads-sandbox.read.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/ads-sandbox/client.ads-sandbox.write.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/ads-sandbox/client.ads-sandbox.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/ads/client.ads.js", "../../../node_modules/.bun/twitter-api-v2@1.29.0/node_modules/twitter-api-v2/dist/esm/client/index.js", "../auth/oauth/XOAuthProvider.ts", "../services/cron/CronServiceProvider.ts", "../services/cron/CronJob.ts"],
4
- "sourcesContent": [
5
- "'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n",
6
- "/*jshint node:true */\n/*\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nfunction OutputLine(parent) {\n this.__parent = parent;\n this.__character_count = 0;\n // use indent_count as a marker for this.__lines that have preserved indentation\n this.__indent_count = -1;\n this.__alignment_count = 0;\n this.__wrap_point_index = 0;\n this.__wrap_point_character_count = 0;\n this.__wrap_point_indent_count = -1;\n this.__wrap_point_alignment_count = 0;\n\n this.__items = [];\n}\n\nOutputLine.prototype.clone_empty = function() {\n var line = new OutputLine(this.__parent);\n line.set_indent(this.__indent_count, this.__alignment_count);\n return line;\n};\n\nOutputLine.prototype.item = function(index) {\n if (index < 0) {\n return this.__items[this.__items.length + index];\n } else {\n return this.__items[index];\n }\n};\n\nOutputLine.prototype.has_match = function(pattern) {\n for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) {\n if (this.__items[lastCheckedOutput].match(pattern)) {\n return true;\n }\n }\n return false;\n};\n\nOutputLine.prototype.set_indent = function(indent, alignment) {\n if (this.is_empty()) {\n this.__indent_count = indent || 0;\n this.__alignment_count = alignment || 0;\n this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count);\n }\n};\n\nOutputLine.prototype._set_wrap_point = function() {\n if (this.__parent.wrap_line_length) {\n this.__wrap_point_index = this.__items.length;\n this.__wrap_point_character_count = this.__character_count;\n this.__wrap_point_indent_count = this.__parent.next_line.__indent_count;\n this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count;\n }\n};\n\nOutputLine.prototype._should_wrap = function() {\n return this.__wrap_point_index &&\n this.__character_count > this.__parent.wrap_line_length &&\n this.__wrap_point_character_count > this.__parent.next_line.__character_count;\n};\n\nOutputLine.prototype._allow_wrap = function() {\n if (this._should_wrap()) {\n this.__parent.add_new_line();\n var next = this.__parent.current_line;\n next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count);\n next.__items = this.__items.slice(this.__wrap_point_index);\n this.__items = this.__items.slice(0, this.__wrap_point_index);\n\n next.__character_count += this.__character_count - this.__wrap_point_character_count;\n this.__character_count = this.__wrap_point_character_count;\n\n if (next.__items[0] === \" \") {\n next.__items.splice(0, 1);\n next.__character_count -= 1;\n }\n return true;\n }\n return false;\n};\n\nOutputLine.prototype.is_empty = function() {\n return this.__items.length === 0;\n};\n\nOutputLine.prototype.last = function() {\n if (!this.is_empty()) {\n return this.__items[this.__items.length - 1];\n } else {\n return null;\n }\n};\n\nOutputLine.prototype.push = function(item) {\n this.__items.push(item);\n var last_newline_index = item.lastIndexOf('\\n');\n if (last_newline_index !== -1) {\n this.__character_count = item.length - last_newline_index;\n } else {\n this.__character_count += item.length;\n }\n};\n\nOutputLine.prototype.pop = function() {\n var item = null;\n if (!this.is_empty()) {\n item = this.__items.pop();\n this.__character_count -= item.length;\n }\n return item;\n};\n\n\nOutputLine.prototype._remove_indent = function() {\n if (this.__indent_count > 0) {\n this.__indent_count -= 1;\n this.__character_count -= this.__parent.indent_size;\n }\n};\n\nOutputLine.prototype._remove_wrap_indent = function() {\n if (this.__wrap_point_indent_count > 0) {\n this.__wrap_point_indent_count -= 1;\n }\n};\nOutputLine.prototype.trim = function() {\n while (this.last() === ' ') {\n this.__items.pop();\n this.__character_count -= 1;\n }\n};\n\nOutputLine.prototype.toString = function() {\n var result = '';\n if (this.is_empty()) {\n if (this.__parent.indent_empty_lines) {\n result = this.__parent.get_indent_string(this.__indent_count);\n }\n } else {\n result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count);\n result += this.__items.join('');\n }\n return result;\n};\n\nfunction IndentStringCache(options, baseIndentString) {\n this.__cache = [''];\n this.__indent_size = options.indent_size;\n this.__indent_string = options.indent_char;\n if (!options.indent_with_tabs) {\n this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char);\n }\n\n // Set to null to continue support for auto detection of base indent\n baseIndentString = baseIndentString || '';\n if (options.indent_level > 0) {\n baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string);\n }\n\n this.__base_string = baseIndentString;\n this.__base_string_length = baseIndentString.length;\n}\n\nIndentStringCache.prototype.get_indent_size = function(indent, column) {\n var result = this.__base_string_length;\n column = column || 0;\n if (indent < 0) {\n result = 0;\n }\n result += indent * this.__indent_size;\n result += column;\n return result;\n};\n\nIndentStringCache.prototype.get_indent_string = function(indent_level, column) {\n var result = this.__base_string;\n column = column || 0;\n if (indent_level < 0) {\n indent_level = 0;\n result = '';\n }\n column += indent_level * this.__indent_size;\n this.__ensure_cache(column);\n result += this.__cache[column];\n return result;\n};\n\nIndentStringCache.prototype.__ensure_cache = function(column) {\n while (column >= this.__cache.length) {\n this.__add_column();\n }\n};\n\nIndentStringCache.prototype.__add_column = function() {\n var column = this.__cache.length;\n var indent = 0;\n var result = '';\n if (this.__indent_size && column >= this.__indent_size) {\n indent = Math.floor(column / this.__indent_size);\n column -= indent * this.__indent_size;\n result = new Array(indent + 1).join(this.__indent_string);\n }\n if (column) {\n result += new Array(column + 1).join(' ');\n }\n\n this.__cache.push(result);\n};\n\nfunction Output(options, baseIndentString) {\n this.__indent_cache = new IndentStringCache(options, baseIndentString);\n this.raw = false;\n this._end_with_newline = options.end_with_newline;\n this.indent_size = options.indent_size;\n this.wrap_line_length = options.wrap_line_length;\n this.indent_empty_lines = options.indent_empty_lines;\n this.__lines = [];\n this.previous_line = null;\n this.current_line = null;\n this.next_line = new OutputLine(this);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = false;\n // initialize\n this.__add_outputline();\n}\n\nOutput.prototype.__add_outputline = function() {\n this.previous_line = this.current_line;\n this.current_line = this.next_line.clone_empty();\n this.__lines.push(this.current_line);\n};\n\nOutput.prototype.get_line_number = function() {\n return this.__lines.length;\n};\n\nOutput.prototype.get_indent_string = function(indent, column) {\n return this.__indent_cache.get_indent_string(indent, column);\n};\n\nOutput.prototype.get_indent_size = function(indent, column) {\n return this.__indent_cache.get_indent_size(indent, column);\n};\n\nOutput.prototype.is_empty = function() {\n return !this.previous_line && this.current_line.is_empty();\n};\n\nOutput.prototype.add_new_line = function(force_newline) {\n // never newline at the start of file\n // otherwise, newline only if we didn't just add one or we're forced\n if (this.is_empty() ||\n (!force_newline && this.just_added_newline())) {\n return false;\n }\n\n // if raw output is enabled, don't print additional newlines,\n // but still return True as though you had\n if (!this.raw) {\n this.__add_outputline();\n }\n return true;\n};\n\nOutput.prototype.get_code = function(eol) {\n this.trim(true);\n\n // handle some edge cases where the last tokens\n // has text that ends with newline(s)\n var last_item = this.current_line.pop();\n if (last_item) {\n if (last_item[last_item.length - 1] === '\\n') {\n last_item = last_item.replace(/\\n+$/g, '');\n }\n this.current_line.push(last_item);\n }\n\n if (this._end_with_newline) {\n this.__add_outputline();\n }\n\n var sweet_code = this.__lines.join('\\n');\n\n if (eol !== '\\n') {\n sweet_code = sweet_code.replace(/[\\n]/g, eol);\n }\n return sweet_code;\n};\n\nOutput.prototype.set_wrap_point = function() {\n this.current_line._set_wrap_point();\n};\n\nOutput.prototype.set_indent = function(indent, alignment) {\n indent = indent || 0;\n alignment = alignment || 0;\n\n // Next line stores alignment values\n this.next_line.set_indent(indent, alignment);\n\n // Never indent your first output indent at the start of the file\n if (this.__lines.length > 1) {\n this.current_line.set_indent(indent, alignment);\n return true;\n }\n\n this.current_line.set_indent();\n return false;\n};\n\nOutput.prototype.add_raw_token = function(token) {\n for (var x = 0; x < token.newlines; x++) {\n this.__add_outputline();\n }\n this.current_line.set_indent(-1);\n this.current_line.push(token.whitespace_before);\n this.current_line.push(token.text);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = false;\n};\n\nOutput.prototype.add_token = function(printable_token) {\n this.__add_space_before_token();\n this.current_line.push(printable_token);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = this.current_line._allow_wrap();\n};\n\nOutput.prototype.__add_space_before_token = function() {\n if (this.space_before_token && !this.just_added_newline()) {\n if (!this.non_breaking_space) {\n this.set_wrap_point();\n }\n this.current_line.push(' ');\n }\n};\n\nOutput.prototype.remove_indent = function(index) {\n var output_length = this.__lines.length;\n while (index < output_length) {\n this.__lines[index]._remove_indent();\n index++;\n }\n this.current_line._remove_wrap_indent();\n};\n\nOutput.prototype.trim = function(eat_newlines) {\n eat_newlines = (eat_newlines === undefined) ? false : eat_newlines;\n\n this.current_line.trim();\n\n while (eat_newlines && this.__lines.length > 1 &&\n this.current_line.is_empty()) {\n this.__lines.pop();\n this.current_line = this.__lines[this.__lines.length - 1];\n this.current_line.trim();\n }\n\n this.previous_line = this.__lines.length > 1 ?\n this.__lines[this.__lines.length - 2] : null;\n};\n\nOutput.prototype.just_added_newline = function() {\n return this.current_line.is_empty();\n};\n\nOutput.prototype.just_added_blankline = function() {\n return this.is_empty() ||\n (this.current_line.is_empty() && this.previous_line.is_empty());\n};\n\nOutput.prototype.ensure_empty_line_above = function(starts_with, ends_with) {\n var index = this.__lines.length - 2;\n while (index >= 0) {\n var potentialEmptyLine = this.__lines[index];\n if (potentialEmptyLine.is_empty()) {\n break;\n } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 &&\n potentialEmptyLine.item(-1) !== ends_with) {\n this.__lines.splice(index + 1, 0, new OutputLine(this));\n this.previous_line = this.__lines[this.__lines.length - 2];\n break;\n }\n index--;\n }\n};\n\nmodule.exports.Output = Output;\n",
7
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nfunction Token(type, text, newlines, whitespace_before) {\n this.type = type;\n this.text = text;\n\n // comments_before are\n // comments that have a new line before them\n // and may or may not have a newline after\n // this is a set of comments before\n this.comments_before = null; /* inline comment*/\n\n\n // this.comments_after = new TokenStream(); // no new line before and newline after\n this.newlines = newlines || 0;\n this.whitespace_before = whitespace_before || '';\n this.parent = null;\n this.next = null;\n this.previous = null;\n this.opened = null;\n this.closed = null;\n this.directives = null;\n}\n\n\nmodule.exports.Token = Token;\n",
8
- "/* jshint node: true, curly: false */\n// Parts of this section of code is taken from acorn.\n//\n// Acorn was written by Marijn Haverbeke and released under an MIT\n// license. The Unicode regexps (for identifiers and whitespace) were\n// taken from [Esprima](http://esprima.org) by Ariya Hidayat.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/marijnh/acorn.git\n\n// ## Character categories\n\n\n'use strict';\n\n// acorn used char codes to squeeze the last bit of performance out\n// Beautifier is okay without that, so we're using regex\n// permit # (23), $ (36), and @ (64). @ is used in ES7 decorators.\n// 65 through 91 are uppercase letters.\n// permit _ (95).\n// 97 through 123 are lowercase letters.\nvar baseASCIIidentifierStartChars = \"\\\\x23\\\\x24\\\\x40\\\\x41-\\\\x5a\\\\x5f\\\\x61-\\\\x7a\";\n\n// inside an identifier @ is not allowed but 0-9 are.\nvar baseASCIIidentifierChars = \"\\\\x24\\\\x30-\\\\x39\\\\x41-\\\\x5a\\\\x5f\\\\x61-\\\\x7a\";\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\nvar nonASCIIidentifierStartChars = \"\\\\xaa\\\\xb5\\\\xba\\\\xc0-\\\\xd6\\\\xd8-\\\\xf6\\\\xf8-\\\\u02c1\\\\u02c6-\\\\u02d1\\\\u02e0-\\\\u02e4\\\\u02ec\\\\u02ee\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037a-\\\\u037d\\\\u0386\\\\u0388-\\\\u038a\\\\u038c\\\\u038e-\\\\u03a1\\\\u03a3-\\\\u03f5\\\\u03f7-\\\\u0481\\\\u048a-\\\\u0527\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05d0-\\\\u05ea\\\\u05f0-\\\\u05f2\\\\u0620-\\\\u064a\\\\u066e\\\\u066f\\\\u0671-\\\\u06d3\\\\u06d5\\\\u06e5\\\\u06e6\\\\u06ee\\\\u06ef\\\\u06fa-\\\\u06fc\\\\u06ff\\\\u0710\\\\u0712-\\\\u072f\\\\u074d-\\\\u07a5\\\\u07b1\\\\u07ca-\\\\u07ea\\\\u07f4\\\\u07f5\\\\u07fa\\\\u0800-\\\\u0815\\\\u081a\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08a0\\\\u08a2-\\\\u08ac\\\\u0904-\\\\u0939\\\\u093d\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0977\\\\u0979-\\\\u097f\\\\u0985-\\\\u098c\\\\u098f\\\\u0990\\\\u0993-\\\\u09a8\\\\u09aa-\\\\u09b0\\\\u09b2\\\\u09b6-\\\\u09b9\\\\u09bd\\\\u09ce\\\\u09dc\\\\u09dd\\\\u09df-\\\\u09e1\\\\u09f0\\\\u09f1\\\\u0a05-\\\\u0a0a\\\\u0a0f\\\\u0a10\\\\u0a13-\\\\u0a28\\\\u0a2a-\\\\u0a30\\\\u0a32\\\\u0a33\\\\u0a35\\\\u0a36\\\\u0a38\\\\u0a39\\\\u0a59-\\\\u0a5c\\\\u0a5e\\\\u0a72-\\\\u0a74\\\\u0a85-\\\\u0a8d\\\\u0a8f-\\\\u0a91\\\\u0a93-\\\\u0aa8\\\\u0aaa-\\\\u0ab0\\\\u0ab2\\\\u0ab3\\\\u0ab5-\\\\u0ab9\\\\u0abd\\\\u0ad0\\\\u0ae0\\\\u0ae1\\\\u0b05-\\\\u0b0c\\\\u0b0f\\\\u0b10\\\\u0b13-\\\\u0b28\\\\u0b2a-\\\\u0b30\\\\u0b32\\\\u0b33\\\\u0b35-\\\\u0b39\\\\u0b3d\\\\u0b5c\\\\u0b5d\\\\u0b5f-\\\\u0b61\\\\u0b71\\\\u0b83\\\\u0b85-\\\\u0b8a\\\\u0b8e-\\\\u0b90\\\\u0b92-\\\\u0b95\\\\u0b99\\\\u0b9a\\\\u0b9c\\\\u0b9e\\\\u0b9f\\\\u0ba3\\\\u0ba4\\\\u0ba8-\\\\u0baa\\\\u0bae-\\\\u0bb9\\\\u0bd0\\\\u0c05-\\\\u0c0c\\\\u0c0e-\\\\u0c10\\\\u0c12-\\\\u0c28\\\\u0c2a-\\\\u0c33\\\\u0c35-\\\\u0c39\\\\u0c3d\\\\u0c58\\\\u0c59\\\\u0c60\\\\u0c61\\\\u0c85-\\\\u0c8c\\\\u0c8e-\\\\u0c90\\\\u0c92-\\\\u0ca8\\\\u0caa-\\\\u0cb3\\\\u0cb5-\\\\u0cb9\\\\u0cbd\\\\u0cde\\\\u0ce0\\\\u0ce1\\\\u0cf1\\\\u0cf2\\\\u0d05-\\\\u0d0c\\\\u0d0e-\\\\u0d10\\\\u0d12-\\\\u0d3a\\\\u0d3d\\\\u0d4e\\\\u0d60\\\\u0d61\\\\u0d7a-\\\\u0d7f\\\\u0d85-\\\\u0d96\\\\u0d9a-\\\\u0db1\\\\u0db3-\\\\u0dbb\\\\u0dbd\\\\u0dc0-\\\\u0dc6\\\\u0e01-\\\\u0e30\\\\u0e32\\\\u0e33\\\\u0e40-\\\\u0e46\\\\u0e81\\\\u0e82\\\\u0e84\\\\u0e87\\\\u0e88\\\\u0e8a\\\\u0e8d\\\\u0e94-\\\\u0e97\\\\u0e99-\\\\u0e9f\\\\u0ea1-\\\\u0ea3\\\\u0ea5\\\\u0ea7\\\\u0eaa\\\\u0eab\\\\u0ead-\\\\u0eb0\\\\u0eb2\\\\u0eb3\\\\u0ebd\\\\u0ec0-\\\\u0ec4\\\\u0ec6\\\\u0edc-\\\\u0edf\\\\u0f00\\\\u0f40-\\\\u0f47\\\\u0f49-\\\\u0f6c\\\\u0f88-\\\\u0f8c\\\\u1000-\\\\u102a\\\\u103f\\\\u1050-\\\\u1055\\\\u105a-\\\\u105d\\\\u1061\\\\u1065\\\\u1066\\\\u106e-\\\\u1070\\\\u1075-\\\\u1081\\\\u108e\\\\u10a0-\\\\u10c5\\\\u10c7\\\\u10cd\\\\u10d0-\\\\u10fa\\\\u10fc-\\\\u1248\\\\u124a-\\\\u124d\\\\u1250-\\\\u1256\\\\u1258\\\\u125a-\\\\u125d\\\\u1260-\\\\u1288\\\\u128a-\\\\u128d\\\\u1290-\\\\u12b0\\\\u12b2-\\\\u12b5\\\\u12b8-\\\\u12be\\\\u12c0\\\\u12c2-\\\\u12c5\\\\u12c8-\\\\u12d6\\\\u12d8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135a\\\\u1380-\\\\u138f\\\\u13a0-\\\\u13f4\\\\u1401-\\\\u166c\\\\u166f-\\\\u167f\\\\u1681-\\\\u169a\\\\u16a0-\\\\u16ea\\\\u16ee-\\\\u16f0\\\\u1700-\\\\u170c\\\\u170e-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176c\\\\u176e-\\\\u1770\\\\u1780-\\\\u17b3\\\\u17d7\\\\u17dc\\\\u1820-\\\\u1877\\\\u1880-\\\\u18a8\\\\u18aa\\\\u18b0-\\\\u18f5\\\\u1900-\\\\u191c\\\\u1950-\\\\u196d\\\\u1970-\\\\u1974\\\\u1980-\\\\u19ab\\\\u19c1-\\\\u19c7\\\\u1a00-\\\\u1a16\\\\u1a20-\\\\u1a54\\\\u1aa7\\\\u1b05-\\\\u1b33\\\\u1b45-\\\\u1b4b\\\\u1b83-\\\\u1ba0\\\\u1bae\\\\u1baf\\\\u1bba-\\\\u1be5\\\\u1c00-\\\\u1c23\\\\u1c4d-\\\\u1c4f\\\\u1c5a-\\\\u1c7d\\\\u1ce9-\\\\u1cec\\\\u1cee-\\\\u1cf1\\\\u1cf5\\\\u1cf6\\\\u1d00-\\\\u1dbf\\\\u1e00-\\\\u1f15\\\\u1f18-\\\\u1f1d\\\\u1f20-\\\\u1f45\\\\u1f48-\\\\u1f4d\\\\u1f50-\\\\u1f57\\\\u1f59\\\\u1f5b\\\\u1f5d\\\\u1f5f-\\\\u1f7d\\\\u1f80-\\\\u1fb4\\\\u1fb6-\\\\u1fbc\\\\u1fbe\\\\u1fc2-\\\\u1fc4\\\\u1fc6-\\\\u1fcc\\\\u1fd0-\\\\u1fd3\\\\u1fd6-\\\\u1fdb\\\\u1fe0-\\\\u1fec\\\\u1ff2-\\\\u1ff4\\\\u1ff6-\\\\u1ffc\\\\u2071\\\\u207f\\\\u2090-\\\\u209c\\\\u2102\\\\u2107\\\\u210a-\\\\u2113\\\\u2115\\\\u2119-\\\\u211d\\\\u2124\\\\u2126\\\\u2128\\\\u212a-\\\\u212d\\\\u212f-\\\\u2139\\\\u213c-\\\\u213f\\\\u2145-\\\\u2149\\\\u214e\\\\u2160-\\\\u2188\\\\u2c00-\\\\u2c2e\\\\u2c30-\\\\u2c5e\\\\u2c60-\\\\u2ce4\\\\u2ceb-\\\\u2cee\\\\u2cf2\\\\u2cf3\\\\u2d00-\\\\u2d25\\\\u2d27\\\\u2d2d\\\\u2d30-\\\\u2d67\\\\u2d6f\\\\u2d80-\\\\u2d96\\\\u2da0-\\\\u2da6\\\\u2da8-\\\\u2dae\\\\u2db0-\\\\u2db6\\\\u2db8-\\\\u2dbe\\\\u2dc0-\\\\u2dc6\\\\u2dc8-\\\\u2dce\\\\u2dd0-\\\\u2dd6\\\\u2dd8-\\\\u2dde\\\\u2e2f\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303c\\\\u3041-\\\\u3096\\\\u309d-\\\\u309f\\\\u30a1-\\\\u30fa\\\\u30fc-\\\\u30ff\\\\u3105-\\\\u312d\\\\u3131-\\\\u318e\\\\u31a0-\\\\u31ba\\\\u31f0-\\\\u31ff\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fcc\\\\ua000-\\\\ua48c\\\\ua4d0-\\\\ua4fd\\\\ua500-\\\\ua60c\\\\ua610-\\\\ua61f\\\\ua62a\\\\ua62b\\\\ua640-\\\\ua66e\\\\ua67f-\\\\ua697\\\\ua6a0-\\\\ua6ef\\\\ua717-\\\\ua71f\\\\ua722-\\\\ua788\\\\ua78b-\\\\ua78e\\\\ua790-\\\\ua793\\\\ua7a0-\\\\ua7aa\\\\ua7f8-\\\\ua801\\\\ua803-\\\\ua805\\\\ua807-\\\\ua80a\\\\ua80c-\\\\ua822\\\\ua840-\\\\ua873\\\\ua882-\\\\ua8b3\\\\ua8f2-\\\\ua8f7\\\\ua8fb\\\\ua90a-\\\\ua925\\\\ua930-\\\\ua946\\\\ua960-\\\\ua97c\\\\ua984-\\\\ua9b2\\\\ua9cf\\\\uaa00-\\\\uaa28\\\\uaa40-\\\\uaa42\\\\uaa44-\\\\uaa4b\\\\uaa60-\\\\uaa76\\\\uaa7a\\\\uaa80-\\\\uaaaf\\\\uaab1\\\\uaab5\\\\uaab6\\\\uaab9-\\\\uaabd\\\\uaac0\\\\uaac2\\\\uaadb-\\\\uaadd\\\\uaae0-\\\\uaaea\\\\uaaf2-\\\\uaaf4\\\\uab01-\\\\uab06\\\\uab09-\\\\uab0e\\\\uab11-\\\\uab16\\\\uab20-\\\\uab26\\\\uab28-\\\\uab2e\\\\uabc0-\\\\uabe2\\\\uac00-\\\\ud7a3\\\\ud7b0-\\\\ud7c6\\\\ud7cb-\\\\ud7fb\\\\uf900-\\\\ufa6d\\\\ufa70-\\\\ufad9\\\\ufb00-\\\\ufb06\\\\ufb13-\\\\ufb17\\\\ufb1d\\\\ufb1f-\\\\ufb28\\\\ufb2a-\\\\ufb36\\\\ufb38-\\\\ufb3c\\\\ufb3e\\\\ufb40\\\\ufb41\\\\ufb43\\\\ufb44\\\\ufb46-\\\\ufbb1\\\\ufbd3-\\\\ufd3d\\\\ufd50-\\\\ufd8f\\\\ufd92-\\\\ufdc7\\\\ufdf0-\\\\ufdfb\\\\ufe70-\\\\ufe74\\\\ufe76-\\\\ufefc\\\\uff21-\\\\uff3a\\\\uff41-\\\\uff5a\\\\uff66-\\\\uffbe\\\\uffc2-\\\\uffc7\\\\uffca-\\\\uffcf\\\\uffd2-\\\\uffd7\\\\uffda-\\\\uffdc\";\nvar nonASCIIidentifierChars = \"\\\\u0300-\\\\u036f\\\\u0483-\\\\u0487\\\\u0591-\\\\u05bd\\\\u05bf\\\\u05c1\\\\u05c2\\\\u05c4\\\\u05c5\\\\u05c7\\\\u0610-\\\\u061a\\\\u0620-\\\\u0649\\\\u0672-\\\\u06d3\\\\u06e7-\\\\u06e8\\\\u06fb-\\\\u06fc\\\\u0730-\\\\u074a\\\\u0800-\\\\u0814\\\\u081b-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082d\\\\u0840-\\\\u0857\\\\u08e4-\\\\u08fe\\\\u0900-\\\\u0903\\\\u093a-\\\\u093c\\\\u093e-\\\\u094f\\\\u0951-\\\\u0957\\\\u0962-\\\\u0963\\\\u0966-\\\\u096f\\\\u0981-\\\\u0983\\\\u09bc\\\\u09be-\\\\u09c4\\\\u09c7\\\\u09c8\\\\u09d7\\\\u09df-\\\\u09e0\\\\u0a01-\\\\u0a03\\\\u0a3c\\\\u0a3e-\\\\u0a42\\\\u0a47\\\\u0a48\\\\u0a4b-\\\\u0a4d\\\\u0a51\\\\u0a66-\\\\u0a71\\\\u0a75\\\\u0a81-\\\\u0a83\\\\u0abc\\\\u0abe-\\\\u0ac5\\\\u0ac7-\\\\u0ac9\\\\u0acb-\\\\u0acd\\\\u0ae2-\\\\u0ae3\\\\u0ae6-\\\\u0aef\\\\u0b01-\\\\u0b03\\\\u0b3c\\\\u0b3e-\\\\u0b44\\\\u0b47\\\\u0b48\\\\u0b4b-\\\\u0b4d\\\\u0b56\\\\u0b57\\\\u0b5f-\\\\u0b60\\\\u0b66-\\\\u0b6f\\\\u0b82\\\\u0bbe-\\\\u0bc2\\\\u0bc6-\\\\u0bc8\\\\u0bca-\\\\u0bcd\\\\u0bd7\\\\u0be6-\\\\u0bef\\\\u0c01-\\\\u0c03\\\\u0c46-\\\\u0c48\\\\u0c4a-\\\\u0c4d\\\\u0c55\\\\u0c56\\\\u0c62-\\\\u0c63\\\\u0c66-\\\\u0c6f\\\\u0c82\\\\u0c83\\\\u0cbc\\\\u0cbe-\\\\u0cc4\\\\u0cc6-\\\\u0cc8\\\\u0cca-\\\\u0ccd\\\\u0cd5\\\\u0cd6\\\\u0ce2-\\\\u0ce3\\\\u0ce6-\\\\u0cef\\\\u0d02\\\\u0d03\\\\u0d46-\\\\u0d48\\\\u0d57\\\\u0d62-\\\\u0d63\\\\u0d66-\\\\u0d6f\\\\u0d82\\\\u0d83\\\\u0dca\\\\u0dcf-\\\\u0dd4\\\\u0dd6\\\\u0dd8-\\\\u0ddf\\\\u0df2\\\\u0df3\\\\u0e34-\\\\u0e3a\\\\u0e40-\\\\u0e45\\\\u0e50-\\\\u0e59\\\\u0eb4-\\\\u0eb9\\\\u0ec8-\\\\u0ecd\\\\u0ed0-\\\\u0ed9\\\\u0f18\\\\u0f19\\\\u0f20-\\\\u0f29\\\\u0f35\\\\u0f37\\\\u0f39\\\\u0f41-\\\\u0f47\\\\u0f71-\\\\u0f84\\\\u0f86-\\\\u0f87\\\\u0f8d-\\\\u0f97\\\\u0f99-\\\\u0fbc\\\\u0fc6\\\\u1000-\\\\u1029\\\\u1040-\\\\u1049\\\\u1067-\\\\u106d\\\\u1071-\\\\u1074\\\\u1082-\\\\u108d\\\\u108f-\\\\u109d\\\\u135d-\\\\u135f\\\\u170e-\\\\u1710\\\\u1720-\\\\u1730\\\\u1740-\\\\u1750\\\\u1772\\\\u1773\\\\u1780-\\\\u17b2\\\\u17dd\\\\u17e0-\\\\u17e9\\\\u180b-\\\\u180d\\\\u1810-\\\\u1819\\\\u1920-\\\\u192b\\\\u1930-\\\\u193b\\\\u1951-\\\\u196d\\\\u19b0-\\\\u19c0\\\\u19c8-\\\\u19c9\\\\u19d0-\\\\u19d9\\\\u1a00-\\\\u1a15\\\\u1a20-\\\\u1a53\\\\u1a60-\\\\u1a7c\\\\u1a7f-\\\\u1a89\\\\u1a90-\\\\u1a99\\\\u1b46-\\\\u1b4b\\\\u1b50-\\\\u1b59\\\\u1b6b-\\\\u1b73\\\\u1bb0-\\\\u1bb9\\\\u1be6-\\\\u1bf3\\\\u1c00-\\\\u1c22\\\\u1c40-\\\\u1c49\\\\u1c5b-\\\\u1c7d\\\\u1cd0-\\\\u1cd2\\\\u1d00-\\\\u1dbe\\\\u1e01-\\\\u1f15\\\\u200c\\\\u200d\\\\u203f\\\\u2040\\\\u2054\\\\u20d0-\\\\u20dc\\\\u20e1\\\\u20e5-\\\\u20f0\\\\u2d81-\\\\u2d96\\\\u2de0-\\\\u2dff\\\\u3021-\\\\u3028\\\\u3099\\\\u309a\\\\ua640-\\\\ua66d\\\\ua674-\\\\ua67d\\\\ua69f\\\\ua6f0-\\\\ua6f1\\\\ua7f8-\\\\ua800\\\\ua806\\\\ua80b\\\\ua823-\\\\ua827\\\\ua880-\\\\ua881\\\\ua8b4-\\\\ua8c4\\\\ua8d0-\\\\ua8d9\\\\ua8f3-\\\\ua8f7\\\\ua900-\\\\ua909\\\\ua926-\\\\ua92d\\\\ua930-\\\\ua945\\\\ua980-\\\\ua983\\\\ua9b3-\\\\ua9c0\\\\uaa00-\\\\uaa27\\\\uaa40-\\\\uaa41\\\\uaa4c-\\\\uaa4d\\\\uaa50-\\\\uaa59\\\\uaa7b\\\\uaae0-\\\\uaae9\\\\uaaf2-\\\\uaaf3\\\\uabc0-\\\\uabe1\\\\uabec\\\\uabed\\\\uabf0-\\\\uabf9\\\\ufb20-\\\\ufb28\\\\ufe00-\\\\ufe0f\\\\ufe20-\\\\ufe26\\\\ufe33\\\\ufe34\\\\ufe4d-\\\\ufe4f\\\\uff10-\\\\uff19\\\\uff3f\";\n//var nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\n//var nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\nvar unicodeEscapeOrCodePoint = \"\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\u\\\\{[0-9a-fA-F]+\\\\}\";\nvar identifierStart = \"(?:\" + unicodeEscapeOrCodePoint + \"|[\" + baseASCIIidentifierStartChars + nonASCIIidentifierStartChars + \"])\";\nvar identifierChars = \"(?:\" + unicodeEscapeOrCodePoint + \"|[\" + baseASCIIidentifierChars + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"])*\";\n\nexports.identifier = new RegExp(identifierStart + identifierChars, 'g');\nexports.identifierStart = new RegExp(identifierStart);\nexports.identifierMatch = new RegExp(\"(?:\" + unicodeEscapeOrCodePoint + \"|[\" + baseASCIIidentifierChars + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"])+\");\n\nvar nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/; // jshint ignore:line\n\n// Whether a single character denotes a newline.\n\nexports.newline = /[\\n\\r\\u2028\\u2029]/;\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\n// in javascript, these two differ\n// in python they are the same, different methods are called on them\nexports.lineBreak = new RegExp('\\r\\n|' + exports.newline.source);\nexports.allLineBreaks = new RegExp(exports.lineBreak.source, 'g');\n",
9
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nfunction Options(options, merge_child_field) {\n this.raw_options = _mergeOpts(options, merge_child_field);\n\n // Support passing the source text back with no change\n this.disabled = this._get_boolean('disabled');\n\n this.eol = this._get_characters('eol', 'auto');\n this.end_with_newline = this._get_boolean('end_with_newline');\n this.indent_size = this._get_number('indent_size', 4);\n this.indent_char = this._get_characters('indent_char', ' ');\n this.indent_level = this._get_number('indent_level');\n\n this.preserve_newlines = this._get_boolean('preserve_newlines', true);\n this.max_preserve_newlines = this._get_number('max_preserve_newlines', 32786);\n if (!this.preserve_newlines) {\n this.max_preserve_newlines = 0;\n }\n\n this.indent_with_tabs = this._get_boolean('indent_with_tabs', this.indent_char === '\\t');\n if (this.indent_with_tabs) {\n this.indent_char = '\\t';\n\n // indent_size behavior changed after 1.8.6\n // It used to be that indent_size would be\n // set to 1 for indent_with_tabs. That is no longer needed and\n // actually doesn't make sense - why not use spaces? Further,\n // that might produce unexpected behavior - tabs being used\n // for single-column alignment. So, when indent_with_tabs is true\n // and indent_size is 1, reset indent_size to 4.\n if (this.indent_size === 1) {\n this.indent_size = 4;\n }\n }\n\n // Backwards compat with 1.3.x\n this.wrap_line_length = this._get_number('wrap_line_length', this._get_number('max_char'));\n\n this.indent_empty_lines = this._get_boolean('indent_empty_lines');\n\n // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty', 'angular']\n // For now, 'auto' = all off for javascript, all except angular on for html (and inline javascript/css).\n // other values ignored\n this.templating = this._get_selection_list('templating', ['auto', 'none', 'angular', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']);\n}\n\nOptions.prototype._get_array = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = default_value || [];\n if (typeof option_value === 'object') {\n if (option_value !== null && typeof option_value.concat === 'function') {\n result = option_value.concat();\n }\n } else if (typeof option_value === 'string') {\n result = option_value.split(/[^a-zA-Z0-9_\\/\\-]+/);\n }\n return result;\n};\n\nOptions.prototype._get_boolean = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = option_value === undefined ? !!default_value : !!option_value;\n return result;\n};\n\nOptions.prototype._get_characters = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = default_value || '';\n if (typeof option_value === 'string') {\n result = option_value.replace(/\\\\r/, '\\r').replace(/\\\\n/, '\\n').replace(/\\\\t/, '\\t');\n }\n return result;\n};\n\nOptions.prototype._get_number = function(name, default_value) {\n var option_value = this.raw_options[name];\n default_value = parseInt(default_value, 10);\n if (isNaN(default_value)) {\n default_value = 0;\n }\n var result = parseInt(option_value, 10);\n if (isNaN(result)) {\n result = default_value;\n }\n return result;\n};\n\nOptions.prototype._get_selection = function(name, selection_list, default_value) {\n var result = this._get_selection_list(name, selection_list, default_value);\n if (result.length !== 1) {\n throw new Error(\n \"Invalid Option Value: The option '\" + name + \"' can only be one of the following values:\\n\" +\n selection_list + \"\\nYou passed in: '\" + this.raw_options[name] + \"'\");\n }\n\n return result[0];\n};\n\n\nOptions.prototype._get_selection_list = function(name, selection_list, default_value) {\n if (!selection_list || selection_list.length === 0) {\n throw new Error(\"Selection list cannot be empty.\");\n }\n\n default_value = default_value || [selection_list[0]];\n if (!this._is_valid_selection(default_value, selection_list)) {\n throw new Error(\"Invalid Default Value!\");\n }\n\n var result = this._get_array(name, default_value);\n if (!this._is_valid_selection(result, selection_list)) {\n throw new Error(\n \"Invalid Option Value: The option '\" + name + \"' can contain only the following values:\\n\" +\n selection_list + \"\\nYou passed in: '\" + this.raw_options[name] + \"'\");\n }\n\n return result;\n};\n\nOptions.prototype._is_valid_selection = function(result, selection_list) {\n return result.length && selection_list.length &&\n !result.some(function(item) { return selection_list.indexOf(item) === -1; });\n};\n\n\n// merges child options up with the parent options object\n// Example: obj = {a: 1, b: {a: 2}}\n// mergeOpts(obj, 'b')\n//\n// Returns: {a: 2}\nfunction _mergeOpts(allOptions, childFieldName) {\n var finalOpts = {};\n allOptions = _normalizeOpts(allOptions);\n var name;\n\n for (name in allOptions) {\n if (name !== childFieldName) {\n finalOpts[name] = allOptions[name];\n }\n }\n\n //merge in the per type settings for the childFieldName\n if (childFieldName && allOptions[childFieldName]) {\n for (name in allOptions[childFieldName]) {\n finalOpts[name] = allOptions[childFieldName][name];\n }\n }\n return finalOpts;\n}\n\nfunction _normalizeOpts(options) {\n var convertedOpts = {};\n var key;\n\n for (key in options) {\n var newKey = key.replace(/-/g, \"_\");\n convertedOpts[newKey] = options[key];\n }\n return convertedOpts;\n}\n\nmodule.exports.Options = Options;\nmodule.exports.normalizeOpts = _normalizeOpts;\nmodule.exports.mergeOpts = _mergeOpts;\n",
10
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar BaseOptions = require('../core/options').Options;\n\nvar validPositionValues = ['before-newline', 'after-newline', 'preserve-newline'];\n\nfunction Options(options) {\n BaseOptions.call(this, options, 'js');\n\n // compatibility, re\n var raw_brace_style = this.raw_options.brace_style || null;\n if (raw_brace_style === \"expand-strict\") { //graceful handling of deprecated option\n this.raw_options.brace_style = \"expand\";\n } else if (raw_brace_style === \"collapse-preserve-inline\") { //graceful handling of deprecated option\n this.raw_options.brace_style = \"collapse,preserve-inline\";\n } else if (this.raw_options.braces_on_own_line !== undefined) { //graceful handling of deprecated option\n this.raw_options.brace_style = this.raw_options.braces_on_own_line ? \"expand\" : \"collapse\";\n // } else if (!raw_brace_style) { //Nothing exists to set it\n // raw_brace_style = \"collapse\";\n }\n\n //preserve-inline in delimited string will trigger brace_preserve_inline, everything\n //else is considered a brace_style and the last one only will have an effect\n\n var brace_style_split = this._get_selection_list('brace_style', ['collapse', 'expand', 'end-expand', 'none', 'preserve-inline']);\n\n this.brace_preserve_inline = false; //Defaults in case one or other was not specified in meta-option\n this.brace_style = \"collapse\";\n\n for (var bs = 0; bs < brace_style_split.length; bs++) {\n if (brace_style_split[bs] === \"preserve-inline\") {\n this.brace_preserve_inline = true;\n } else {\n this.brace_style = brace_style_split[bs];\n }\n }\n\n this.unindent_chained_methods = this._get_boolean('unindent_chained_methods');\n this.break_chained_methods = this._get_boolean('break_chained_methods');\n this.space_in_paren = this._get_boolean('space_in_paren');\n this.space_in_empty_paren = this._get_boolean('space_in_empty_paren');\n this.jslint_happy = this._get_boolean('jslint_happy');\n this.space_after_anon_function = this._get_boolean('space_after_anon_function');\n this.space_after_named_function = this._get_boolean('space_after_named_function');\n this.keep_array_indentation = this._get_boolean('keep_array_indentation');\n this.space_before_conditional = this._get_boolean('space_before_conditional', true);\n this.unescape_strings = this._get_boolean('unescape_strings');\n this.e4x = this._get_boolean('e4x');\n this.comma_first = this._get_boolean('comma_first');\n this.operator_position = this._get_selection('operator_position', validPositionValues);\n\n // For testing of beautify preserve:start directive\n this.test_output_raw = this._get_boolean('test_output_raw');\n\n // force this._options.space_after_anon_function to true if this._options.jslint_happy\n if (this.jslint_happy) {\n this.space_after_anon_function = true;\n }\n\n}\nOptions.prototype = new BaseOptions();\n\n\n\nmodule.exports.Options = Options;\n",
11
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar regexp_has_sticky = RegExp.prototype.hasOwnProperty('sticky');\n\nfunction InputScanner(input_string) {\n this.__input = input_string || '';\n this.__input_length = this.__input.length;\n this.__position = 0;\n}\n\nInputScanner.prototype.restart = function() {\n this.__position = 0;\n};\n\nInputScanner.prototype.back = function() {\n if (this.__position > 0) {\n this.__position -= 1;\n }\n};\n\nInputScanner.prototype.hasNext = function() {\n return this.__position < this.__input_length;\n};\n\nInputScanner.prototype.next = function() {\n var val = null;\n if (this.hasNext()) {\n val = this.__input.charAt(this.__position);\n this.__position += 1;\n }\n return val;\n};\n\nInputScanner.prototype.peek = function(index) {\n var val = null;\n index = index || 0;\n index += this.__position;\n if (index >= 0 && index < this.__input_length) {\n val = this.__input.charAt(index);\n }\n return val;\n};\n\n// This is a JavaScript only helper function (not in python)\n// Javascript doesn't have a match method\n// and not all implementation support \"sticky\" flag.\n// If they do not support sticky then both this.match() and this.test() method\n// must get the match and check the index of the match.\n// If sticky is supported and set, this method will use it.\n// Otherwise it will check that global is set, and fall back to the slower method.\nInputScanner.prototype.__match = function(pattern, index) {\n pattern.lastIndex = index;\n var pattern_match = pattern.exec(this.__input);\n\n if (pattern_match && !(regexp_has_sticky && pattern.sticky)) {\n if (pattern_match.index !== index) {\n pattern_match = null;\n }\n }\n\n return pattern_match;\n};\n\nInputScanner.prototype.test = function(pattern, index) {\n index = index || 0;\n index += this.__position;\n\n if (index >= 0 && index < this.__input_length) {\n return !!this.__match(pattern, index);\n } else {\n return false;\n }\n};\n\nInputScanner.prototype.testChar = function(pattern, index) {\n // test one character regex match\n var val = this.peek(index);\n pattern.lastIndex = 0;\n return val !== null && pattern.test(val);\n};\n\nInputScanner.prototype.match = function(pattern) {\n var pattern_match = this.__match(pattern, this.__position);\n if (pattern_match) {\n this.__position += pattern_match[0].length;\n } else {\n pattern_match = null;\n }\n return pattern_match;\n};\n\nInputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) {\n var val = '';\n var match;\n if (starting_pattern) {\n match = this.match(starting_pattern);\n if (match) {\n val += match[0];\n }\n }\n if (until_pattern && (match || !starting_pattern)) {\n val += this.readUntil(until_pattern, until_after);\n }\n return val;\n};\n\nInputScanner.prototype.readUntil = function(pattern, until_after) {\n var val = '';\n var match_index = this.__position;\n pattern.lastIndex = this.__position;\n var pattern_match = pattern.exec(this.__input);\n if (pattern_match) {\n match_index = pattern_match.index;\n if (until_after) {\n match_index += pattern_match[0].length;\n }\n } else {\n match_index = this.__input_length;\n }\n\n val = this.__input.substring(this.__position, match_index);\n this.__position = match_index;\n return val;\n};\n\nInputScanner.prototype.readUntilAfter = function(pattern) {\n return this.readUntil(pattern, true);\n};\n\nInputScanner.prototype.get_regexp = function(pattern, match_from) {\n var result = null;\n var flags = 'g';\n if (match_from && regexp_has_sticky) {\n flags = 'y';\n }\n // strings are converted to regexp\n if (typeof pattern === \"string\" && pattern !== '') {\n // result = new RegExp(pattern.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), flags);\n result = new RegExp(pattern, flags);\n } else if (pattern) {\n result = new RegExp(pattern.source, flags);\n }\n return result;\n};\n\nInputScanner.prototype.get_literal_regexp = function(literal_string) {\n return RegExp(literal_string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'));\n};\n\n/* css beautifier legacy helpers */\nInputScanner.prototype.peekUntilAfter = function(pattern) {\n var start = this.__position;\n var val = this.readUntilAfter(pattern);\n this.__position = start;\n return val;\n};\n\nInputScanner.prototype.lookBack = function(testVal) {\n var start = this.__position - 1;\n return start >= testVal.length && this.__input.substring(start - testVal.length, start)\n .toLowerCase() === testVal;\n};\n\nmodule.exports.InputScanner = InputScanner;\n",
12
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nfunction TokenStream(parent_token) {\n // private\n this.__tokens = [];\n this.__tokens_length = this.__tokens.length;\n this.__position = 0;\n this.__parent_token = parent_token;\n}\n\nTokenStream.prototype.restart = function() {\n this.__position = 0;\n};\n\nTokenStream.prototype.isEmpty = function() {\n return this.__tokens_length === 0;\n};\n\nTokenStream.prototype.hasNext = function() {\n return this.__position < this.__tokens_length;\n};\n\nTokenStream.prototype.next = function() {\n var val = null;\n if (this.hasNext()) {\n val = this.__tokens[this.__position];\n this.__position += 1;\n }\n return val;\n};\n\nTokenStream.prototype.peek = function(index) {\n var val = null;\n index = index || 0;\n index += this.__position;\n if (index >= 0 && index < this.__tokens_length) {\n val = this.__tokens[index];\n }\n return val;\n};\n\nTokenStream.prototype.add = function(token) {\n if (this.__parent_token) {\n token.parent = this.__parent_token;\n }\n this.__tokens.push(token);\n this.__tokens_length += 1;\n};\n\nmodule.exports.TokenStream = TokenStream;\n",
13
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nfunction Pattern(input_scanner, parent) {\n this._input = input_scanner;\n this._starting_pattern = null;\n this._match_pattern = null;\n this._until_pattern = null;\n this._until_after = false;\n\n if (parent) {\n this._starting_pattern = this._input.get_regexp(parent._starting_pattern, true);\n this._match_pattern = this._input.get_regexp(parent._match_pattern, true);\n this._until_pattern = this._input.get_regexp(parent._until_pattern);\n this._until_after = parent._until_after;\n }\n}\n\nPattern.prototype.read = function() {\n var result = this._input.read(this._starting_pattern);\n if (!this._starting_pattern || result) {\n result += this._input.read(this._match_pattern, this._until_pattern, this._until_after);\n }\n return result;\n};\n\nPattern.prototype.read_match = function() {\n return this._input.match(this._match_pattern);\n};\n\nPattern.prototype.until_after = function(pattern) {\n var result = this._create();\n result._until_after = true;\n result._until_pattern = this._input.get_regexp(pattern);\n result._update();\n return result;\n};\n\nPattern.prototype.until = function(pattern) {\n var result = this._create();\n result._until_after = false;\n result._until_pattern = this._input.get_regexp(pattern);\n result._update();\n return result;\n};\n\nPattern.prototype.starting_with = function(pattern) {\n var result = this._create();\n result._starting_pattern = this._input.get_regexp(pattern, true);\n result._update();\n return result;\n};\n\nPattern.prototype.matching = function(pattern) {\n var result = this._create();\n result._match_pattern = this._input.get_regexp(pattern, true);\n result._update();\n return result;\n};\n\nPattern.prototype._create = function() {\n return new Pattern(this._input, this);\n};\n\nPattern.prototype._update = function() {};\n\nmodule.exports.Pattern = Pattern;\n",
14
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar Pattern = require('../core/pattern').Pattern;\n\nfunction WhitespacePattern(input_scanner, parent) {\n Pattern.call(this, input_scanner, parent);\n if (parent) {\n this._line_regexp = this._input.get_regexp(parent._line_regexp);\n } else {\n this.__set_whitespace_patterns('', '');\n }\n\n this.newline_count = 0;\n this.whitespace_before_token = '';\n}\nWhitespacePattern.prototype = new Pattern();\n\nWhitespacePattern.prototype.__set_whitespace_patterns = function(whitespace_chars, newline_chars) {\n whitespace_chars += '\\\\t ';\n newline_chars += '\\\\n\\\\r';\n\n this._match_pattern = this._input.get_regexp(\n '[' + whitespace_chars + newline_chars + ']+', true);\n this._newline_regexp = this._input.get_regexp(\n '\\\\r\\\\n|[' + newline_chars + ']');\n};\n\nWhitespacePattern.prototype.read = function() {\n this.newline_count = 0;\n this.whitespace_before_token = '';\n\n var resulting_string = this._input.read(this._match_pattern);\n if (resulting_string === ' ') {\n this.whitespace_before_token = ' ';\n } else if (resulting_string) {\n var matches = this.__split(this._newline_regexp, resulting_string);\n this.newline_count = matches.length - 1;\n this.whitespace_before_token = matches[this.newline_count];\n }\n\n return resulting_string;\n};\n\nWhitespacePattern.prototype.matching = function(whitespace_chars, newline_chars) {\n var result = this._create();\n result.__set_whitespace_patterns(whitespace_chars, newline_chars);\n result._update();\n return result;\n};\n\nWhitespacePattern.prototype._create = function() {\n return new WhitespacePattern(this._input, this);\n};\n\nWhitespacePattern.prototype.__split = function(regexp, input_string) {\n regexp.lastIndex = 0;\n var start_index = 0;\n var result = [];\n var next_match = regexp.exec(input_string);\n while (next_match) {\n result.push(input_string.substring(start_index, next_match.index));\n start_index = next_match.index + next_match[0].length;\n next_match = regexp.exec(input_string);\n }\n\n if (start_index < input_string.length) {\n result.push(input_string.substring(start_index, input_string.length));\n } else {\n result.push('');\n }\n\n return result;\n};\n\n\n\nmodule.exports.WhitespacePattern = WhitespacePattern;\n",
15
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar InputScanner = require('../core/inputscanner').InputScanner;\nvar Token = require('../core/token').Token;\nvar TokenStream = require('../core/tokenstream').TokenStream;\nvar WhitespacePattern = require('./whitespacepattern').WhitespacePattern;\n\nvar TOKEN = {\n START: 'TK_START',\n RAW: 'TK_RAW',\n EOF: 'TK_EOF'\n};\n\nvar Tokenizer = function(input_string, options) {\n this._input = new InputScanner(input_string);\n this._options = options || {};\n this.__tokens = null;\n\n this._patterns = {};\n this._patterns.whitespace = new WhitespacePattern(this._input);\n};\n\nTokenizer.prototype.tokenize = function() {\n this._input.restart();\n this.__tokens = new TokenStream();\n\n this._reset();\n\n var current;\n var previous = new Token(TOKEN.START, '');\n var open_token = null;\n var open_stack = [];\n var comments = new TokenStream();\n\n while (previous.type !== TOKEN.EOF) {\n current = this._get_next_token(previous, open_token);\n while (this._is_comment(current)) {\n comments.add(current);\n current = this._get_next_token(previous, open_token);\n }\n\n if (!comments.isEmpty()) {\n current.comments_before = comments;\n comments = new TokenStream();\n }\n\n current.parent = open_token;\n\n if (this._is_opening(current)) {\n open_stack.push(open_token);\n open_token = current;\n } else if (open_token && this._is_closing(current, open_token)) {\n current.opened = open_token;\n open_token.closed = current;\n open_token = open_stack.pop();\n current.parent = open_token;\n }\n\n current.previous = previous;\n previous.next = current;\n\n this.__tokens.add(current);\n previous = current;\n }\n\n return this.__tokens;\n};\n\n\nTokenizer.prototype._is_first_token = function() {\n return this.__tokens.isEmpty();\n};\n\nTokenizer.prototype._reset = function() {};\n\nTokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false\n this._readWhitespace();\n var resulting_string = this._input.read(/.+/g);\n if (resulting_string) {\n return this._create_token(TOKEN.RAW, resulting_string);\n } else {\n return this._create_token(TOKEN.EOF, '');\n }\n};\n\nTokenizer.prototype._is_comment = function(current_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._is_opening = function(current_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._is_closing = function(current_token, open_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._create_token = function(type, text) {\n var token = new Token(type, text,\n this._patterns.whitespace.newline_count,\n this._patterns.whitespace.whitespace_before_token);\n return token;\n};\n\nTokenizer.prototype._readWhitespace = function() {\n return this._patterns.whitespace.read();\n};\n\n\n\nmodule.exports.Tokenizer = Tokenizer;\nmodule.exports.TOKEN = TOKEN;\n",
16
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nfunction Directives(start_block_pattern, end_block_pattern) {\n start_block_pattern = typeof start_block_pattern === 'string' ? start_block_pattern : start_block_pattern.source;\n end_block_pattern = typeof end_block_pattern === 'string' ? end_block_pattern : end_block_pattern.source;\n this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \\w+[:]\\w+)+ /.source + end_block_pattern, 'g');\n this.__directive_pattern = / (\\w+)[:](\\w+)/g;\n\n this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\\sbeautify\\signore:end\\s/.source + end_block_pattern, 'g');\n}\n\nDirectives.prototype.get_directives = function(text) {\n if (!text.match(this.__directives_block_pattern)) {\n return null;\n }\n\n var directives = {};\n this.__directive_pattern.lastIndex = 0;\n var directive_match = this.__directive_pattern.exec(text);\n\n while (directive_match) {\n directives[directive_match[1]] = directive_match[2];\n directive_match = this.__directive_pattern.exec(text);\n }\n\n return directives;\n};\n\nDirectives.prototype.readIgnored = function(input) {\n return input.readUntilAfter(this.__directives_end_ignore_pattern);\n};\n\n\nmodule.exports.Directives = Directives;\n",
17
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar Pattern = require('./pattern').Pattern;\n\n\nvar template_names = {\n django: false,\n erb: false,\n handlebars: false,\n php: false,\n smarty: false,\n angular: false\n};\n\n// This lets templates appear anywhere we would do a readUntil\n// The cost is higher but it is pay to play.\nfunction TemplatablePattern(input_scanner, parent) {\n Pattern.call(this, input_scanner, parent);\n this.__template_pattern = null;\n this._disabled = Object.assign({}, template_names);\n this._excluded = Object.assign({}, template_names);\n\n if (parent) {\n this.__template_pattern = this._input.get_regexp(parent.__template_pattern);\n this._excluded = Object.assign(this._excluded, parent._excluded);\n this._disabled = Object.assign(this._disabled, parent._disabled);\n }\n var pattern = new Pattern(input_scanner);\n this.__patterns = {\n handlebars_comment: pattern.starting_with(/{{!--/).until_after(/--}}/),\n handlebars_unescaped: pattern.starting_with(/{{{/).until_after(/}}}/),\n handlebars: pattern.starting_with(/{{/).until_after(/}}/),\n php: pattern.starting_with(/<\\?(?:[= ]|php)/).until_after(/\\?>/),\n erb: pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/),\n // django coflicts with handlebars a bit.\n django: pattern.starting_with(/{%/).until_after(/%}/),\n django_value: pattern.starting_with(/{{/).until_after(/}}/),\n django_comment: pattern.starting_with(/{#/).until_after(/#}/),\n smarty: pattern.starting_with(/{(?=[^}{\\s\\n])/).until_after(/[^\\s\\n]}/),\n smarty_comment: pattern.starting_with(/{\\*/).until_after(/\\*}/),\n smarty_literal: pattern.starting_with(/{literal}/).until_after(/{\\/literal}/)\n };\n}\nTemplatablePattern.prototype = new Pattern();\n\nTemplatablePattern.prototype._create = function() {\n return new TemplatablePattern(this._input, this);\n};\n\nTemplatablePattern.prototype._update = function() {\n this.__set_templated_pattern();\n};\n\nTemplatablePattern.prototype.disable = function(language) {\n var result = this._create();\n result._disabled[language] = true;\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.read_options = function(options) {\n var result = this._create();\n for (var language in template_names) {\n result._disabled[language] = options.templating.indexOf(language) === -1;\n }\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.exclude = function(language) {\n var result = this._create();\n result._excluded[language] = true;\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.read = function() {\n var result = '';\n if (this._match_pattern) {\n result = this._input.read(this._starting_pattern);\n } else {\n result = this._input.read(this._starting_pattern, this.__template_pattern);\n }\n var next = this._read_template();\n while (next) {\n if (this._match_pattern) {\n next += this._input.read(this._match_pattern);\n } else {\n next += this._input.readUntil(this.__template_pattern);\n }\n result += next;\n next = this._read_template();\n }\n\n if (this._until_after) {\n result += this._input.readUntilAfter(this._until_pattern);\n }\n return result;\n};\n\nTemplatablePattern.prototype.__set_templated_pattern = function() {\n var items = [];\n\n if (!this._disabled.php) {\n items.push(this.__patterns.php._starting_pattern.source);\n }\n if (!this._disabled.handlebars) {\n items.push(this.__patterns.handlebars._starting_pattern.source);\n }\n if (!this._disabled.angular) {\n // Handlebars ('{{' and '}}') are also special tokens in Angular)\n items.push(this.__patterns.handlebars._starting_pattern.source);\n }\n if (!this._disabled.erb) {\n items.push(this.__patterns.erb._starting_pattern.source);\n }\n if (!this._disabled.django) {\n items.push(this.__patterns.django._starting_pattern.source);\n // The starting pattern for django is more complex because it has different\n // patterns for value, comment, and other sections\n items.push(this.__patterns.django_value._starting_pattern.source);\n items.push(this.__patterns.django_comment._starting_pattern.source);\n }\n if (!this._disabled.smarty) {\n items.push(this.__patterns.smarty._starting_pattern.source);\n }\n\n if (this._until_pattern) {\n items.push(this._until_pattern.source);\n }\n this.__template_pattern = this._input.get_regexp('(?:' + items.join('|') + ')');\n};\n\nTemplatablePattern.prototype._read_template = function() {\n var resulting_string = '';\n var c = this._input.peek();\n if (c === '<') {\n var peek1 = this._input.peek(1);\n //if we're in a comment, do something special\n // We treat all comments as literals, even more than preformatted tags\n // we just look for the appropriate close tag\n if (!this._disabled.php && !this._excluded.php && peek1 === '?') {\n resulting_string = resulting_string ||\n this.__patterns.php.read();\n }\n if (!this._disabled.erb && !this._excluded.erb && peek1 === '%') {\n resulting_string = resulting_string ||\n this.__patterns.erb.read();\n }\n } else if (c === '{') {\n if (!this._disabled.handlebars && !this._excluded.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.handlebars_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.handlebars_unescaped.read();\n resulting_string = resulting_string ||\n this.__patterns.handlebars.read();\n }\n if (!this._disabled.django) {\n // django coflicts with handlebars a bit.\n if (!this._excluded.django && !this._excluded.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.django_value.read();\n }\n if (!this._excluded.django) {\n resulting_string = resulting_string ||\n this.__patterns.django_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.django.read();\n }\n }\n if (!this._disabled.smarty) {\n // smarty cannot be enabled with django or handlebars enabled\n if (this._disabled.django && this._disabled.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.smarty_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.smarty_literal.read();\n resulting_string = resulting_string ||\n this.__patterns.smarty.read();\n }\n }\n }\n return resulting_string;\n};\n\n\nmodule.exports.TemplatablePattern = TemplatablePattern;\n",
18
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar InputScanner = require('../core/inputscanner').InputScanner;\nvar BaseTokenizer = require('../core/tokenizer').Tokenizer;\nvar BASETOKEN = require('../core/tokenizer').TOKEN;\nvar Directives = require('../core/directives').Directives;\nvar acorn = require('./acorn');\nvar Pattern = require('../core/pattern').Pattern;\nvar TemplatablePattern = require('../core/templatablepattern').TemplatablePattern;\n\n\nfunction in_array(what, arr) {\n return arr.indexOf(what) !== -1;\n}\n\n\nvar TOKEN = {\n START_EXPR: 'TK_START_EXPR',\n END_EXPR: 'TK_END_EXPR',\n START_BLOCK: 'TK_START_BLOCK',\n END_BLOCK: 'TK_END_BLOCK',\n WORD: 'TK_WORD',\n RESERVED: 'TK_RESERVED',\n SEMICOLON: 'TK_SEMICOLON',\n STRING: 'TK_STRING',\n EQUALS: 'TK_EQUALS',\n OPERATOR: 'TK_OPERATOR',\n COMMA: 'TK_COMMA',\n BLOCK_COMMENT: 'TK_BLOCK_COMMENT',\n COMMENT: 'TK_COMMENT',\n DOT: 'TK_DOT',\n UNKNOWN: 'TK_UNKNOWN',\n START: BASETOKEN.START,\n RAW: BASETOKEN.RAW,\n EOF: BASETOKEN.EOF\n};\n\n\nvar directives_core = new Directives(/\\/\\*/, /\\*\\//);\n\nvar number_pattern = /0[xX][0123456789abcdefABCDEF_]*n?|0[oO][01234567_]*n?|0[bB][01_]*n?|\\d[\\d_]*n|(?:\\.\\d[\\d_]*|\\d[\\d_]*\\.?[\\d_]*)(?:[eE][+-]?[\\d_]+)?/;\n\nvar digit = /[0-9]/;\n\n// Dot \".\" must be distinguished from \"...\" and decimal\nvar dot_pattern = /[^\\d\\.]/;\n\nvar positionable_operators = (\n \">>> === !== &&= ??= ||= \" +\n \"<< && >= ** != == <= >> || ?? |> \" +\n \"< / - + > : & % ? ^ | *\").split(' ');\n\n// IMPORTANT: this must be sorted longest to shortest or tokenizing many not work.\n// Also, you must update possitionable operators separately from punct\nvar punct =\n \">>>= \" +\n \"... >>= <<= === >>> !== **= &&= ??= ||= \" +\n \"=> ^= :: /= << <= == && -= >= >> != -- += ** || ?? ++ %= &= *= |= |> \" +\n \"= ! ? > < : / ^ - + * & % ~ |\";\n\npunct = punct.replace(/[-[\\]{}()*+?.,\\\\^$|#]/g, \"\\\\$&\");\n// ?. but not if followed by a number \npunct = '\\\\?\\\\.(?!\\\\d) ' + punct;\npunct = punct.replace(/ /g, '|');\n\nvar punct_pattern = new RegExp(punct);\n\n// words which should always start on new line.\nvar line_starters = 'continue,try,throw,return,var,let,const,if,switch,case,default,for,while,break,function,import,export'.split(',');\nvar reserved_words = line_starters.concat(['do', 'in', 'of', 'else', 'get', 'set', 'new', 'catch', 'finally', 'typeof', 'yield', 'async', 'await', 'from', 'as', 'class', 'extends']);\nvar reserved_word_pattern = new RegExp('^(?:' + reserved_words.join('|') + ')$');\n\n// var template_pattern = /(?:(?:<\\?php|<\\?=)[\\s\\S]*?\\?>)|(?:<%[\\s\\S]*?%>)/g;\n\nvar in_html_comment;\n\nvar Tokenizer = function(input_string, options) {\n BaseTokenizer.call(this, input_string, options);\n\n this._patterns.whitespace = this._patterns.whitespace.matching(\n /\\u00A0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff/.source,\n /\\u2028\\u2029/.source);\n\n var pattern_reader = new Pattern(this._input);\n var templatable = new TemplatablePattern(this._input)\n .read_options(this._options);\n\n this.__patterns = {\n template: templatable,\n identifier: templatable.starting_with(acorn.identifier).matching(acorn.identifierMatch),\n number: pattern_reader.matching(number_pattern),\n punct: pattern_reader.matching(punct_pattern),\n // comment ends just before nearest linefeed or end of file\n comment: pattern_reader.starting_with(/\\/\\//).until(/[\\n\\r\\u2028\\u2029]/),\n // /* ... */ comment ends with nearest */ or end of file\n block_comment: pattern_reader.starting_with(/\\/\\*/).until_after(/\\*\\//),\n html_comment_start: pattern_reader.matching(/<!--/),\n html_comment_end: pattern_reader.matching(/-->/),\n include: pattern_reader.starting_with(/#include/).until_after(acorn.lineBreak),\n shebang: pattern_reader.starting_with(/#!/).until_after(acorn.lineBreak),\n xml: pattern_reader.matching(/[\\s\\S]*?<(\\/?)([-a-zA-Z:0-9_.]+|{[^}]+?}|!\\[CDATA\\[[^\\]]*?\\]\\]|)(\\s*{[^}]+?}|\\s+[-a-zA-Z:0-9_.]+|\\s+[-a-zA-Z:0-9_.]+\\s*=\\s*('[^']*'|\"[^\"]*\"|{([^{}]|{[^}]+?})+?}))*\\s*(\\/?)\\s*>/),\n single_quote: templatable.until(/['\\\\\\n\\r\\u2028\\u2029]/),\n double_quote: templatable.until(/[\"\\\\\\n\\r\\u2028\\u2029]/),\n template_text: templatable.until(/[`\\\\$]/),\n template_expression: templatable.until(/[`}\\\\]/)\n };\n\n};\nTokenizer.prototype = new BaseTokenizer();\n\nTokenizer.prototype._is_comment = function(current_token) {\n return current_token.type === TOKEN.COMMENT || current_token.type === TOKEN.BLOCK_COMMENT || current_token.type === TOKEN.UNKNOWN;\n};\n\nTokenizer.prototype._is_opening = function(current_token) {\n return current_token.type === TOKEN.START_BLOCK || current_token.type === TOKEN.START_EXPR;\n};\n\nTokenizer.prototype._is_closing = function(current_token, open_token) {\n return (current_token.type === TOKEN.END_BLOCK || current_token.type === TOKEN.END_EXPR) &&\n (open_token && (\n (current_token.text === ']' && open_token.text === '[') ||\n (current_token.text === ')' && open_token.text === '(') ||\n (current_token.text === '}' && open_token.text === '{')));\n};\n\nTokenizer.prototype._reset = function() {\n in_html_comment = false;\n};\n\nTokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false\n var token = null;\n this._readWhitespace();\n var c = this._input.peek();\n\n if (c === null) {\n return this._create_token(TOKEN.EOF, '');\n }\n\n token = token || this._read_non_javascript(c);\n token = token || this._read_string(c);\n token = token || this._read_pair(c, this._input.peek(1)); // Issue #2062 hack for record type '#{'\n token = token || this._read_word(previous_token);\n token = token || this._read_singles(c);\n token = token || this._read_comment(c);\n token = token || this._read_regexp(c, previous_token);\n token = token || this._read_xml(c, previous_token);\n token = token || this._read_punctuation();\n token = token || this._create_token(TOKEN.UNKNOWN, this._input.next());\n\n return token;\n};\n\nTokenizer.prototype._read_word = function(previous_token) {\n var resulting_string;\n resulting_string = this.__patterns.identifier.read();\n if (resulting_string !== '') {\n resulting_string = resulting_string.replace(acorn.allLineBreaks, '\\n');\n if (!(previous_token.type === TOKEN.DOT ||\n (previous_token.type === TOKEN.RESERVED && (previous_token.text === 'set' || previous_token.text === 'get'))) &&\n reserved_word_pattern.test(resulting_string)) {\n if ((resulting_string === 'in' || resulting_string === 'of') &&\n (previous_token.type === TOKEN.WORD || previous_token.type === TOKEN.STRING)) { // hack for 'in' and 'of' operators\n return this._create_token(TOKEN.OPERATOR, resulting_string);\n }\n return this._create_token(TOKEN.RESERVED, resulting_string);\n }\n return this._create_token(TOKEN.WORD, resulting_string);\n }\n\n resulting_string = this.__patterns.number.read();\n if (resulting_string !== '') {\n return this._create_token(TOKEN.WORD, resulting_string);\n }\n};\n\nTokenizer.prototype._read_singles = function(c) {\n var token = null;\n if (c === '(' || c === '[') {\n token = this._create_token(TOKEN.START_EXPR, c);\n } else if (c === ')' || c === ']') {\n token = this._create_token(TOKEN.END_EXPR, c);\n } else if (c === '{') {\n token = this._create_token(TOKEN.START_BLOCK, c);\n } else if (c === '}') {\n token = this._create_token(TOKEN.END_BLOCK, c);\n } else if (c === ';') {\n token = this._create_token(TOKEN.SEMICOLON, c);\n } else if (c === '.' && dot_pattern.test(this._input.peek(1))) {\n token = this._create_token(TOKEN.DOT, c);\n } else if (c === ',') {\n token = this._create_token(TOKEN.COMMA, c);\n }\n\n if (token) {\n this._input.next();\n }\n return token;\n};\n\nTokenizer.prototype._read_pair = function(c, d) {\n var token = null;\n if (c === '#' && d === '{') {\n token = this._create_token(TOKEN.START_BLOCK, c + d);\n }\n\n if (token) {\n this._input.next();\n this._input.next();\n }\n return token;\n};\n\nTokenizer.prototype._read_punctuation = function() {\n var resulting_string = this.__patterns.punct.read();\n\n if (resulting_string !== '') {\n if (resulting_string === '=') {\n return this._create_token(TOKEN.EQUALS, resulting_string);\n } else if (resulting_string === '?.') {\n return this._create_token(TOKEN.DOT, resulting_string);\n } else {\n return this._create_token(TOKEN.OPERATOR, resulting_string);\n }\n }\n};\n\nTokenizer.prototype._read_non_javascript = function(c) {\n var resulting_string = '';\n\n if (c === '#') {\n if (this._is_first_token()) {\n resulting_string = this.__patterns.shebang.read();\n\n if (resulting_string) {\n return this._create_token(TOKEN.UNKNOWN, resulting_string.trim() + '\\n');\n }\n }\n\n // handles extendscript #includes\n resulting_string = this.__patterns.include.read();\n\n if (resulting_string) {\n return this._create_token(TOKEN.UNKNOWN, resulting_string.trim() + '\\n');\n }\n\n c = this._input.next();\n\n // Spidermonkey-specific sharp variables for circular references. Considered obsolete.\n var sharp = '#';\n if (this._input.hasNext() && this._input.testChar(digit)) {\n do {\n c = this._input.next();\n sharp += c;\n } while (this._input.hasNext() && c !== '#' && c !== '=');\n if (c === '#') {\n //\n } else if (this._input.peek() === '[' && this._input.peek(1) === ']') {\n sharp += '[]';\n this._input.next();\n this._input.next();\n } else if (this._input.peek() === '{' && this._input.peek(1) === '}') {\n sharp += '{}';\n this._input.next();\n this._input.next();\n }\n return this._create_token(TOKEN.WORD, sharp);\n }\n\n this._input.back();\n\n } else if (c === '<' && this._is_first_token()) {\n resulting_string = this.__patterns.html_comment_start.read();\n if (resulting_string) {\n while (this._input.hasNext() && !this._input.testChar(acorn.newline)) {\n resulting_string += this._input.next();\n }\n in_html_comment = true;\n return this._create_token(TOKEN.COMMENT, resulting_string);\n }\n } else if (in_html_comment && c === '-') {\n resulting_string = this.__patterns.html_comment_end.read();\n if (resulting_string) {\n in_html_comment = false;\n return this._create_token(TOKEN.COMMENT, resulting_string);\n }\n }\n\n return null;\n};\n\nTokenizer.prototype._read_comment = function(c) {\n var token = null;\n if (c === '/') {\n var comment = '';\n if (this._input.peek(1) === '*') {\n // peek for comment /* ... */\n comment = this.__patterns.block_comment.read();\n var directives = directives_core.get_directives(comment);\n if (directives && directives.ignore === 'start') {\n comment += directives_core.readIgnored(this._input);\n }\n comment = comment.replace(acorn.allLineBreaks, '\\n');\n token = this._create_token(TOKEN.BLOCK_COMMENT, comment);\n token.directives = directives;\n } else if (this._input.peek(1) === '/') {\n // peek for comment // ...\n comment = this.__patterns.comment.read();\n token = this._create_token(TOKEN.COMMENT, comment);\n }\n }\n return token;\n};\n\nTokenizer.prototype._read_string = function(c) {\n if (c === '`' || c === \"'\" || c === '\"') {\n var resulting_string = this._input.next();\n this.has_char_escapes = false;\n\n if (c === '`') {\n resulting_string += this._read_string_recursive('`', true, '${');\n } else {\n resulting_string += this._read_string_recursive(c);\n }\n\n if (this.has_char_escapes && this._options.unescape_strings) {\n resulting_string = unescape_string(resulting_string);\n }\n\n if (this._input.peek() === c) {\n resulting_string += this._input.next();\n }\n\n resulting_string = resulting_string.replace(acorn.allLineBreaks, '\\n');\n\n return this._create_token(TOKEN.STRING, resulting_string);\n }\n\n return null;\n};\n\nTokenizer.prototype._allow_regexp_or_xml = function(previous_token) {\n // regex and xml can only appear in specific locations during parsing\n return (previous_token.type === TOKEN.RESERVED && in_array(previous_token.text, ['return', 'case', 'throw', 'else', 'do', 'typeof', 'yield'])) ||\n (previous_token.type === TOKEN.END_EXPR && previous_token.text === ')' &&\n previous_token.opened.previous.type === TOKEN.RESERVED && in_array(previous_token.opened.previous.text, ['if', 'while', 'for'])) ||\n (in_array(previous_token.type, [TOKEN.COMMENT, TOKEN.START_EXPR, TOKEN.START_BLOCK, TOKEN.START,\n TOKEN.END_BLOCK, TOKEN.OPERATOR, TOKEN.EQUALS, TOKEN.EOF, TOKEN.SEMICOLON, TOKEN.COMMA\n ]));\n};\n\nTokenizer.prototype._read_regexp = function(c, previous_token) {\n\n if (c === '/' && this._allow_regexp_or_xml(previous_token)) {\n // handle regexp\n //\n var resulting_string = this._input.next();\n var esc = false;\n\n var in_char_class = false;\n while (this._input.hasNext() &&\n ((esc || in_char_class || this._input.peek() !== c) &&\n !this._input.testChar(acorn.newline))) {\n resulting_string += this._input.peek();\n if (!esc) {\n esc = this._input.peek() === '\\\\';\n if (this._input.peek() === '[') {\n in_char_class = true;\n } else if (this._input.peek() === ']') {\n in_char_class = false;\n }\n } else {\n esc = false;\n }\n this._input.next();\n }\n\n if (this._input.peek() === c) {\n resulting_string += this._input.next();\n\n // regexps may have modifiers /regexp/MOD , so fetch those, too\n // Only [gim] are valid, but if the user puts in garbage, do what we can to take it.\n resulting_string += this._input.read(acorn.identifier);\n }\n return this._create_token(TOKEN.STRING, resulting_string);\n }\n return null;\n};\n\nTokenizer.prototype._read_xml = function(c, previous_token) {\n\n if (this._options.e4x && c === \"<\" && this._allow_regexp_or_xml(previous_token)) {\n var xmlStr = '';\n var match = this.__patterns.xml.read_match();\n // handle e4x xml literals\n //\n if (match) {\n // Trim root tag to attempt to\n var rootTag = match[2].replace(/^{\\s+/, '{').replace(/\\s+}$/, '}');\n var isCurlyRoot = rootTag.indexOf('{') === 0;\n var depth = 0;\n while (match) {\n var isEndTag = !!match[1];\n var tagName = match[2];\n var isSingletonTag = (!!match[match.length - 1]) || (tagName.slice(0, 8) === \"![CDATA[\");\n if (!isSingletonTag &&\n (tagName === rootTag || (isCurlyRoot && tagName.replace(/^{\\s+/, '{').replace(/\\s+}$/, '}')))) {\n if (isEndTag) {\n --depth;\n } else {\n ++depth;\n }\n }\n xmlStr += match[0];\n if (depth <= 0) {\n break;\n }\n match = this.__patterns.xml.read_match();\n }\n // if we didn't close correctly, keep unformatted.\n if (!match) {\n xmlStr += this._input.match(/[\\s\\S]*/g)[0];\n }\n xmlStr = xmlStr.replace(acorn.allLineBreaks, '\\n');\n return this._create_token(TOKEN.STRING, xmlStr);\n }\n }\n\n return null;\n};\n\nfunction unescape_string(s) {\n // You think that a regex would work for this\n // return s.replace(/\\\\x([0-9a-f]{2})/gi, function(match, val) {\n // return String.fromCharCode(parseInt(val, 16));\n // })\n // However, dealing with '\\xff', '\\\\xff', '\\\\\\xff' makes this more fun.\n var out = '',\n escaped = 0;\n\n var input_scan = new InputScanner(s);\n var matched = null;\n\n while (input_scan.hasNext()) {\n // Keep any whitespace, non-slash characters\n // also keep slash pairs.\n matched = input_scan.match(/([\\s]|[^\\\\]|\\\\\\\\)+/g);\n\n if (matched) {\n out += matched[0];\n }\n\n if (input_scan.peek() === '\\\\') {\n input_scan.next();\n if (input_scan.peek() === 'x') {\n matched = input_scan.match(/x([0-9A-Fa-f]{2})/g);\n } else if (input_scan.peek() === 'u') {\n matched = input_scan.match(/u([0-9A-Fa-f]{4})/g);\n if (!matched) {\n matched = input_scan.match(/u\\{([0-9A-Fa-f]+)\\}/g);\n }\n } else {\n out += '\\\\';\n if (input_scan.hasNext()) {\n out += input_scan.next();\n }\n continue;\n }\n\n // If there's some error decoding, return the original string\n if (!matched) {\n return s;\n }\n\n escaped = parseInt(matched[1], 16);\n\n if (escaped > 0x7e && escaped <= 0xff && matched[0].indexOf('x') === 0) {\n // we bail out on \\x7f..\\xff,\n // leaving whole string escaped,\n // as it's probably completely binary\n return s;\n } else if (escaped >= 0x00 && escaped < 0x20) {\n // leave 0x00...0x1f escaped\n out += '\\\\' + matched[0];\n } else if (escaped > 0x10FFFF) {\n // If the escape sequence is out of bounds, keep the original sequence and continue conversion\n out += '\\\\' + matched[0];\n } else if (escaped === 0x22 || escaped === 0x27 || escaped === 0x5c) {\n // single-quote, apostrophe, backslash - escape these\n out += '\\\\' + String.fromCharCode(escaped);\n } else {\n out += String.fromCharCode(escaped);\n }\n }\n }\n\n return out;\n}\n\n// handle string\n//\nTokenizer.prototype._read_string_recursive = function(delimiter, allow_unescaped_newlines, start_sub) {\n var current_char;\n var pattern;\n if (delimiter === '\\'') {\n pattern = this.__patterns.single_quote;\n } else if (delimiter === '\"') {\n pattern = this.__patterns.double_quote;\n } else if (delimiter === '`') {\n pattern = this.__patterns.template_text;\n } else if (delimiter === '}') {\n pattern = this.__patterns.template_expression;\n }\n\n var resulting_string = pattern.read();\n var next = '';\n while (this._input.hasNext()) {\n next = this._input.next();\n if (next === delimiter ||\n (!allow_unescaped_newlines && acorn.newline.test(next))) {\n this._input.back();\n break;\n } else if (next === '\\\\' && this._input.hasNext()) {\n current_char = this._input.peek();\n\n if (current_char === 'x' || current_char === 'u') {\n this.has_char_escapes = true;\n } else if (current_char === '\\r' && this._input.peek(1) === '\\n') {\n this._input.next();\n }\n next += this._input.next();\n } else if (start_sub) {\n if (start_sub === '${' && next === '$' && this._input.peek() === '{') {\n next += this._input.next();\n }\n\n if (start_sub === next) {\n if (delimiter === '`') {\n next += this._read_string_recursive('}', allow_unescaped_newlines, '`');\n } else {\n next += this._read_string_recursive('`', allow_unescaped_newlines, '${');\n }\n if (this._input.hasNext()) {\n next += this._input.next();\n }\n }\n }\n next += pattern.read();\n resulting_string += next;\n }\n\n return resulting_string;\n};\n\nmodule.exports.Tokenizer = Tokenizer;\nmodule.exports.TOKEN = TOKEN;\nmodule.exports.positionable_operators = positionable_operators.slice();\nmodule.exports.line_starters = line_starters.slice();\n",
19
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar Output = require('../core/output').Output;\nvar Token = require('../core/token').Token;\nvar acorn = require('./acorn');\nvar Options = require('./options').Options;\nvar Tokenizer = require('./tokenizer').Tokenizer;\nvar line_starters = require('./tokenizer').line_starters;\nvar positionable_operators = require('./tokenizer').positionable_operators;\nvar TOKEN = require('./tokenizer').TOKEN;\n\n\nfunction in_array(what, arr) {\n return arr.indexOf(what) !== -1;\n}\n\nfunction ltrim(s) {\n return s.replace(/^\\s+/g, '');\n}\n\nfunction generateMapFromStrings(list) {\n var result = {};\n for (var x = 0; x < list.length; x++) {\n // make the mapped names underscored instead of dash\n result[list[x].replace(/-/g, '_')] = list[x];\n }\n return result;\n}\n\nfunction reserved_word(token, word) {\n return token && token.type === TOKEN.RESERVED && token.text === word;\n}\n\nfunction reserved_array(token, words) {\n return token && token.type === TOKEN.RESERVED && in_array(token.text, words);\n}\n// Unsure of what they mean, but they work. Worth cleaning up in future.\nvar special_words = ['case', 'return', 'do', 'if', 'throw', 'else', 'await', 'break', 'continue', 'async'];\n\nvar validPositionValues = ['before-newline', 'after-newline', 'preserve-newline'];\n\n// Generate map from array\nvar OPERATOR_POSITION = generateMapFromStrings(validPositionValues);\n\nvar OPERATOR_POSITION_BEFORE_OR_PRESERVE = [OPERATOR_POSITION.before_newline, OPERATOR_POSITION.preserve_newline];\n\nvar MODE = {\n BlockStatement: 'BlockStatement', // 'BLOCK'\n Statement: 'Statement', // 'STATEMENT'\n ObjectLiteral: 'ObjectLiteral', // 'OBJECT',\n ArrayLiteral: 'ArrayLiteral', //'[EXPRESSION]',\n ForInitializer: 'ForInitializer', //'(FOR-EXPRESSION)',\n Conditional: 'Conditional', //'(COND-EXPRESSION)',\n Expression: 'Expression' //'(EXPRESSION)'\n};\n\nfunction remove_redundant_indentation(output, frame) {\n // This implementation is effective but has some issues:\n // - can cause line wrap to happen too soon due to indent removal\n // after wrap points are calculated\n // These issues are minor compared to ugly indentation.\n\n if (frame.multiline_frame ||\n frame.mode === MODE.ForInitializer ||\n frame.mode === MODE.Conditional) {\n return;\n }\n\n // remove one indent from each line inside this section\n output.remove_indent(frame.start_line_index);\n}\n\n// we could use just string.split, but\n// IE doesn't like returning empty strings\nfunction split_linebreaks(s) {\n //return s.split(/\\x0d\\x0a|\\x0a/);\n\n s = s.replace(acorn.allLineBreaks, '\\n');\n var out = [],\n idx = s.indexOf(\"\\n\");\n while (idx !== -1) {\n out.push(s.substring(0, idx));\n s = s.substring(idx + 1);\n idx = s.indexOf(\"\\n\");\n }\n if (s.length) {\n out.push(s);\n }\n return out;\n}\n\nfunction is_array(mode) {\n return mode === MODE.ArrayLiteral;\n}\n\nfunction is_expression(mode) {\n return in_array(mode, [MODE.Expression, MODE.ForInitializer, MODE.Conditional]);\n}\n\nfunction all_lines_start_with(lines, c) {\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i].trim();\n if (line.charAt(0) !== c) {\n return false;\n }\n }\n return true;\n}\n\nfunction each_line_matches_indent(lines, indent) {\n var i = 0,\n len = lines.length,\n line;\n for (; i < len; i++) {\n line = lines[i];\n // allow empty lines to pass through\n if (line && line.indexOf(indent) !== 0) {\n return false;\n }\n }\n return true;\n}\n\n\nfunction Beautifier(source_text, options) {\n options = options || {};\n this._source_text = source_text || '';\n\n this._output = null;\n this._tokens = null;\n this._last_last_text = null;\n this._flags = null;\n this._previous_flags = null;\n\n this._flag_store = null;\n this._options = new Options(options);\n}\n\nBeautifier.prototype.create_flags = function(flags_base, mode) {\n var next_indent_level = 0;\n if (flags_base) {\n next_indent_level = flags_base.indentation_level;\n if (!this._output.just_added_newline() &&\n flags_base.line_indent_level > next_indent_level) {\n next_indent_level = flags_base.line_indent_level;\n }\n }\n\n var next_flags = {\n mode: mode,\n parent: flags_base,\n last_token: flags_base ? flags_base.last_token : new Token(TOKEN.START_BLOCK, ''), // last token text\n last_word: flags_base ? flags_base.last_word : '', // last TOKEN.WORD passed\n declaration_statement: false,\n declaration_assignment: false,\n multiline_frame: false,\n inline_frame: false,\n if_block: false,\n else_block: false,\n class_start_block: false, // class A { INSIDE HERE } or class B extends C { INSIDE HERE }\n do_block: false,\n do_while: false,\n import_block: false,\n in_case_statement: false, // switch(..){ INSIDE HERE }\n in_case: false, // we're on the exact line with \"case 0:\"\n case_body: false, // the indented case-action block\n case_block: false, // the indented case-action block is wrapped with {}\n indentation_level: next_indent_level,\n alignment: 0,\n line_indent_level: flags_base ? flags_base.line_indent_level : next_indent_level,\n start_line_index: this._output.get_line_number(),\n ternary_depth: 0\n };\n return next_flags;\n};\n\nBeautifier.prototype._reset = function(source_text) {\n var baseIndentString = source_text.match(/^[\\t ]*/)[0];\n\n this._last_last_text = ''; // pre-last token text\n this._output = new Output(this._options, baseIndentString);\n\n // If testing the ignore directive, start with output disable set to true\n this._output.raw = this._options.test_output_raw;\n\n\n // Stack of parsing/formatting states, including MODE.\n // We tokenize, parse, and output in an almost purely a forward-only stream of token input\n // and formatted output. This makes the beautifier less accurate than full parsers\n // but also far more tolerant of syntax errors.\n //\n // For example, the default mode is MODE.BlockStatement. If we see a '{' we push a new frame of type\n // MODE.BlockStatement on the the stack, even though it could be object literal. If we later\n // encounter a \":\", we'll switch to to MODE.ObjectLiteral. If we then see a \";\",\n // most full parsers would die, but the beautifier gracefully falls back to\n // MODE.BlockStatement and continues on.\n this._flag_store = [];\n this.set_mode(MODE.BlockStatement);\n var tokenizer = new Tokenizer(source_text, this._options);\n this._tokens = tokenizer.tokenize();\n return source_text;\n};\n\nBeautifier.prototype.beautify = function() {\n // if disabled, return the input unchanged.\n if (this._options.disabled) {\n return this._source_text;\n }\n\n var sweet_code;\n var source_text = this._reset(this._source_text);\n\n var eol = this._options.eol;\n if (this._options.eol === 'auto') {\n eol = '\\n';\n if (source_text && acorn.lineBreak.test(source_text || '')) {\n eol = source_text.match(acorn.lineBreak)[0];\n }\n }\n\n var current_token = this._tokens.next();\n while (current_token) {\n this.handle_token(current_token);\n\n this._last_last_text = this._flags.last_token.text;\n this._flags.last_token = current_token;\n\n current_token = this._tokens.next();\n }\n\n sweet_code = this._output.get_code(eol);\n\n return sweet_code;\n};\n\nBeautifier.prototype.handle_token = function(current_token, preserve_statement_flags) {\n if (current_token.type === TOKEN.START_EXPR) {\n this.handle_start_expr(current_token);\n } else if (current_token.type === TOKEN.END_EXPR) {\n this.handle_end_expr(current_token);\n } else if (current_token.type === TOKEN.START_BLOCK) {\n this.handle_start_block(current_token);\n } else if (current_token.type === TOKEN.END_BLOCK) {\n this.handle_end_block(current_token);\n } else if (current_token.type === TOKEN.WORD) {\n this.handle_word(current_token);\n } else if (current_token.type === TOKEN.RESERVED) {\n this.handle_word(current_token);\n } else if (current_token.type === TOKEN.SEMICOLON) {\n this.handle_semicolon(current_token);\n } else if (current_token.type === TOKEN.STRING) {\n this.handle_string(current_token);\n } else if (current_token.type === TOKEN.EQUALS) {\n this.handle_equals(current_token);\n } else if (current_token.type === TOKEN.OPERATOR) {\n this.handle_operator(current_token);\n } else if (current_token.type === TOKEN.COMMA) {\n this.handle_comma(current_token);\n } else if (current_token.type === TOKEN.BLOCK_COMMENT) {\n this.handle_block_comment(current_token, preserve_statement_flags);\n } else if (current_token.type === TOKEN.COMMENT) {\n this.handle_comment(current_token, preserve_statement_flags);\n } else if (current_token.type === TOKEN.DOT) {\n this.handle_dot(current_token);\n } else if (current_token.type === TOKEN.EOF) {\n this.handle_eof(current_token);\n } else if (current_token.type === TOKEN.UNKNOWN) {\n this.handle_unknown(current_token, preserve_statement_flags);\n } else {\n this.handle_unknown(current_token, preserve_statement_flags);\n }\n};\n\nBeautifier.prototype.handle_whitespace_and_comments = function(current_token, preserve_statement_flags) {\n var newlines = current_token.newlines;\n var keep_whitespace = this._options.keep_array_indentation && is_array(this._flags.mode);\n\n if (current_token.comments_before) {\n var comment_token = current_token.comments_before.next();\n while (comment_token) {\n // The cleanest handling of inline comments is to treat them as though they aren't there.\n // Just continue formatting and the behavior should be logical.\n // Also ignore unknown tokens. Again, this should result in better behavior.\n this.handle_whitespace_and_comments(comment_token, preserve_statement_flags);\n this.handle_token(comment_token, preserve_statement_flags);\n comment_token = current_token.comments_before.next();\n }\n }\n\n if (keep_whitespace) {\n for (var i = 0; i < newlines; i += 1) {\n this.print_newline(i > 0, preserve_statement_flags);\n }\n } else {\n if (this._options.max_preserve_newlines && newlines > this._options.max_preserve_newlines) {\n newlines = this._options.max_preserve_newlines;\n }\n\n if (this._options.preserve_newlines) {\n if (newlines > 1) {\n this.print_newline(false, preserve_statement_flags);\n for (var j = 1; j < newlines; j += 1) {\n this.print_newline(true, preserve_statement_flags);\n }\n }\n }\n }\n\n};\n\nvar newline_restricted_tokens = ['async', 'break', 'continue', 'return', 'throw', 'yield'];\n\nBeautifier.prototype.allow_wrap_or_preserved_newline = function(current_token, force_linewrap) {\n force_linewrap = (force_linewrap === undefined) ? false : force_linewrap;\n\n // Never wrap the first token on a line\n if (this._output.just_added_newline()) {\n return;\n }\n\n var shouldPreserveOrForce = (this._options.preserve_newlines && current_token.newlines) || force_linewrap;\n var operatorLogicApplies = in_array(this._flags.last_token.text, positionable_operators) ||\n in_array(current_token.text, positionable_operators);\n\n if (operatorLogicApplies) {\n var shouldPrintOperatorNewline = (\n in_array(this._flags.last_token.text, positionable_operators) &&\n in_array(this._options.operator_position, OPERATOR_POSITION_BEFORE_OR_PRESERVE)\n ) ||\n in_array(current_token.text, positionable_operators);\n shouldPreserveOrForce = shouldPreserveOrForce && shouldPrintOperatorNewline;\n }\n\n if (shouldPreserveOrForce) {\n this.print_newline(false, true);\n } else if (this._options.wrap_line_length) {\n if (reserved_array(this._flags.last_token, newline_restricted_tokens)) {\n // These tokens should never have a newline inserted\n // between them and the following expression.\n return;\n }\n this._output.set_wrap_point();\n }\n};\n\nBeautifier.prototype.print_newline = function(force_newline, preserve_statement_flags) {\n if (!preserve_statement_flags) {\n if (this._flags.last_token.text !== ';' && this._flags.last_token.text !== ',' && this._flags.last_token.text !== '=' && (this._flags.last_token.type !== TOKEN.OPERATOR || this._flags.last_token.text === '--' || this._flags.last_token.text === '++')) {\n var next_token = this._tokens.peek();\n while (this._flags.mode === MODE.Statement &&\n !(this._flags.if_block && reserved_word(next_token, 'else')) &&\n !this._flags.do_block) {\n this.restore_mode();\n }\n }\n }\n\n if (this._output.add_new_line(force_newline)) {\n this._flags.multiline_frame = true;\n }\n};\n\nBeautifier.prototype.print_token_line_indentation = function(current_token) {\n if (this._output.just_added_newline()) {\n if (this._options.keep_array_indentation &&\n current_token.newlines &&\n (current_token.text === '[' || is_array(this._flags.mode))) {\n this._output.current_line.set_indent(-1);\n this._output.current_line.push(current_token.whitespace_before);\n this._output.space_before_token = false;\n } else if (this._output.set_indent(this._flags.indentation_level, this._flags.alignment)) {\n this._flags.line_indent_level = this._flags.indentation_level;\n }\n }\n};\n\nBeautifier.prototype.print_token = function(current_token) {\n if (this._output.raw) {\n this._output.add_raw_token(current_token);\n return;\n }\n\n if (this._options.comma_first && current_token.previous && current_token.previous.type === TOKEN.COMMA &&\n this._output.just_added_newline()) {\n if (this._output.previous_line.last() === ',') {\n var popped = this._output.previous_line.pop();\n // if the comma was already at the start of the line,\n // pull back onto that line and reprint the indentation\n if (this._output.previous_line.is_empty()) {\n this._output.previous_line.push(popped);\n this._output.trim(true);\n this._output.current_line.pop();\n this._output.trim();\n }\n\n // add the comma in front of the next token\n this.print_token_line_indentation(current_token);\n this._output.add_token(',');\n this._output.space_before_token = true;\n }\n }\n\n this.print_token_line_indentation(current_token);\n this._output.non_breaking_space = true;\n this._output.add_token(current_token.text);\n if (this._output.previous_token_wrapped) {\n this._flags.multiline_frame = true;\n }\n};\n\nBeautifier.prototype.indent = function() {\n this._flags.indentation_level += 1;\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n};\n\nBeautifier.prototype.deindent = function() {\n if (this._flags.indentation_level > 0 &&\n ((!this._flags.parent) || this._flags.indentation_level > this._flags.parent.indentation_level)) {\n this._flags.indentation_level -= 1;\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n }\n};\n\nBeautifier.prototype.set_mode = function(mode) {\n if (this._flags) {\n this._flag_store.push(this._flags);\n this._previous_flags = this._flags;\n } else {\n this._previous_flags = this.create_flags(null, mode);\n }\n\n this._flags = this.create_flags(this._previous_flags, mode);\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n};\n\n\nBeautifier.prototype.restore_mode = function() {\n if (this._flag_store.length > 0) {\n this._previous_flags = this._flags;\n this._flags = this._flag_store.pop();\n if (this._previous_flags.mode === MODE.Statement) {\n remove_redundant_indentation(this._output, this._previous_flags);\n }\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n }\n};\n\nBeautifier.prototype.start_of_object_property = function() {\n return this._flags.parent.mode === MODE.ObjectLiteral && this._flags.mode === MODE.Statement && (\n (this._flags.last_token.text === ':' && this._flags.ternary_depth === 0) || (reserved_array(this._flags.last_token, ['get', 'set'])));\n};\n\nBeautifier.prototype.start_of_statement = function(current_token) {\n var start = false;\n start = start || reserved_array(this._flags.last_token, ['var', 'let', 'const']) && current_token.type === TOKEN.WORD;\n start = start || reserved_word(this._flags.last_token, 'do');\n start = start || (!(this._flags.parent.mode === MODE.ObjectLiteral && this._flags.mode === MODE.Statement)) && reserved_array(this._flags.last_token, newline_restricted_tokens) && !current_token.newlines;\n start = start || reserved_word(this._flags.last_token, 'else') &&\n !(reserved_word(current_token, 'if') && !current_token.comments_before);\n start = start || (this._flags.last_token.type === TOKEN.END_EXPR && (this._previous_flags.mode === MODE.ForInitializer || this._previous_flags.mode === MODE.Conditional));\n start = start || (this._flags.last_token.type === TOKEN.WORD && this._flags.mode === MODE.BlockStatement &&\n !this._flags.in_case &&\n !(current_token.text === '--' || current_token.text === '++') &&\n this._last_last_text !== 'function' &&\n current_token.type !== TOKEN.WORD && current_token.type !== TOKEN.RESERVED);\n start = start || (this._flags.mode === MODE.ObjectLiteral && (\n (this._flags.last_token.text === ':' && this._flags.ternary_depth === 0) || reserved_array(this._flags.last_token, ['get', 'set'])));\n\n if (start) {\n this.set_mode(MODE.Statement);\n this.indent();\n\n this.handle_whitespace_and_comments(current_token, true);\n\n // Issue #276:\n // If starting a new statement with [if, for, while, do], push to a new line.\n // if (a) if (b) if(c) d(); else e(); else f();\n if (!this.start_of_object_property()) {\n this.allow_wrap_or_preserved_newline(current_token,\n reserved_array(current_token, ['do', 'for', 'if', 'while']));\n }\n return true;\n }\n return false;\n};\n\nBeautifier.prototype.handle_start_expr = function(current_token) {\n // The conditional starts the statement if appropriate.\n if (!this.start_of_statement(current_token)) {\n this.handle_whitespace_and_comments(current_token);\n }\n\n var next_mode = MODE.Expression;\n if (current_token.text === '[') {\n\n if (this._flags.last_token.type === TOKEN.WORD || this._flags.last_token.text === ')') {\n // this is array index specifier, break immediately\n // a[x], fn()[x]\n if (reserved_array(this._flags.last_token, line_starters)) {\n this._output.space_before_token = true;\n }\n this.print_token(current_token);\n this.set_mode(next_mode);\n this.indent();\n if (this._options.space_in_paren) {\n this._output.space_before_token = true;\n }\n return;\n }\n\n next_mode = MODE.ArrayLiteral;\n if (is_array(this._flags.mode)) {\n if (this._flags.last_token.text === '[' ||\n (this._flags.last_token.text === ',' && (this._last_last_text === ']' || this._last_last_text === '}'))) {\n // ], [ goes to new line\n // }, [ goes to new line\n if (!this._options.keep_array_indentation) {\n this.print_newline();\n }\n }\n }\n\n if (!in_array(this._flags.last_token.type, [TOKEN.START_EXPR, TOKEN.END_EXPR, TOKEN.WORD, TOKEN.OPERATOR, TOKEN.DOT])) {\n this._output.space_before_token = true;\n }\n } else {\n if (this._flags.last_token.type === TOKEN.RESERVED) {\n if (this._flags.last_token.text === 'for') {\n this._output.space_before_token = this._options.space_before_conditional;\n next_mode = MODE.ForInitializer;\n } else if (in_array(this._flags.last_token.text, ['if', 'while', 'switch'])) {\n this._output.space_before_token = this._options.space_before_conditional;\n next_mode = MODE.Conditional;\n } else if (in_array(this._flags.last_word, ['await', 'async'])) {\n // Should be a space between await and an IIFE, or async and an arrow function\n this._output.space_before_token = true;\n } else if (this._flags.last_token.text === 'import' && current_token.whitespace_before === '') {\n this._output.space_before_token = false;\n } else if (in_array(this._flags.last_token.text, line_starters) || this._flags.last_token.text === 'catch') {\n this._output.space_before_token = true;\n }\n } else if (this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) {\n // Support of this kind of newline preservation.\n // a = (b &&\n // (c || d));\n if (!this.start_of_object_property()) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else if (this._flags.last_token.type === TOKEN.WORD) {\n this._output.space_before_token = false;\n\n // function name() vs function name ()\n // function* name() vs function* name ()\n // async name() vs async name ()\n // In ES6, you can also define the method properties of an object\n // var obj = {a: function() {}}\n // It can be abbreviated\n // var obj = {a() {}}\n // var obj = { a() {}} vs var obj = { a () {}}\n // var obj = { * a() {}} vs var obj = { * a () {}}\n var peek_back_two = this._tokens.peek(-3);\n if (this._options.space_after_named_function && peek_back_two) {\n // peek starts at next character so -1 is current token\n var peek_back_three = this._tokens.peek(-4);\n if (reserved_array(peek_back_two, ['async', 'function']) ||\n (peek_back_two.text === '*' && reserved_array(peek_back_three, ['async', 'function']))) {\n this._output.space_before_token = true;\n } else if (this._flags.mode === MODE.ObjectLiteral) {\n if ((peek_back_two.text === '{' || peek_back_two.text === ',') ||\n (peek_back_two.text === '*' && (peek_back_three.text === '{' || peek_back_three.text === ','))) {\n this._output.space_before_token = true;\n }\n } else if (this._flags.parent && this._flags.parent.class_start_block) {\n this._output.space_before_token = true;\n }\n }\n } else {\n // Support preserving wrapped arrow function expressions\n // a.b('c',\n // () => d.e\n // )\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n // function() vs function ()\n // yield*() vs yield* ()\n // function*() vs function* ()\n if ((this._flags.last_token.type === TOKEN.RESERVED && (this._flags.last_word === 'function' || this._flags.last_word === 'typeof')) ||\n (this._flags.last_token.text === '*' &&\n (in_array(this._last_last_text, ['function', 'yield']) ||\n (this._flags.mode === MODE.ObjectLiteral && in_array(this._last_last_text, ['{', ',']))))) {\n this._output.space_before_token = this._options.space_after_anon_function;\n }\n }\n\n if (this._flags.last_token.text === ';' || this._flags.last_token.type === TOKEN.START_BLOCK) {\n this.print_newline();\n } else if (this._flags.last_token.type === TOKEN.END_EXPR || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.END_BLOCK || this._flags.last_token.text === '.' || this._flags.last_token.type === TOKEN.COMMA) {\n // do nothing on (( and )( and ][ and ]( and .(\n // TODO: Consider whether forcing this is required. Review failing tests when removed.\n this.allow_wrap_or_preserved_newline(current_token, current_token.newlines);\n }\n\n this.print_token(current_token);\n this.set_mode(next_mode);\n if (this._options.space_in_paren) {\n this._output.space_before_token = true;\n }\n\n // In all cases, if we newline while inside an expression it should be indented.\n this.indent();\n};\n\nBeautifier.prototype.handle_end_expr = function(current_token) {\n // statements inside expressions are not valid syntax, but...\n // statements must all be closed when their container closes\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n\n this.handle_whitespace_and_comments(current_token);\n\n if (this._flags.multiline_frame) {\n this.allow_wrap_or_preserved_newline(current_token,\n current_token.text === ']' && is_array(this._flags.mode) && !this._options.keep_array_indentation);\n }\n\n if (this._options.space_in_paren) {\n if (this._flags.last_token.type === TOKEN.START_EXPR && !this._options.space_in_empty_paren) {\n // () [] no inner space in empty parens like these, ever, ref #320\n this._output.trim();\n this._output.space_before_token = false;\n } else {\n this._output.space_before_token = true;\n }\n }\n this.deindent();\n this.print_token(current_token);\n this.restore_mode();\n\n remove_redundant_indentation(this._output, this._previous_flags);\n\n // do {} while () // no statement required after\n if (this._flags.do_while && this._previous_flags.mode === MODE.Conditional) {\n this._previous_flags.mode = MODE.Expression;\n this._flags.do_block = false;\n this._flags.do_while = false;\n\n }\n};\n\nBeautifier.prototype.handle_start_block = function(current_token) {\n this.handle_whitespace_and_comments(current_token);\n\n // Check if this is should be treated as a ObjectLiteral\n var next_token = this._tokens.peek();\n var second_token = this._tokens.peek(1);\n if (this._flags.last_word === 'switch' && this._flags.last_token.type === TOKEN.END_EXPR) {\n this.set_mode(MODE.BlockStatement);\n this._flags.in_case_statement = true;\n } else if (this._flags.case_body) {\n this.set_mode(MODE.BlockStatement);\n } else if (second_token && (\n (in_array(second_token.text, [':', ',']) && in_array(next_token.type, [TOKEN.STRING, TOKEN.WORD, TOKEN.RESERVED])) ||\n (in_array(next_token.text, ['get', 'set', '...']) && in_array(second_token.type, [TOKEN.WORD, TOKEN.RESERVED]))\n )) {\n // We don't support TypeScript,but we didn't break it for a very long time.\n // We'll try to keep not breaking it.\n if (in_array(this._last_last_text, ['class', 'interface']) && !in_array(second_token.text, [':', ','])) {\n this.set_mode(MODE.BlockStatement);\n } else {\n this.set_mode(MODE.ObjectLiteral);\n }\n } else if (this._flags.last_token.type === TOKEN.OPERATOR && this._flags.last_token.text === '=>') {\n // arrow function: (param1, paramN) => { statements }\n this.set_mode(MODE.BlockStatement);\n } else if (in_array(this._flags.last_token.type, [TOKEN.EQUALS, TOKEN.START_EXPR, TOKEN.COMMA, TOKEN.OPERATOR]) ||\n reserved_array(this._flags.last_token, ['return', 'throw', 'import', 'default'])\n ) {\n // Detecting shorthand function syntax is difficult by scanning forward,\n // so check the surrounding context.\n // If the block is being returned, imported, export default, passed as arg,\n // assigned with = or assigned in a nested object, treat as an ObjectLiteral.\n this.set_mode(MODE.ObjectLiteral);\n } else {\n this.set_mode(MODE.BlockStatement);\n }\n\n if (this._flags.last_token) {\n if (reserved_array(this._flags.last_token.previous, ['class', 'extends'])) {\n this._flags.class_start_block = true;\n }\n }\n\n var empty_braces = !next_token.comments_before && next_token.text === '}';\n var empty_anonymous_function = empty_braces && this._flags.last_word === 'function' &&\n this._flags.last_token.type === TOKEN.END_EXPR;\n\n if (this._options.brace_preserve_inline) // check for inline, set inline_frame if so\n {\n // search forward for a newline wanted inside this block\n var index = 0;\n var check_token = null;\n this._flags.inline_frame = true;\n do {\n index += 1;\n check_token = this._tokens.peek(index - 1);\n if (check_token.newlines) {\n this._flags.inline_frame = false;\n break;\n }\n } while (check_token.type !== TOKEN.EOF &&\n !(check_token.type === TOKEN.END_BLOCK && check_token.opened === current_token));\n }\n\n if ((this._options.brace_style === \"expand\" ||\n (this._options.brace_style === \"none\" && current_token.newlines)) &&\n !this._flags.inline_frame) {\n if (this._flags.last_token.type !== TOKEN.OPERATOR &&\n (empty_anonymous_function ||\n this._flags.last_token.type === TOKEN.EQUALS ||\n (reserved_array(this._flags.last_token, special_words) && this._flags.last_token.text !== 'else'))) {\n this._output.space_before_token = true;\n } else {\n this.print_newline(false, true);\n }\n } else { // collapse || inline_frame\n if (is_array(this._previous_flags.mode) && (this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.COMMA)) {\n if (this._flags.last_token.type === TOKEN.COMMA || this._options.space_in_paren) {\n this._output.space_before_token = true;\n }\n\n if (this._flags.last_token.type === TOKEN.COMMA || (this._flags.last_token.type === TOKEN.START_EXPR && this._flags.inline_frame)) {\n this.allow_wrap_or_preserved_newline(current_token);\n this._previous_flags.multiline_frame = this._previous_flags.multiline_frame || this._flags.multiline_frame;\n this._flags.multiline_frame = false;\n }\n }\n if (this._flags.last_token.type !== TOKEN.OPERATOR && this._flags.last_token.type !== TOKEN.START_EXPR) {\n if (in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.SEMICOLON]) && !this._flags.inline_frame) {\n this.print_newline();\n } else {\n this._output.space_before_token = true;\n }\n }\n }\n this.print_token(current_token);\n this.indent();\n\n // Except for specific cases, open braces are followed by a new line.\n if (!empty_braces && !(this._options.brace_preserve_inline && this._flags.inline_frame)) {\n this.print_newline();\n }\n};\n\nBeautifier.prototype.handle_end_block = function(current_token) {\n // statements must all be closed when their container closes\n this.handle_whitespace_and_comments(current_token);\n\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n\n var empty_braces = this._flags.last_token.type === TOKEN.START_BLOCK;\n\n if (this._flags.inline_frame && !empty_braces) { // try inline_frame (only set if this._options.braces-preserve-inline) first\n this._output.space_before_token = true;\n } else if (this._options.brace_style === \"expand\") {\n if (!empty_braces) {\n this.print_newline();\n }\n } else {\n // skip {}\n if (!empty_braces) {\n if (is_array(this._flags.mode) && this._options.keep_array_indentation) {\n // we REALLY need a newline here, but newliner would skip that\n this._options.keep_array_indentation = false;\n this.print_newline();\n this._options.keep_array_indentation = true;\n\n } else {\n this.print_newline();\n }\n }\n }\n this.restore_mode();\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_word = function(current_token) {\n if (current_token.type === TOKEN.RESERVED) {\n if (in_array(current_token.text, ['set', 'get']) && this._flags.mode !== MODE.ObjectLiteral) {\n current_token.type = TOKEN.WORD;\n } else if (current_token.text === 'import' && in_array(this._tokens.peek().text, ['(', '.'])) {\n current_token.type = TOKEN.WORD;\n } else if (in_array(current_token.text, ['as', 'from']) && !this._flags.import_block) {\n current_token.type = TOKEN.WORD;\n } else if (this._flags.mode === MODE.ObjectLiteral) {\n var next_token = this._tokens.peek();\n if (next_token.text === ':') {\n current_token.type = TOKEN.WORD;\n }\n }\n }\n\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n if (reserved_array(this._flags.last_token, ['var', 'let', 'const']) && current_token.type === TOKEN.WORD) {\n this._flags.declaration_statement = true;\n }\n } else if (current_token.newlines && !is_expression(this._flags.mode) &&\n (this._flags.last_token.type !== TOKEN.OPERATOR || (this._flags.last_token.text === '--' || this._flags.last_token.text === '++')) &&\n this._flags.last_token.type !== TOKEN.EQUALS &&\n (this._options.preserve_newlines || !reserved_array(this._flags.last_token, ['var', 'let', 'const', 'set', 'get']))) {\n this.handle_whitespace_and_comments(current_token);\n this.print_newline();\n } else {\n this.handle_whitespace_and_comments(current_token);\n }\n\n if (this._flags.do_block && !this._flags.do_while) {\n if (reserved_word(current_token, 'while')) {\n // do {} ## while ()\n this._output.space_before_token = true;\n this.print_token(current_token);\n this._output.space_before_token = true;\n this._flags.do_while = true;\n return;\n } else {\n // do {} should always have while as the next word.\n // if we don't see the expected while, recover\n this.print_newline();\n this._flags.do_block = false;\n }\n }\n\n // if may be followed by else, or not\n // Bare/inline ifs are tricky\n // Need to unwind the modes correctly: if (a) if (b) c(); else d(); else e();\n if (this._flags.if_block) {\n if (!this._flags.else_block && reserved_word(current_token, 'else')) {\n this._flags.else_block = true;\n } else {\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n this._flags.if_block = false;\n this._flags.else_block = false;\n }\n }\n\n if (this._flags.in_case_statement && reserved_array(current_token, ['case', 'default'])) {\n this.print_newline();\n if (!this._flags.case_block && (this._flags.case_body || this._options.jslint_happy)) {\n // switch cases following one another\n this.deindent();\n }\n this._flags.case_body = false;\n\n this.print_token(current_token);\n this._flags.in_case = true;\n return;\n }\n\n if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) {\n if (!this.start_of_object_property() && !(\n // start of object property is different for numeric values with +/- prefix operators\n in_array(this._flags.last_token.text, ['+', '-']) && this._last_last_text === ':' && this._flags.parent.mode === MODE.ObjectLiteral)) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n }\n\n if (reserved_word(current_token, 'function')) {\n if (in_array(this._flags.last_token.text, ['}', ';']) ||\n (this._output.just_added_newline() && !(in_array(this._flags.last_token.text, ['(', '[', '{', ':', '=', ',']) || this._flags.last_token.type === TOKEN.OPERATOR))) {\n // make sure there is a nice clean space of at least one blank line\n // before a new function definition\n if (!this._output.just_added_blankline() && !current_token.comments_before) {\n this.print_newline();\n this.print_newline(true);\n }\n }\n if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD) {\n if (reserved_array(this._flags.last_token, ['get', 'set', 'new', 'export']) ||\n reserved_array(this._flags.last_token, newline_restricted_tokens)) {\n this._output.space_before_token = true;\n } else if (reserved_word(this._flags.last_token, 'default') && this._last_last_text === 'export') {\n this._output.space_before_token = true;\n } else if (this._flags.last_token.text === 'declare') {\n // accomodates Typescript declare function formatting\n this._output.space_before_token = true;\n } else {\n this.print_newline();\n }\n } else if (this._flags.last_token.type === TOKEN.OPERATOR || this._flags.last_token.text === '=') {\n // foo = function\n this._output.space_before_token = true;\n } else if (!this._flags.multiline_frame && (is_expression(this._flags.mode) || is_array(this._flags.mode))) {\n // (function\n } else {\n this.print_newline();\n }\n\n this.print_token(current_token);\n this._flags.last_word = current_token.text;\n return;\n }\n\n var prefix = 'NONE';\n\n if (this._flags.last_token.type === TOKEN.END_BLOCK) {\n\n if (this._previous_flags.inline_frame) {\n prefix = 'SPACE';\n } else if (!reserved_array(current_token, ['else', 'catch', 'finally', 'from'])) {\n prefix = 'NEWLINE';\n } else {\n if (this._options.brace_style === \"expand\" ||\n this._options.brace_style === \"end-expand\" ||\n (this._options.brace_style === \"none\" && current_token.newlines)) {\n prefix = 'NEWLINE';\n } else {\n prefix = 'SPACE';\n this._output.space_before_token = true;\n }\n }\n } else if (this._flags.last_token.type === TOKEN.SEMICOLON && this._flags.mode === MODE.BlockStatement) {\n // TODO: Should this be for STATEMENT as well?\n prefix = 'NEWLINE';\n } else if (this._flags.last_token.type === TOKEN.SEMICOLON && is_expression(this._flags.mode)) {\n prefix = 'SPACE';\n } else if (this._flags.last_token.type === TOKEN.STRING) {\n prefix = 'NEWLINE';\n } else if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD ||\n (this._flags.last_token.text === '*' &&\n (in_array(this._last_last_text, ['function', 'yield']) ||\n (this._flags.mode === MODE.ObjectLiteral && in_array(this._last_last_text, ['{', ',']))))) {\n prefix = 'SPACE';\n } else if (this._flags.last_token.type === TOKEN.START_BLOCK) {\n if (this._flags.inline_frame) {\n prefix = 'SPACE';\n } else {\n prefix = 'NEWLINE';\n }\n } else if (this._flags.last_token.type === TOKEN.END_EXPR) {\n this._output.space_before_token = true;\n prefix = 'NEWLINE';\n }\n\n if (reserved_array(current_token, line_starters) && this._flags.last_token.text !== ')') {\n if (this._flags.inline_frame || this._flags.last_token.text === 'else' || this._flags.last_token.text === 'export') {\n prefix = 'SPACE';\n } else {\n prefix = 'NEWLINE';\n }\n\n }\n\n if (reserved_array(current_token, ['else', 'catch', 'finally'])) {\n if ((!(this._flags.last_token.type === TOKEN.END_BLOCK && this._previous_flags.mode === MODE.BlockStatement) ||\n this._options.brace_style === \"expand\" ||\n this._options.brace_style === \"end-expand\" ||\n (this._options.brace_style === \"none\" && current_token.newlines)) &&\n !this._flags.inline_frame) {\n this.print_newline();\n } else {\n this._output.trim(true);\n var line = this._output.current_line;\n // If we trimmed and there's something other than a close block before us\n // put a newline back in. Handles '} // comment' scenario.\n if (line.last() !== '}') {\n this.print_newline();\n }\n this._output.space_before_token = true;\n }\n } else if (prefix === 'NEWLINE') {\n if (reserved_array(this._flags.last_token, special_words)) {\n // no newline between 'return nnn'\n this._output.space_before_token = true;\n } else if (this._flags.last_token.text === 'declare' && reserved_array(current_token, ['var', 'let', 'const'])) {\n // accomodates Typescript declare formatting\n this._output.space_before_token = true;\n } else if (this._flags.last_token.type !== TOKEN.END_EXPR) {\n if ((this._flags.last_token.type !== TOKEN.START_EXPR || !reserved_array(current_token, ['var', 'let', 'const'])) && this._flags.last_token.text !== ':') {\n // no need to force newline on 'var': for (var x = 0...)\n if (reserved_word(current_token, 'if') && reserved_word(current_token.previous, 'else')) {\n // no newline for } else if {\n this._output.space_before_token = true;\n } else {\n this.print_newline();\n }\n }\n } else if (reserved_array(current_token, line_starters) && this._flags.last_token.text !== ')') {\n this.print_newline();\n }\n } else if (this._flags.multiline_frame && is_array(this._flags.mode) && this._flags.last_token.text === ',' && this._last_last_text === '}') {\n this.print_newline(); // }, in lists get a newline treatment\n } else if (prefix === 'SPACE') {\n this._output.space_before_token = true;\n }\n if (current_token.previous && (current_token.previous.type === TOKEN.WORD || current_token.previous.type === TOKEN.RESERVED)) {\n this._output.space_before_token = true;\n }\n this.print_token(current_token);\n this._flags.last_word = current_token.text;\n\n if (current_token.type === TOKEN.RESERVED) {\n if (current_token.text === 'do') {\n this._flags.do_block = true;\n } else if (current_token.text === 'if') {\n this._flags.if_block = true;\n } else if (current_token.text === 'import') {\n this._flags.import_block = true;\n } else if (this._flags.import_block && reserved_word(current_token, 'from')) {\n this._flags.import_block = false;\n }\n }\n};\n\nBeautifier.prototype.handle_semicolon = function(current_token) {\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n // Semicolon can be the start (and end) of a statement\n this._output.space_before_token = false;\n } else {\n this.handle_whitespace_and_comments(current_token);\n }\n\n var next_token = this._tokens.peek();\n while (this._flags.mode === MODE.Statement &&\n !(this._flags.if_block && reserved_word(next_token, 'else')) &&\n !this._flags.do_block) {\n this.restore_mode();\n }\n\n // hacky but effective for the moment\n if (this._flags.import_block) {\n this._flags.import_block = false;\n }\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_string = function(current_token) {\n if (current_token.text.startsWith(\"`\") && current_token.newlines === 0 && current_token.whitespace_before === '' && (current_token.previous.text === ')' || this._flags.last_token.type === TOKEN.WORD)) {\n //Conditional for detectign backtick strings\n } else if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n // One difference - strings want at least a space before\n this._output.space_before_token = true;\n } else {\n this.handle_whitespace_and_comments(current_token);\n if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD || this._flags.inline_frame) {\n this._output.space_before_token = true;\n } else if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) {\n if (!this.start_of_object_property()) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else if ((current_token.text.startsWith(\"`\") && this._flags.last_token.type === TOKEN.END_EXPR && (current_token.previous.text === ']' || current_token.previous.text === ')') && current_token.newlines === 0)) {\n this._output.space_before_token = true;\n } else {\n this.print_newline();\n }\n }\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_equals = function(current_token) {\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n } else {\n this.handle_whitespace_and_comments(current_token);\n }\n\n if (this._flags.declaration_statement) {\n // just got an '=' in a var-line, different formatting/line-breaking, etc will now be done\n this._flags.declaration_assignment = true;\n }\n this._output.space_before_token = true;\n this.print_token(current_token);\n this._output.space_before_token = true;\n};\n\nBeautifier.prototype.handle_comma = function(current_token) {\n this.handle_whitespace_and_comments(current_token, true);\n\n this.print_token(current_token);\n this._output.space_before_token = true;\n if (this._flags.declaration_statement) {\n if (is_expression(this._flags.parent.mode)) {\n // do not break on comma, for(var a = 1, b = 2)\n this._flags.declaration_assignment = false;\n }\n\n if (this._flags.declaration_assignment) {\n this._flags.declaration_assignment = false;\n this.print_newline(false, true);\n } else if (this._options.comma_first) {\n // for comma-first, we want to allow a newline before the comma\n // to turn into a newline after the comma, which we will fixup later\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else if (this._flags.mode === MODE.ObjectLiteral ||\n (this._flags.mode === MODE.Statement && this._flags.parent.mode === MODE.ObjectLiteral)) {\n if (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n\n if (!this._flags.inline_frame) {\n this.print_newline();\n }\n } else if (this._options.comma_first) {\n // EXPR or DO_BLOCK\n // for comma-first, we want to allow a newline before the comma\n // to turn into a newline after the comma, which we will fixup later\n this.allow_wrap_or_preserved_newline(current_token);\n }\n};\n\nBeautifier.prototype.handle_operator = function(current_token) {\n var isGeneratorAsterisk = current_token.text === '*' &&\n (reserved_array(this._flags.last_token, ['function', 'yield']) ||\n (in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.COMMA, TOKEN.END_BLOCK, TOKEN.SEMICOLON]))\n );\n var isUnary = in_array(current_token.text, ['-', '+']) && (\n in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.START_EXPR, TOKEN.EQUALS, TOKEN.OPERATOR]) ||\n in_array(this._flags.last_token.text, line_starters) ||\n this._flags.last_token.text === ','\n );\n\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n } else {\n var preserve_statement_flags = !isGeneratorAsterisk;\n this.handle_whitespace_and_comments(current_token, preserve_statement_flags);\n }\n\n // hack for actionscript's import .*;\n if (current_token.text === '*' && this._flags.last_token.type === TOKEN.DOT) {\n this.print_token(current_token);\n return;\n }\n\n if (current_token.text === '::') {\n // no spaces around exotic namespacing syntax operator\n this.print_token(current_token);\n return;\n }\n\n if (in_array(current_token.text, ['-', '+']) && this.start_of_object_property()) {\n // numeric value with +/- symbol in front as a property\n this.print_token(current_token);\n return;\n }\n\n // Allow line wrapping between operators when operator_position is\n // set to before or preserve\n if (this._flags.last_token.type === TOKEN.OPERATOR && in_array(this._options.operator_position, OPERATOR_POSITION_BEFORE_OR_PRESERVE)) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n if (current_token.text === ':' && this._flags.in_case) {\n this.print_token(current_token);\n\n this._flags.in_case = false;\n this._flags.case_body = true;\n if (this._tokens.peek().type !== TOKEN.START_BLOCK) {\n this.indent();\n this.print_newline();\n this._flags.case_block = false;\n } else {\n this._flags.case_block = true;\n this._output.space_before_token = true;\n }\n return;\n }\n\n var space_before = true;\n var space_after = true;\n var in_ternary = false;\n if (current_token.text === ':') {\n if (this._flags.ternary_depth === 0) {\n // Colon is invalid javascript outside of ternary and object, but do our best to guess what was meant.\n space_before = false;\n } else {\n this._flags.ternary_depth -= 1;\n in_ternary = true;\n }\n } else if (current_token.text === '?') {\n this._flags.ternary_depth += 1;\n }\n\n // let's handle the operator_position option prior to any conflicting logic\n if (!isUnary && !isGeneratorAsterisk && this._options.preserve_newlines && in_array(current_token.text, positionable_operators)) {\n var isColon = current_token.text === ':';\n var isTernaryColon = (isColon && in_ternary);\n var isOtherColon = (isColon && !in_ternary);\n\n switch (this._options.operator_position) {\n case OPERATOR_POSITION.before_newline:\n // if the current token is : and it's not a ternary statement then we set space_before to false\n this._output.space_before_token = !isOtherColon;\n\n this.print_token(current_token);\n\n if (!isColon || isTernaryColon) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n this._output.space_before_token = true;\n return;\n\n case OPERATOR_POSITION.after_newline:\n // if the current token is anything but colon, or (via deduction) it's a colon and in a ternary statement,\n // then print a newline.\n\n this._output.space_before_token = true;\n\n if (!isColon || isTernaryColon) {\n if (this._tokens.peek().newlines) {\n this.print_newline(false, true);\n } else {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else {\n this._output.space_before_token = false;\n }\n\n this.print_token(current_token);\n\n this._output.space_before_token = true;\n return;\n\n case OPERATOR_POSITION.preserve_newline:\n if (!isOtherColon) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n // if we just added a newline, or the current token is : and it's not a ternary statement,\n // then we set space_before to false\n space_before = !(this._output.just_added_newline() || isOtherColon);\n\n this._output.space_before_token = space_before;\n this.print_token(current_token);\n this._output.space_before_token = true;\n return;\n }\n }\n\n if (isGeneratorAsterisk) {\n this.allow_wrap_or_preserved_newline(current_token);\n space_before = false;\n var next_token = this._tokens.peek();\n space_after = next_token && in_array(next_token.type, [TOKEN.WORD, TOKEN.RESERVED]);\n } else if (current_token.text === '...') {\n this.allow_wrap_or_preserved_newline(current_token);\n space_before = this._flags.last_token.type === TOKEN.START_BLOCK;\n space_after = false;\n } else if (in_array(current_token.text, ['--', '++', '!', '~']) || isUnary) {\n // unary operators (and binary +/- pretending to be unary) special cases\n if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n space_before = false;\n space_after = false;\n\n // http://www.ecma-international.org/ecma-262/5.1/#sec-7.9.1\n // if there is a newline between -- or ++ and anything else we should preserve it.\n if (current_token.newlines && (current_token.text === '--' || current_token.text === '++' || current_token.text === '~')) {\n var new_line_needed = reserved_array(this._flags.last_token, special_words) && current_token.newlines;\n if (new_line_needed && (this._previous_flags.if_block || this._previous_flags.else_block)) {\n this.restore_mode();\n }\n this.print_newline(new_line_needed, true);\n }\n\n if (this._flags.last_token.text === ';' && is_expression(this._flags.mode)) {\n // for (;; ++i)\n // ^^^\n space_before = true;\n }\n\n if (this._flags.last_token.type === TOKEN.RESERVED) {\n space_before = true;\n } else if (this._flags.last_token.type === TOKEN.END_EXPR) {\n space_before = !(this._flags.last_token.text === ']' && (current_token.text === '--' || current_token.text === '++'));\n } else if (this._flags.last_token.type === TOKEN.OPERATOR) {\n // a++ + ++b;\n // a - -b\n space_before = in_array(current_token.text, ['--', '-', '++', '+']) && in_array(this._flags.last_token.text, ['--', '-', '++', '+']);\n // + and - are not unary when preceeded by -- or ++ operator\n // a-- + b\n // a * +b\n // a - -b\n if (in_array(current_token.text, ['+', '-']) && in_array(this._flags.last_token.text, ['--', '++'])) {\n space_after = true;\n }\n }\n\n\n if (((this._flags.mode === MODE.BlockStatement && !this._flags.inline_frame) || this._flags.mode === MODE.Statement) &&\n (this._flags.last_token.text === '{' || this._flags.last_token.text === ';')) {\n // { foo; --i }\n // foo(); --bar;\n this.print_newline();\n }\n }\n\n this._output.space_before_token = this._output.space_before_token || space_before;\n this.print_token(current_token);\n this._output.space_before_token = space_after;\n};\n\nBeautifier.prototype.handle_block_comment = function(current_token, preserve_statement_flags) {\n if (this._output.raw) {\n this._output.add_raw_token(current_token);\n if (current_token.directives && current_token.directives.preserve === 'end') {\n // If we're testing the raw output behavior, do not allow a directive to turn it off.\n this._output.raw = this._options.test_output_raw;\n }\n return;\n }\n\n if (current_token.directives) {\n this.print_newline(false, preserve_statement_flags);\n this.print_token(current_token);\n if (current_token.directives.preserve === 'start') {\n this._output.raw = true;\n }\n this.print_newline(false, true);\n return;\n }\n\n // inline block\n if (!acorn.newline.test(current_token.text) && !current_token.newlines) {\n this._output.space_before_token = true;\n this.print_token(current_token);\n this._output.space_before_token = true;\n return;\n } else {\n this.print_block_commment(current_token, preserve_statement_flags);\n }\n};\n\nBeautifier.prototype.print_block_commment = function(current_token, preserve_statement_flags) {\n var lines = split_linebreaks(current_token.text);\n var j; // iterator for this case\n var javadoc = false;\n var starless = false;\n var lastIndent = current_token.whitespace_before;\n var lastIndentLength = lastIndent.length;\n\n // block comment starts with a new line\n this.print_newline(false, preserve_statement_flags);\n\n // first line always indented\n this.print_token_line_indentation(current_token);\n this._output.add_token(lines[0]);\n this.print_newline(false, preserve_statement_flags);\n\n\n if (lines.length > 1) {\n lines = lines.slice(1);\n javadoc = all_lines_start_with(lines, '*');\n starless = each_line_matches_indent(lines, lastIndent);\n\n if (javadoc) {\n this._flags.alignment = 1;\n }\n\n for (j = 0; j < lines.length; j++) {\n if (javadoc) {\n // javadoc: reformat and re-indent\n this.print_token_line_indentation(current_token);\n this._output.add_token(ltrim(lines[j]));\n } else if (starless && lines[j]) {\n // starless: re-indent non-empty content, avoiding trim\n this.print_token_line_indentation(current_token);\n this._output.add_token(lines[j].substring(lastIndentLength));\n } else {\n // normal comments output raw\n this._output.current_line.set_indent(-1);\n this._output.add_token(lines[j]);\n }\n\n // for comments on their own line or more than one line, make sure there's a new line after\n this.print_newline(false, preserve_statement_flags);\n }\n\n this._flags.alignment = 0;\n }\n};\n\n\nBeautifier.prototype.handle_comment = function(current_token, preserve_statement_flags) {\n if (current_token.newlines) {\n this.print_newline(false, preserve_statement_flags);\n } else {\n this._output.trim(true);\n }\n\n this._output.space_before_token = true;\n this.print_token(current_token);\n this.print_newline(false, preserve_statement_flags);\n};\n\nBeautifier.prototype.handle_dot = function(current_token) {\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n } else {\n this.handle_whitespace_and_comments(current_token, true);\n }\n\n if (this._flags.last_token.text.match('^[0-9]+$')) {\n this._output.space_before_token = true;\n }\n\n if (reserved_array(this._flags.last_token, special_words)) {\n this._output.space_before_token = false;\n } else {\n // allow preserved newlines before dots in general\n // force newlines on dots after close paren when break_chained - for bar().baz()\n this.allow_wrap_or_preserved_newline(current_token,\n this._flags.last_token.text === ')' && this._options.break_chained_methods);\n }\n\n // Only unindent chained method dot if this dot starts a new line.\n // Otherwise the automatic extra indentation removal will handle the over indent\n if (this._options.unindent_chained_methods && this._output.just_added_newline()) {\n this.deindent();\n }\n\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_unknown = function(current_token, preserve_statement_flags) {\n this.print_token(current_token);\n\n if (current_token.text[current_token.text.length - 1] === '\\n') {\n this.print_newline(false, preserve_statement_flags);\n }\n};\n\nBeautifier.prototype.handle_eof = function(current_token) {\n // Unwind any open statements\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n this.handle_whitespace_and_comments(current_token);\n};\n\nmodule.exports.Beautifier = Beautifier;\n",
20
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar Beautifier = require('./beautifier').Beautifier,\n Options = require('./options').Options;\n\nfunction js_beautify(js_source_text, options) {\n var beautifier = new Beautifier(js_source_text, options);\n return beautifier.beautify();\n}\n\nmodule.exports = js_beautify;\nmodule.exports.defaultOptions = function() {\n return new Options();\n};\n",
21
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar BaseOptions = require('../core/options').Options;\n\nfunction Options(options) {\n BaseOptions.call(this, options, 'css');\n\n this.selector_separator_newline = this._get_boolean('selector_separator_newline', true);\n this.newline_between_rules = this._get_boolean('newline_between_rules', true);\n var space_around_selector_separator = this._get_boolean('space_around_selector_separator');\n this.space_around_combinator = this._get_boolean('space_around_combinator') || space_around_selector_separator;\n\n var brace_style_split = this._get_selection_list('brace_style', ['collapse', 'expand', 'end-expand', 'none', 'preserve-inline']);\n this.brace_style = 'collapse';\n for (var bs = 0; bs < brace_style_split.length; bs++) {\n if (brace_style_split[bs] !== 'expand') {\n // default to collapse, as only collapse|expand is implemented for now\n this.brace_style = 'collapse';\n } else {\n this.brace_style = brace_style_split[bs];\n }\n }\n}\nOptions.prototype = new BaseOptions();\n\n\n\nmodule.exports.Options = Options;\n",
22
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar Options = require('./options').Options;\nvar Output = require('../core/output').Output;\nvar InputScanner = require('../core/inputscanner').InputScanner;\nvar Directives = require('../core/directives').Directives;\n\nvar directives_core = new Directives(/\\/\\*/, /\\*\\//);\n\nvar lineBreak = /\\r\\n|[\\r\\n]/;\nvar allLineBreaks = /\\r\\n|[\\r\\n]/g;\n\n// tokenizer\nvar whitespaceChar = /\\s/;\nvar whitespacePattern = /(?:\\s|\\n)+/g;\nvar block_comment_pattern = /\\/\\*(?:[\\s\\S]*?)((?:\\*\\/)|$)/g;\nvar comment_pattern = /\\/\\/(?:[^\\n\\r\\u2028\\u2029]*)/g;\n\nfunction Beautifier(source_text, options) {\n this._source_text = source_text || '';\n // Allow the setting of language/file-type specific options\n // with inheritance of overall settings\n this._options = new Options(options);\n this._ch = null;\n this._input = null;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule\n this.NESTED_AT_RULE = {\n \"page\": true,\n \"font-face\": true,\n \"keyframes\": true,\n // also in CONDITIONAL_GROUP_RULE below\n \"media\": true,\n \"supports\": true,\n \"document\": true\n };\n this.CONDITIONAL_GROUP_RULE = {\n \"media\": true,\n \"supports\": true,\n \"document\": true\n };\n this.NON_SEMICOLON_NEWLINE_PROPERTY = [\n \"grid-template-areas\",\n \"grid-template\"\n ];\n\n}\n\nBeautifier.prototype.eatString = function(endChars) {\n var result = '';\n this._ch = this._input.next();\n while (this._ch) {\n result += this._ch;\n if (this._ch === \"\\\\\") {\n result += this._input.next();\n } else if (endChars.indexOf(this._ch) !== -1 || this._ch === \"\\n\") {\n break;\n }\n this._ch = this._input.next();\n }\n return result;\n};\n\n// Skips any white space in the source text from the current position.\n// When allowAtLeastOneNewLine is true, will output new lines for each\n// newline character found; if the user has preserve_newlines off, only\n// the first newline will be output\nBeautifier.prototype.eatWhitespace = function(allowAtLeastOneNewLine) {\n var result = whitespaceChar.test(this._input.peek());\n var newline_count = 0;\n while (whitespaceChar.test(this._input.peek())) {\n this._ch = this._input.next();\n if (allowAtLeastOneNewLine && this._ch === '\\n') {\n if (newline_count === 0 || newline_count < this._options.max_preserve_newlines) {\n newline_count++;\n this._output.add_new_line(true);\n }\n }\n }\n return result;\n};\n\n// Nested pseudo-class if we are insideRule\n// and the next special character found opens\n// a new block\nBeautifier.prototype.foundNestedPseudoClass = function() {\n var openParen = 0;\n var i = 1;\n var ch = this._input.peek(i);\n while (ch) {\n if (ch === \"{\") {\n return true;\n } else if (ch === '(') {\n // pseudoclasses can contain ()\n openParen += 1;\n } else if (ch === ')') {\n if (openParen === 0) {\n return false;\n }\n openParen -= 1;\n } else if (ch === \";\" || ch === \"}\") {\n return false;\n }\n i++;\n ch = this._input.peek(i);\n }\n return false;\n};\n\nBeautifier.prototype.print_string = function(output_string) {\n this._output.set_indent(this._indentLevel);\n this._output.non_breaking_space = true;\n this._output.add_token(output_string);\n};\n\nBeautifier.prototype.preserveSingleSpace = function(isAfterSpace) {\n if (isAfterSpace) {\n this._output.space_before_token = true;\n }\n};\n\nBeautifier.prototype.indent = function() {\n this._indentLevel++;\n};\n\nBeautifier.prototype.outdent = function() {\n if (this._indentLevel > 0) {\n this._indentLevel--;\n }\n};\n\n/*_____________________--------------------_____________________*/\n\nBeautifier.prototype.beautify = function() {\n if (this._options.disabled) {\n return this._source_text;\n }\n\n var source_text = this._source_text;\n var eol = this._options.eol;\n if (eol === 'auto') {\n eol = '\\n';\n if (source_text && lineBreak.test(source_text || '')) {\n eol = source_text.match(lineBreak)[0];\n }\n }\n\n\n // HACK: newline parsing inconsistent. This brute force normalizes the this._input.\n source_text = source_text.replace(allLineBreaks, '\\n');\n\n // reset\n var baseIndentString = source_text.match(/^[\\t ]*/)[0];\n\n this._output = new Output(this._options, baseIndentString);\n this._input = new InputScanner(source_text);\n this._indentLevel = 0;\n this._nestedLevel = 0;\n\n this._ch = null;\n var parenLevel = 0;\n\n var insideRule = false;\n // This is the value side of a property value pair (blue in the following ex)\n // label { content: blue }\n var insidePropertyValue = false;\n var enteringConditionalGroup = false;\n var insideNonNestedAtRule = false;\n var insideScssMap = false;\n var topCharacter = this._ch;\n var insideNonSemiColonValues = false;\n var whitespace;\n var isAfterSpace;\n var previous_ch;\n\n while (true) {\n whitespace = this._input.read(whitespacePattern);\n isAfterSpace = whitespace !== '';\n previous_ch = topCharacter;\n this._ch = this._input.next();\n if (this._ch === '\\\\' && this._input.hasNext()) {\n this._ch += this._input.next();\n }\n topCharacter = this._ch;\n\n if (!this._ch) {\n break;\n } else if (this._ch === '/' && this._input.peek() === '*') {\n // /* css comment */\n // Always start block comments on a new line.\n // This handles scenarios where a block comment immediately\n // follows a property definition on the same line or where\n // minified code is being beautified.\n this._output.add_new_line();\n this._input.back();\n\n var comment = this._input.read(block_comment_pattern);\n\n // Handle ignore directive\n var directives = directives_core.get_directives(comment);\n if (directives && directives.ignore === 'start') {\n comment += directives_core.readIgnored(this._input);\n }\n\n this.print_string(comment);\n\n // Ensures any new lines following the comment are preserved\n this.eatWhitespace(true);\n\n // Block comments are followed by a new line so they don't\n // share a line with other properties\n this._output.add_new_line();\n } else if (this._ch === '/' && this._input.peek() === '/') {\n // // single line comment\n // Preserves the space before a comment\n // on the same line as a rule\n this._output.space_before_token = true;\n this._input.back();\n this.print_string(this._input.read(comment_pattern));\n\n // Ensures any new lines following the comment are preserved\n this.eatWhitespace(true);\n } else if (this._ch === '$') {\n this.preserveSingleSpace(isAfterSpace);\n\n this.print_string(this._ch);\n\n // strip trailing space, if present, for hash property checks\n var variable = this._input.peekUntilAfter(/[: ,;{}()[\\]\\/='\"]/g);\n\n if (variable.match(/[ :]$/)) {\n // we have a variable or pseudo-class, add it and insert one space before continuing\n variable = this.eatString(\": \").replace(/\\s+$/, '');\n this.print_string(variable);\n this._output.space_before_token = true;\n }\n\n // might be sass variable\n if (parenLevel === 0 && variable.indexOf(':') !== -1) {\n insidePropertyValue = true;\n this.indent();\n }\n } else if (this._ch === '@') {\n this.preserveSingleSpace(isAfterSpace);\n\n // deal with less property mixins @{...}\n if (this._input.peek() === '{') {\n this.print_string(this._ch + this.eatString('}'));\n } else {\n this.print_string(this._ch);\n\n // strip trailing space, if present, for hash property checks\n var variableOrRule = this._input.peekUntilAfter(/[: ,;{}()[\\]\\/='\"]/g);\n\n if (variableOrRule.match(/[ :]$/)) {\n // we have a variable or pseudo-class, add it and insert one space before continuing\n variableOrRule = this.eatString(\": \").replace(/\\s+$/, '');\n this.print_string(variableOrRule);\n this._output.space_before_token = true;\n }\n\n // might be less variable\n if (parenLevel === 0 && variableOrRule.indexOf(':') !== -1) {\n insidePropertyValue = true;\n this.indent();\n\n // might be a nesting at-rule\n } else if (variableOrRule in this.NESTED_AT_RULE) {\n this._nestedLevel += 1;\n if (variableOrRule in this.CONDITIONAL_GROUP_RULE) {\n enteringConditionalGroup = true;\n }\n\n // might be a non-nested at-rule\n } else if (parenLevel === 0 && !insidePropertyValue) {\n insideNonNestedAtRule = true;\n }\n }\n } else if (this._ch === '#' && this._input.peek() === '{') {\n this.preserveSingleSpace(isAfterSpace);\n this.print_string(this._ch + this.eatString('}'));\n } else if (this._ch === '{') {\n if (insidePropertyValue) {\n insidePropertyValue = false;\n this.outdent();\n }\n\n // non nested at rule becomes nested\n insideNonNestedAtRule = false;\n\n // when entering conditional groups, only rulesets are allowed\n if (enteringConditionalGroup) {\n enteringConditionalGroup = false;\n insideRule = (this._indentLevel >= this._nestedLevel);\n } else {\n // otherwise, declarations are also allowed\n insideRule = (this._indentLevel >= this._nestedLevel - 1);\n }\n if (this._options.newline_between_rules && insideRule) {\n if (this._output.previous_line && this._output.previous_line.item(-1) !== '{') {\n this._output.ensure_empty_line_above('/', ',');\n }\n }\n\n this._output.space_before_token = true;\n\n // The difference in print_string and indent order is necessary to indent the '{' correctly\n if (this._options.brace_style === 'expand') {\n this._output.add_new_line();\n this.print_string(this._ch);\n this.indent();\n this._output.set_indent(this._indentLevel);\n } else {\n // inside mixin and first param is object\n if (previous_ch === '(') {\n this._output.space_before_token = false;\n } else if (previous_ch !== ',') {\n this.indent();\n }\n this.print_string(this._ch);\n }\n\n this.eatWhitespace(true);\n this._output.add_new_line();\n } else if (this._ch === '}') {\n this.outdent();\n this._output.add_new_line();\n if (previous_ch === '{') {\n this._output.trim(true);\n }\n\n if (insidePropertyValue) {\n this.outdent();\n insidePropertyValue = false;\n }\n this.print_string(this._ch);\n insideRule = false;\n if (this._nestedLevel) {\n this._nestedLevel--;\n }\n\n this.eatWhitespace(true);\n this._output.add_new_line();\n\n if (this._options.newline_between_rules && !this._output.just_added_blankline()) {\n if (this._input.peek() !== '}') {\n this._output.add_new_line(true);\n }\n }\n if (this._input.peek() === ')') {\n this._output.trim(true);\n if (this._options.brace_style === \"expand\") {\n this._output.add_new_line(true);\n }\n }\n } else if (this._ch === \":\") {\n\n for (var i = 0; i < this.NON_SEMICOLON_NEWLINE_PROPERTY.length; i++) {\n if (this._input.lookBack(this.NON_SEMICOLON_NEWLINE_PROPERTY[i])) {\n insideNonSemiColonValues = true;\n break;\n }\n }\n\n if ((insideRule || enteringConditionalGroup) && !(this._input.lookBack(\"&\") || this.foundNestedPseudoClass()) && !this._input.lookBack(\"(\") && !insideNonNestedAtRule && parenLevel === 0) {\n // 'property: value' delimiter\n // which could be in a conditional group query\n\n this.print_string(':');\n if (!insidePropertyValue) {\n insidePropertyValue = true;\n this._output.space_before_token = true;\n this.eatWhitespace(true);\n this.indent();\n }\n } else {\n // sass/less parent reference don't use a space\n // sass nested pseudo-class don't use a space\n\n // preserve space before pseudoclasses/pseudoelements, as it means \"in any child\"\n if (this._input.lookBack(\" \")) {\n this._output.space_before_token = true;\n }\n if (this._input.peek() === \":\") {\n // pseudo-element\n this._ch = this._input.next();\n this.print_string(\"::\");\n } else {\n // pseudo-class\n this.print_string(':');\n }\n }\n } else if (this._ch === '\"' || this._ch === '\\'') {\n var preserveQuoteSpace = previous_ch === '\"' || previous_ch === '\\'';\n this.preserveSingleSpace(preserveQuoteSpace || isAfterSpace);\n this.print_string(this._ch + this.eatString(this._ch));\n this.eatWhitespace(true);\n } else if (this._ch === ';') {\n insideNonSemiColonValues = false;\n if (parenLevel === 0) {\n if (insidePropertyValue) {\n this.outdent();\n insidePropertyValue = false;\n }\n insideNonNestedAtRule = false;\n this.print_string(this._ch);\n this.eatWhitespace(true);\n\n // This maintains single line comments on the same\n // line. Block comments are also affected, but\n // a new line is always output before one inside\n // that section\n if (this._input.peek() !== '/') {\n this._output.add_new_line();\n }\n } else {\n this.print_string(this._ch);\n this.eatWhitespace(true);\n this._output.space_before_token = true;\n }\n } else if (this._ch === '(') { // may be a url\n if (this._input.lookBack(\"url\")) {\n this.print_string(this._ch);\n this.eatWhitespace();\n parenLevel++;\n this.indent();\n this._ch = this._input.next();\n if (this._ch === ')' || this._ch === '\"' || this._ch === '\\'') {\n this._input.back();\n } else if (this._ch) {\n this.print_string(this._ch + this.eatString(')'));\n if (parenLevel) {\n parenLevel--;\n this.outdent();\n }\n }\n } else {\n var space_needed = false;\n if (this._input.lookBack(\"with\")) {\n // look back is not an accurate solution, we need tokens to confirm without whitespaces\n space_needed = true;\n }\n this.preserveSingleSpace(isAfterSpace || space_needed);\n this.print_string(this._ch);\n\n // handle scss/sass map\n if (insidePropertyValue && previous_ch === \"$\" && this._options.selector_separator_newline) {\n this._output.add_new_line();\n insideScssMap = true;\n } else {\n this.eatWhitespace();\n parenLevel++;\n this.indent();\n }\n }\n } else if (this._ch === ')') {\n if (parenLevel) {\n parenLevel--;\n this.outdent();\n }\n if (insideScssMap && this._input.peek() === \";\" && this._options.selector_separator_newline) {\n insideScssMap = false;\n this.outdent();\n this._output.add_new_line();\n }\n this.print_string(this._ch);\n } else if (this._ch === ',') {\n this.print_string(this._ch);\n this.eatWhitespace(true);\n if (this._options.selector_separator_newline && (!insidePropertyValue || insideScssMap) && parenLevel === 0 && !insideNonNestedAtRule) {\n this._output.add_new_line();\n } else {\n this._output.space_before_token = true;\n }\n } else if ((this._ch === '>' || this._ch === '+' || this._ch === '~') && !insidePropertyValue && parenLevel === 0) {\n //handle combinator spacing\n if (this._options.space_around_combinator) {\n this._output.space_before_token = true;\n this.print_string(this._ch);\n this._output.space_before_token = true;\n } else {\n this.print_string(this._ch);\n this.eatWhitespace();\n // squash extra whitespace\n if (this._ch && whitespaceChar.test(this._ch)) {\n this._ch = '';\n }\n }\n } else if (this._ch === ']') {\n this.print_string(this._ch);\n } else if (this._ch === '[') {\n this.preserveSingleSpace(isAfterSpace);\n this.print_string(this._ch);\n } else if (this._ch === '=') { // no whitespace before or after\n this.eatWhitespace();\n this.print_string('=');\n if (whitespaceChar.test(this._ch)) {\n this._ch = '';\n }\n } else if (this._ch === '!' && !this._input.lookBack(\"\\\\\")) { // !important\n this._output.space_before_token = true;\n this.print_string(this._ch);\n } else {\n var preserveAfterSpace = previous_ch === '\"' || previous_ch === '\\'';\n this.preserveSingleSpace(preserveAfterSpace || isAfterSpace);\n this.print_string(this._ch);\n\n if (!this._output.just_added_newline() && this._input.peek() === '\\n' && insideNonSemiColonValues) {\n this._output.add_new_line();\n }\n }\n }\n\n var sweetCode = this._output.get_code(eol);\n\n return sweetCode;\n};\n\nmodule.exports.Beautifier = Beautifier;\n",
23
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar Beautifier = require('./beautifier').Beautifier,\n Options = require('./options').Options;\n\nfunction css_beautify(source_text, options) {\n var beautifier = new Beautifier(source_text, options);\n return beautifier.beautify();\n}\n\nmodule.exports = css_beautify;\nmodule.exports.defaultOptions = function() {\n return new Options();\n};\n",
24
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar BaseOptions = require('../core/options').Options;\n\nfunction Options(options) {\n BaseOptions.call(this, options, 'html');\n if (this.templating.length === 1 && this.templating[0] === 'auto') {\n this.templating = ['django', 'erb', 'handlebars', 'php'];\n }\n\n this.indent_inner_html = this._get_boolean('indent_inner_html');\n this.indent_body_inner_html = this._get_boolean('indent_body_inner_html', true);\n this.indent_head_inner_html = this._get_boolean('indent_head_inner_html', true);\n\n this.indent_handlebars = this._get_boolean('indent_handlebars', true);\n this.wrap_attributes = this._get_selection('wrap_attributes',\n ['auto', 'force', 'force-aligned', 'force-expand-multiline', 'aligned-multiple', 'preserve', 'preserve-aligned']);\n this.wrap_attributes_min_attrs = this._get_number('wrap_attributes_min_attrs', 2);\n this.wrap_attributes_indent_size = this._get_number('wrap_attributes_indent_size', this.indent_size);\n this.extra_liners = this._get_array('extra_liners', ['head', 'body', '/html']);\n\n // Block vs inline elements\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements\n // https://www.w3.org/TR/html5/dom.html#phrasing-content\n this.inline = this._get_array('inline', [\n 'a', 'abbr', 'area', 'audio', 'b', 'bdi', 'bdo', 'br', 'button', 'canvas', 'cite',\n 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'i', 'iframe', 'img',\n 'input', 'ins', 'kbd', 'keygen', 'label', 'map', 'mark', 'math', 'meter', 'noscript',\n 'object', 'output', 'progress', 'q', 'ruby', 's', 'samp', /* 'script', */ 'select', 'small',\n 'span', 'strong', 'sub', 'sup', 'svg', 'template', 'textarea', 'time', 'u', 'var',\n 'video', 'wbr', 'text',\n // obsolete inline tags\n 'acronym', 'big', 'strike', 'tt'\n ]);\n this.inline_custom_elements = this._get_boolean('inline_custom_elements', true);\n this.void_elements = this._get_array('void_elements', [\n // HTLM void elements - aka self-closing tags - aka singletons\n // https://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen',\n 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr',\n // NOTE: Optional tags are too complex for a simple list\n // they are hard coded in _do_optional_end_element\n\n // Doctype and xml elements\n '!doctype', '?xml',\n\n // obsolete tags\n // basefont: https://www.computerhope.com/jargon/h/html-basefont-tag.htm\n // isndex: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/isindex\n 'basefont', 'isindex'\n ]);\n this.unformatted = this._get_array('unformatted', []);\n this.content_unformatted = this._get_array('content_unformatted', [\n 'pre', 'textarea'\n ]);\n this.unformatted_content_delimiter = this._get_characters('unformatted_content_delimiter');\n this.indent_scripts = this._get_selection('indent_scripts', ['normal', 'keep', 'separate']);\n\n}\nOptions.prototype = new BaseOptions();\n\n\n\nmodule.exports.Options = Options;\n",
25
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar BaseTokenizer = require('../core/tokenizer').Tokenizer;\nvar BASETOKEN = require('../core/tokenizer').TOKEN;\nvar Directives = require('../core/directives').Directives;\nvar TemplatablePattern = require('../core/templatablepattern').TemplatablePattern;\nvar Pattern = require('../core/pattern').Pattern;\n\nvar TOKEN = {\n TAG_OPEN: 'TK_TAG_OPEN',\n TAG_CLOSE: 'TK_TAG_CLOSE',\n CONTROL_FLOW_OPEN: 'TK_CONTROL_FLOW_OPEN',\n CONTROL_FLOW_CLOSE: 'TK_CONTROL_FLOW_CLOSE',\n ATTRIBUTE: 'TK_ATTRIBUTE',\n EQUALS: 'TK_EQUALS',\n VALUE: 'TK_VALUE',\n COMMENT: 'TK_COMMENT',\n TEXT: 'TK_TEXT',\n UNKNOWN: 'TK_UNKNOWN',\n START: BASETOKEN.START,\n RAW: BASETOKEN.RAW,\n EOF: BASETOKEN.EOF\n};\n\nvar directives_core = new Directives(/<\\!--/, /-->/);\n\nvar Tokenizer = function(input_string, options) {\n BaseTokenizer.call(this, input_string, options);\n this._current_tag_name = '';\n\n // Words end at whitespace or when a tag starts\n // if we are indenting handlebars, they are considered tags\n var templatable_reader = new TemplatablePattern(this._input).read_options(this._options);\n var pattern_reader = new Pattern(this._input);\n\n this.__patterns = {\n word: templatable_reader.until(/[\\n\\r\\t <]/),\n word_control_flow_close_excluded: templatable_reader.until(/[\\n\\r\\t <}]/),\n single_quote: templatable_reader.until_after(/'/),\n double_quote: templatable_reader.until_after(/\"/),\n attribute: templatable_reader.until(/[\\n\\r\\t =>]|\\/>/),\n element_name: templatable_reader.until(/[\\n\\r\\t >\\/]/),\n\n angular_control_flow_start: pattern_reader.matching(/\\@[a-zA-Z]+[^({]*[({]/),\n handlebars_comment: pattern_reader.starting_with(/{{!--/).until_after(/--}}/),\n handlebars: pattern_reader.starting_with(/{{/).until_after(/}}/),\n handlebars_open: pattern_reader.until(/[\\n\\r\\t }]/),\n handlebars_raw_close: pattern_reader.until(/}}/),\n comment: pattern_reader.starting_with(/<!--/).until_after(/-->/),\n cdata: pattern_reader.starting_with(/<!\\[CDATA\\[/).until_after(/]]>/),\n // https://en.wikipedia.org/wiki/Conditional_comment\n conditional_comment: pattern_reader.starting_with(/<!\\[/).until_after(/]>/),\n processing: pattern_reader.starting_with(/<\\?/).until_after(/\\?>/)\n };\n\n if (this._options.indent_handlebars) {\n this.__patterns.word = this.__patterns.word.exclude('handlebars');\n this.__patterns.word_control_flow_close_excluded = this.__patterns.word_control_flow_close_excluded.exclude('handlebars');\n }\n\n this._unformatted_content_delimiter = null;\n\n if (this._options.unformatted_content_delimiter) {\n var literal_regexp = this._input.get_literal_regexp(this._options.unformatted_content_delimiter);\n this.__patterns.unformatted_content_delimiter =\n pattern_reader.matching(literal_regexp)\n .until_after(literal_regexp);\n }\n};\nTokenizer.prototype = new BaseTokenizer();\n\nTokenizer.prototype._is_comment = function(current_token) { // jshint unused:false\n return false; //current_token.type === TOKEN.COMMENT || current_token.type === TOKEN.UNKNOWN;\n};\n\nTokenizer.prototype._is_opening = function(current_token) {\n return current_token.type === TOKEN.TAG_OPEN || current_token.type === TOKEN.CONTROL_FLOW_OPEN;\n};\n\nTokenizer.prototype._is_closing = function(current_token, open_token) {\n return (current_token.type === TOKEN.TAG_CLOSE &&\n (open_token && (\n ((current_token.text === '>' || current_token.text === '/>') && open_token.text[0] === '<') ||\n (current_token.text === '}}' && open_token.text[0] === '{' && open_token.text[1] === '{')))\n ) || (current_token.type === TOKEN.CONTROL_FLOW_CLOSE &&\n (current_token.text === '}' && open_token.text.endsWith('{')));\n};\n\nTokenizer.prototype._reset = function() {\n this._current_tag_name = '';\n};\n\nTokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false\n var token = null;\n this._readWhitespace();\n var c = this._input.peek();\n\n if (c === null) {\n return this._create_token(TOKEN.EOF, '');\n }\n\n token = token || this._read_open_handlebars(c, open_token);\n token = token || this._read_attribute(c, previous_token, open_token);\n token = token || this._read_close(c, open_token);\n token = token || this._read_script_and_style(c, previous_token);\n token = token || this._read_control_flows(c, open_token);\n token = token || this._read_raw_content(c, previous_token, open_token);\n token = token || this._read_content_word(c, open_token);\n token = token || this._read_comment_or_cdata(c);\n token = token || this._read_processing(c);\n token = token || this._read_open(c, open_token);\n token = token || this._create_token(TOKEN.UNKNOWN, this._input.next());\n\n return token;\n};\n\nTokenizer.prototype._read_comment_or_cdata = function(c) { // jshint unused:false\n var token = null;\n var resulting_string = null;\n var directives = null;\n\n if (c === '<') {\n var peek1 = this._input.peek(1);\n // We treat all comments as literals, even more than preformatted tags\n // we only look for the appropriate closing marker\n if (peek1 === '!') {\n resulting_string = this.__patterns.comment.read();\n\n // only process directive on html comments\n if (resulting_string) {\n directives = directives_core.get_directives(resulting_string);\n if (directives && directives.ignore === 'start') {\n resulting_string += directives_core.readIgnored(this._input);\n }\n } else {\n resulting_string = this.__patterns.cdata.read();\n }\n }\n\n if (resulting_string) {\n token = this._create_token(TOKEN.COMMENT, resulting_string);\n token.directives = directives;\n }\n }\n\n return token;\n};\n\nTokenizer.prototype._read_processing = function(c) { // jshint unused:false\n var token = null;\n var resulting_string = null;\n var directives = null;\n\n if (c === '<') {\n var peek1 = this._input.peek(1);\n if (peek1 === '!' || peek1 === '?') {\n resulting_string = this.__patterns.conditional_comment.read();\n resulting_string = resulting_string || this.__patterns.processing.read();\n }\n\n if (resulting_string) {\n token = this._create_token(TOKEN.COMMENT, resulting_string);\n token.directives = directives;\n }\n }\n\n return token;\n};\n\nTokenizer.prototype._read_open = function(c, open_token) {\n var resulting_string = null;\n var token = null;\n if (!open_token || open_token.type === TOKEN.CONTROL_FLOW_OPEN) {\n if (c === '<') {\n\n resulting_string = this._input.next();\n if (this._input.peek() === '/') {\n resulting_string += this._input.next();\n }\n resulting_string += this.__patterns.element_name.read();\n token = this._create_token(TOKEN.TAG_OPEN, resulting_string);\n }\n }\n return token;\n};\n\nTokenizer.prototype._read_open_handlebars = function(c, open_token) {\n var resulting_string = null;\n var token = null;\n if (!open_token || open_token.type === TOKEN.CONTROL_FLOW_OPEN) {\n if ((this._options.templating.includes('angular') || this._options.indent_handlebars) && c === '{' && this._input.peek(1) === '{') {\n if (this._options.indent_handlebars && this._input.peek(2) === '!') {\n resulting_string = this.__patterns.handlebars_comment.read();\n resulting_string = resulting_string || this.__patterns.handlebars.read();\n token = this._create_token(TOKEN.COMMENT, resulting_string);\n } else {\n resulting_string = this.__patterns.handlebars_open.read();\n token = this._create_token(TOKEN.TAG_OPEN, resulting_string);\n }\n }\n }\n return token;\n};\n\nTokenizer.prototype._read_control_flows = function(c, open_token) {\n var resulting_string = '';\n var token = null;\n // Only check for control flows if angular templating is set\n if (!this._options.templating.includes('angular')) {\n return token;\n }\n\n if (c === '@') {\n resulting_string = this.__patterns.angular_control_flow_start.read();\n if (resulting_string === '') {\n return token;\n }\n\n var opening_parentheses_count = resulting_string.endsWith('(') ? 1 : 0;\n var closing_parentheses_count = 0;\n // The opening brace of the control flow is where the number of opening and closing parentheses equal\n // e.g. @if({value: true} !== null) { \n while (!(resulting_string.endsWith('{') && opening_parentheses_count === closing_parentheses_count)) {\n var next_char = this._input.next();\n if (next_char === null) {\n break;\n } else if (next_char === '(') {\n opening_parentheses_count++;\n } else if (next_char === ')') {\n closing_parentheses_count++;\n }\n resulting_string += next_char;\n }\n token = this._create_token(TOKEN.CONTROL_FLOW_OPEN, resulting_string);\n } else if (c === '}' && open_token && open_token.type === TOKEN.CONTROL_FLOW_OPEN) {\n resulting_string = this._input.next();\n token = this._create_token(TOKEN.CONTROL_FLOW_CLOSE, resulting_string);\n }\n return token;\n};\n\n\nTokenizer.prototype._read_close = function(c, open_token) {\n var resulting_string = null;\n var token = null;\n if (open_token && open_token.type === TOKEN.TAG_OPEN) {\n if (open_token.text[0] === '<' && (c === '>' || (c === '/' && this._input.peek(1) === '>'))) {\n resulting_string = this._input.next();\n if (c === '/') { // for close tag \"/>\"\n resulting_string += this._input.next();\n }\n token = this._create_token(TOKEN.TAG_CLOSE, resulting_string);\n } else if (open_token.text[0] === '{' && c === '}' && this._input.peek(1) === '}') {\n this._input.next();\n this._input.next();\n token = this._create_token(TOKEN.TAG_CLOSE, '}}');\n }\n }\n\n return token;\n};\n\nTokenizer.prototype._read_attribute = function(c, previous_token, open_token) {\n var token = null;\n var resulting_string = '';\n if (open_token && open_token.text[0] === '<') {\n\n if (c === '=') {\n token = this._create_token(TOKEN.EQUALS, this._input.next());\n } else if (c === '\"' || c === \"'\") {\n var content = this._input.next();\n if (c === '\"') {\n content += this.__patterns.double_quote.read();\n } else {\n content += this.__patterns.single_quote.read();\n }\n token = this._create_token(TOKEN.VALUE, content);\n } else {\n resulting_string = this.__patterns.attribute.read();\n\n if (resulting_string) {\n if (previous_token.type === TOKEN.EQUALS) {\n token = this._create_token(TOKEN.VALUE, resulting_string);\n } else {\n token = this._create_token(TOKEN.ATTRIBUTE, resulting_string);\n }\n }\n }\n }\n return token;\n};\n\nTokenizer.prototype._is_content_unformatted = function(tag_name) {\n // void_elements have no content and so cannot have unformatted content\n // script and style tags should always be read as unformatted content\n // finally content_unformatted and unformatted element contents are unformatted\n return this._options.void_elements.indexOf(tag_name) === -1 &&\n (this._options.content_unformatted.indexOf(tag_name) !== -1 ||\n this._options.unformatted.indexOf(tag_name) !== -1);\n};\n\nTokenizer.prototype._read_raw_content = function(c, previous_token, open_token) { // jshint unused:false\n var resulting_string = '';\n if (open_token && open_token.text[0] === '{') {\n resulting_string = this.__patterns.handlebars_raw_close.read();\n } else if (previous_token.type === TOKEN.TAG_CLOSE &&\n previous_token.opened.text[0] === '<' && previous_token.text[0] !== '/') {\n // ^^ empty tag has no content \n var tag_name = previous_token.opened.text.substr(1).toLowerCase();\n if (this._is_content_unformatted(tag_name)) {\n\n resulting_string = this._input.readUntil(new RegExp('</' + tag_name + '[\\\\n\\\\r\\\\t ]*?>', 'ig'));\n }\n }\n\n if (resulting_string) {\n return this._create_token(TOKEN.TEXT, resulting_string);\n }\n\n return null;\n};\n\nTokenizer.prototype._read_script_and_style = function(c, previous_token) { // jshint unused:false \n if (previous_token.type === TOKEN.TAG_CLOSE && previous_token.opened.text[0] === '<' && previous_token.text[0] !== '/') {\n var tag_name = previous_token.opened.text.substr(1).toLowerCase();\n if (tag_name === 'script' || tag_name === 'style') {\n // Script and style tags are allowed to have comments wrapping their content\n // or just have regular content.\n var token = this._read_comment_or_cdata(c);\n if (token) {\n token.type = TOKEN.TEXT;\n return token;\n }\n var resulting_string = this._input.readUntil(new RegExp('</' + tag_name + '[\\\\n\\\\r\\\\t ]*?>', 'ig'));\n if (resulting_string) {\n return this._create_token(TOKEN.TEXT, resulting_string);\n }\n }\n }\n return null;\n};\n\nTokenizer.prototype._read_content_word = function(c, open_token) {\n var resulting_string = '';\n if (this._options.unformatted_content_delimiter) {\n if (c === this._options.unformatted_content_delimiter[0]) {\n resulting_string = this.__patterns.unformatted_content_delimiter.read();\n }\n }\n\n if (!resulting_string) {\n resulting_string = (open_token && open_token.type === TOKEN.CONTROL_FLOW_OPEN) ? this.__patterns.word_control_flow_close_excluded.read() : this.__patterns.word.read();\n }\n if (resulting_string) {\n return this._create_token(TOKEN.TEXT, resulting_string);\n }\n return null;\n};\n\nmodule.exports.Tokenizer = Tokenizer;\nmodule.exports.TOKEN = TOKEN;\n",
26
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar Options = require('../html/options').Options;\nvar Output = require('../core/output').Output;\nvar Tokenizer = require('../html/tokenizer').Tokenizer;\nvar TOKEN = require('../html/tokenizer').TOKEN;\n\nvar lineBreak = /\\r\\n|[\\r\\n]/;\nvar allLineBreaks = /\\r\\n|[\\r\\n]/g;\n\nvar Printer = function(options, base_indent_string) { //handles input/output and some other printing functions\n\n this.indent_level = 0;\n this.alignment_size = 0;\n this.max_preserve_newlines = options.max_preserve_newlines;\n this.preserve_newlines = options.preserve_newlines;\n\n this._output = new Output(options, base_indent_string);\n\n};\n\nPrinter.prototype.current_line_has_match = function(pattern) {\n return this._output.current_line.has_match(pattern);\n};\n\nPrinter.prototype.set_space_before_token = function(value, non_breaking) {\n this._output.space_before_token = value;\n this._output.non_breaking_space = non_breaking;\n};\n\nPrinter.prototype.set_wrap_point = function() {\n this._output.set_indent(this.indent_level, this.alignment_size);\n this._output.set_wrap_point();\n};\n\n\nPrinter.prototype.add_raw_token = function(token) {\n this._output.add_raw_token(token);\n};\n\nPrinter.prototype.print_preserved_newlines = function(raw_token) {\n var newlines = 0;\n if (raw_token.type !== TOKEN.TEXT && raw_token.previous.type !== TOKEN.TEXT) {\n newlines = raw_token.newlines ? 1 : 0;\n }\n\n if (this.preserve_newlines) {\n newlines = raw_token.newlines < this.max_preserve_newlines + 1 ? raw_token.newlines : this.max_preserve_newlines + 1;\n }\n for (var n = 0; n < newlines; n++) {\n this.print_newline(n > 0);\n }\n\n return newlines !== 0;\n};\n\nPrinter.prototype.traverse_whitespace = function(raw_token) {\n if (raw_token.whitespace_before || raw_token.newlines) {\n if (!this.print_preserved_newlines(raw_token)) {\n this._output.space_before_token = true;\n }\n return true;\n }\n return false;\n};\n\nPrinter.prototype.previous_token_wrapped = function() {\n return this._output.previous_token_wrapped;\n};\n\nPrinter.prototype.print_newline = function(force) {\n this._output.add_new_line(force);\n};\n\nPrinter.prototype.print_token = function(token) {\n if (token.text) {\n this._output.set_indent(this.indent_level, this.alignment_size);\n this._output.add_token(token.text);\n }\n};\n\nPrinter.prototype.indent = function() {\n this.indent_level++;\n};\n\nPrinter.prototype.deindent = function() {\n if (this.indent_level > 0) {\n this.indent_level--;\n this._output.set_indent(this.indent_level, this.alignment_size);\n }\n};\n\nPrinter.prototype.get_full_indent = function(level) {\n level = this.indent_level + (level || 0);\n if (level < 1) {\n return '';\n }\n\n return this._output.get_indent_string(level);\n};\n\nvar get_type_attribute = function(start_token) {\n var result = null;\n var raw_token = start_token.next;\n\n // Search attributes for a type attribute\n while (raw_token.type !== TOKEN.EOF && start_token.closed !== raw_token) {\n if (raw_token.type === TOKEN.ATTRIBUTE && raw_token.text === 'type') {\n if (raw_token.next && raw_token.next.type === TOKEN.EQUALS &&\n raw_token.next.next && raw_token.next.next.type === TOKEN.VALUE) {\n result = raw_token.next.next.text;\n }\n break;\n }\n raw_token = raw_token.next;\n }\n\n return result;\n};\n\nvar get_custom_beautifier_name = function(tag_check, raw_token) {\n var typeAttribute = null;\n var result = null;\n\n if (!raw_token.closed) {\n return null;\n }\n\n if (tag_check === 'script') {\n typeAttribute = 'text/javascript';\n } else if (tag_check === 'style') {\n typeAttribute = 'text/css';\n }\n\n typeAttribute = get_type_attribute(raw_token) || typeAttribute;\n\n // For script and style tags that have a type attribute, only enable custom beautifiers for matching values\n // For those without a type attribute use default;\n if (typeAttribute.search('text/css') > -1) {\n result = 'css';\n } else if (typeAttribute.search(/module|((text|application|dojo)\\/(x-)?(javascript|ecmascript|jscript|livescript|(ld\\+)?json|method|aspect))/) > -1) {\n result = 'javascript';\n } else if (typeAttribute.search(/(text|application|dojo)\\/(x-)?(html)/) > -1) {\n result = 'html';\n } else if (typeAttribute.search(/test\\/null/) > -1) {\n // Test only mime-type for testing the beautifier when null is passed as beautifing function\n result = 'null';\n }\n\n return result;\n};\n\nfunction in_array(what, arr) {\n return arr.indexOf(what) !== -1;\n}\n\nfunction TagFrame(parent, parser_token, indent_level) {\n this.parent = parent || null;\n this.tag = parser_token ? parser_token.tag_name : '';\n this.indent_level = indent_level || 0;\n this.parser_token = parser_token || null;\n}\n\nfunction TagStack(printer) {\n this._printer = printer;\n this._current_frame = null;\n}\n\nTagStack.prototype.get_parser_token = function() {\n return this._current_frame ? this._current_frame.parser_token : null;\n};\n\nTagStack.prototype.record_tag = function(parser_token) { //function to record a tag and its parent in this.tags Object\n var new_frame = new TagFrame(this._current_frame, parser_token, this._printer.indent_level);\n this._current_frame = new_frame;\n};\n\nTagStack.prototype._try_pop_frame = function(frame) { //function to retrieve the opening tag to the corresponding closer\n var parser_token = null;\n\n if (frame) {\n parser_token = frame.parser_token;\n this._printer.indent_level = frame.indent_level;\n this._current_frame = frame.parent;\n }\n\n return parser_token;\n};\n\nTagStack.prototype._get_frame = function(tag_list, stop_list) { //function to retrieve the opening tag to the corresponding closer\n var frame = this._current_frame;\n\n while (frame) { //till we reach '' (the initial value);\n if (tag_list.indexOf(frame.tag) !== -1) { //if this is it use it\n break;\n } else if (stop_list && stop_list.indexOf(frame.tag) !== -1) {\n frame = null;\n break;\n }\n frame = frame.parent;\n }\n\n return frame;\n};\n\nTagStack.prototype.try_pop = function(tag, stop_list) { //function to retrieve the opening tag to the corresponding closer\n var frame = this._get_frame([tag], stop_list);\n return this._try_pop_frame(frame);\n};\n\nTagStack.prototype.indent_to_tag = function(tag_list) {\n var frame = this._get_frame(tag_list);\n if (frame) {\n this._printer.indent_level = frame.indent_level;\n }\n};\n\nfunction Beautifier(source_text, options, js_beautify, css_beautify) {\n //Wrapper function to invoke all the necessary constructors and deal with the output.\n this._source_text = source_text || '';\n options = options || {};\n this._js_beautify = js_beautify;\n this._css_beautify = css_beautify;\n this._tag_stack = null;\n\n // Allow the setting of language/file-type specific options\n // with inheritance of overall settings\n var optionHtml = new Options(options, 'html');\n\n this._options = optionHtml;\n\n this._is_wrap_attributes_force = this._options.wrap_attributes.substr(0, 'force'.length) === 'force';\n this._is_wrap_attributes_force_expand_multiline = (this._options.wrap_attributes === 'force-expand-multiline');\n this._is_wrap_attributes_force_aligned = (this._options.wrap_attributes === 'force-aligned');\n this._is_wrap_attributes_aligned_multiple = (this._options.wrap_attributes === 'aligned-multiple');\n this._is_wrap_attributes_preserve = this._options.wrap_attributes.substr(0, 'preserve'.length) === 'preserve';\n this._is_wrap_attributes_preserve_aligned = (this._options.wrap_attributes === 'preserve-aligned');\n}\n\nBeautifier.prototype.beautify = function() {\n\n // if disabled, return the input unchanged.\n if (this._options.disabled) {\n return this._source_text;\n }\n\n var source_text = this._source_text;\n var eol = this._options.eol;\n if (this._options.eol === 'auto') {\n eol = '\\n';\n if (source_text && lineBreak.test(source_text)) {\n eol = source_text.match(lineBreak)[0];\n }\n }\n\n // HACK: newline parsing inconsistent. This brute force normalizes the input.\n source_text = source_text.replace(allLineBreaks, '\\n');\n\n var baseIndentString = source_text.match(/^[\\t ]*/)[0];\n\n var last_token = {\n text: '',\n type: ''\n };\n\n var last_tag_token = new TagOpenParserToken(this._options);\n\n var printer = new Printer(this._options, baseIndentString);\n var tokens = new Tokenizer(source_text, this._options).tokenize();\n\n this._tag_stack = new TagStack(printer);\n\n var parser_token = null;\n var raw_token = tokens.next();\n while (raw_token.type !== TOKEN.EOF) {\n\n if (raw_token.type === TOKEN.TAG_OPEN || raw_token.type === TOKEN.COMMENT) {\n parser_token = this._handle_tag_open(printer, raw_token, last_tag_token, last_token, tokens);\n last_tag_token = parser_token;\n } else if ((raw_token.type === TOKEN.ATTRIBUTE || raw_token.type === TOKEN.EQUALS || raw_token.type === TOKEN.VALUE) ||\n (raw_token.type === TOKEN.TEXT && !last_tag_token.tag_complete)) {\n parser_token = this._handle_inside_tag(printer, raw_token, last_tag_token, last_token);\n } else if (raw_token.type === TOKEN.TAG_CLOSE) {\n parser_token = this._handle_tag_close(printer, raw_token, last_tag_token);\n } else if (raw_token.type === TOKEN.TEXT) {\n parser_token = this._handle_text(printer, raw_token, last_tag_token);\n } else if (raw_token.type === TOKEN.CONTROL_FLOW_OPEN) {\n parser_token = this._handle_control_flow_open(printer, raw_token);\n } else if (raw_token.type === TOKEN.CONTROL_FLOW_CLOSE) {\n parser_token = this._handle_control_flow_close(printer, raw_token);\n } else {\n // This should never happen, but if it does. Print the raw token\n printer.add_raw_token(raw_token);\n }\n\n last_token = parser_token;\n\n raw_token = tokens.next();\n }\n var sweet_code = printer._output.get_code(eol);\n\n return sweet_code;\n};\n\nBeautifier.prototype._handle_control_flow_open = function(printer, raw_token) {\n var parser_token = {\n text: raw_token.text,\n type: raw_token.type\n };\n printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true);\n if (raw_token.newlines) {\n printer.print_preserved_newlines(raw_token);\n } else {\n printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true);\n }\n printer.print_token(raw_token);\n printer.indent();\n return parser_token;\n};\n\nBeautifier.prototype._handle_control_flow_close = function(printer, raw_token) {\n var parser_token = {\n text: raw_token.text,\n type: raw_token.type\n };\n\n printer.deindent();\n if (raw_token.newlines) {\n printer.print_preserved_newlines(raw_token);\n } else {\n printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true);\n }\n printer.print_token(raw_token);\n return parser_token;\n};\n\nBeautifier.prototype._handle_tag_close = function(printer, raw_token, last_tag_token) {\n var parser_token = {\n text: raw_token.text,\n type: raw_token.type\n };\n printer.alignment_size = 0;\n last_tag_token.tag_complete = true;\n\n printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true);\n if (last_tag_token.is_unformatted) {\n printer.add_raw_token(raw_token);\n } else {\n if (last_tag_token.tag_start_char === '<') {\n printer.set_space_before_token(raw_token.text[0] === '/', true); // space before />, no space before >\n if (this._is_wrap_attributes_force_expand_multiline && last_tag_token.has_wrapped_attrs) {\n printer.print_newline(false);\n }\n }\n printer.print_token(raw_token);\n\n }\n\n if (last_tag_token.indent_content &&\n !(last_tag_token.is_unformatted || last_tag_token.is_content_unformatted)) {\n printer.indent();\n\n // only indent once per opened tag\n last_tag_token.indent_content = false;\n }\n\n if (!last_tag_token.is_inline_element &&\n !(last_tag_token.is_unformatted || last_tag_token.is_content_unformatted)) {\n printer.set_wrap_point();\n }\n\n return parser_token;\n};\n\nBeautifier.prototype._handle_inside_tag = function(printer, raw_token, last_tag_token, last_token) {\n var wrapped = last_tag_token.has_wrapped_attrs;\n var parser_token = {\n text: raw_token.text,\n type: raw_token.type\n };\n\n printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true);\n if (last_tag_token.is_unformatted) {\n printer.add_raw_token(raw_token);\n } else if (last_tag_token.tag_start_char === '{' && raw_token.type === TOKEN.TEXT) {\n // For the insides of handlebars allow newlines or a single space between open and contents\n if (printer.print_preserved_newlines(raw_token)) {\n raw_token.newlines = 0;\n printer.add_raw_token(raw_token);\n } else {\n printer.print_token(raw_token);\n }\n } else {\n if (raw_token.type === TOKEN.ATTRIBUTE) {\n printer.set_space_before_token(true);\n } else if (raw_token.type === TOKEN.EQUALS) { //no space before =\n printer.set_space_before_token(false);\n } else if (raw_token.type === TOKEN.VALUE && raw_token.previous.type === TOKEN.EQUALS) { //no space before value\n printer.set_space_before_token(false);\n }\n\n if (raw_token.type === TOKEN.ATTRIBUTE && last_tag_token.tag_start_char === '<') {\n if (this._is_wrap_attributes_preserve || this._is_wrap_attributes_preserve_aligned) {\n printer.traverse_whitespace(raw_token);\n wrapped = wrapped || raw_token.newlines !== 0;\n }\n\n // Wrap for 'force' options, and if the number of attributes is at least that specified in 'wrap_attributes_min_attrs':\n // 1. always wrap the second and beyond attributes\n // 2. wrap the first attribute only if 'force-expand-multiline' is specified\n if (this._is_wrap_attributes_force &&\n last_tag_token.attr_count >= this._options.wrap_attributes_min_attrs &&\n (last_token.type !== TOKEN.TAG_OPEN || // ie. second attribute and beyond\n this._is_wrap_attributes_force_expand_multiline)) {\n printer.print_newline(false);\n wrapped = true;\n }\n }\n printer.print_token(raw_token);\n wrapped = wrapped || printer.previous_token_wrapped();\n last_tag_token.has_wrapped_attrs = wrapped;\n }\n return parser_token;\n};\n\nBeautifier.prototype._handle_text = function(printer, raw_token, last_tag_token) {\n var parser_token = {\n text: raw_token.text,\n type: 'TK_CONTENT'\n };\n if (last_tag_token.custom_beautifier_name) { //check if we need to format javascript\n this._print_custom_beatifier_text(printer, raw_token, last_tag_token);\n } else if (last_tag_token.is_unformatted || last_tag_token.is_content_unformatted) {\n printer.add_raw_token(raw_token);\n } else {\n printer.traverse_whitespace(raw_token);\n printer.print_token(raw_token);\n }\n return parser_token;\n};\n\nBeautifier.prototype._print_custom_beatifier_text = function(printer, raw_token, last_tag_token) {\n var local = this;\n if (raw_token.text !== '') {\n\n var text = raw_token.text,\n _beautifier,\n script_indent_level = 1,\n pre = '',\n post = '';\n if (last_tag_token.custom_beautifier_name === 'javascript' && typeof this._js_beautify === 'function') {\n _beautifier = this._js_beautify;\n } else if (last_tag_token.custom_beautifier_name === 'css' && typeof this._css_beautify === 'function') {\n _beautifier = this._css_beautify;\n } else if (last_tag_token.custom_beautifier_name === 'html') {\n _beautifier = function(html_source, options) {\n var beautifier = new Beautifier(html_source, options, local._js_beautify, local._css_beautify);\n return beautifier.beautify();\n };\n }\n\n if (this._options.indent_scripts === \"keep\") {\n script_indent_level = 0;\n } else if (this._options.indent_scripts === \"separate\") {\n script_indent_level = -printer.indent_level;\n }\n\n var indentation = printer.get_full_indent(script_indent_level);\n\n // if there is at least one empty line at the end of this text, strip it\n // we'll be adding one back after the text but before the containing tag.\n text = text.replace(/\\n[ \\t]*$/, '');\n\n // Handle the case where content is wrapped in a comment or cdata.\n if (last_tag_token.custom_beautifier_name !== 'html' &&\n text[0] === '<' && text.match(/^(<!--|<!\\[CDATA\\[)/)) {\n var matched = /^(<!--[^\\n]*|<!\\[CDATA\\[)(\\n?)([ \\t\\n]*)([\\s\\S]*)(-->|]]>)$/.exec(text);\n\n // if we start to wrap but don't finish, print raw\n if (!matched) {\n printer.add_raw_token(raw_token);\n return;\n }\n\n pre = indentation + matched[1] + '\\n';\n text = matched[4];\n if (matched[5]) {\n post = indentation + matched[5];\n }\n\n // if there is at least one empty line at the end of this text, strip it\n // we'll be adding one back after the text but before the containing tag.\n text = text.replace(/\\n[ \\t]*$/, '');\n\n if (matched[2] || matched[3].indexOf('\\n') !== -1) {\n // if the first line of the non-comment text has spaces\n // use that as the basis for indenting in null case.\n matched = matched[3].match(/[ \\t]+$/);\n if (matched) {\n raw_token.whitespace_before = matched[0];\n }\n }\n }\n\n if (text) {\n if (_beautifier) {\n\n // call the Beautifier if avaliable\n var Child_options = function() {\n this.eol = '\\n';\n };\n Child_options.prototype = this._options.raw_options;\n var child_options = new Child_options();\n text = _beautifier(indentation + text, child_options);\n } else {\n // simply indent the string otherwise\n var white = raw_token.whitespace_before;\n if (white) {\n text = text.replace(new RegExp('\\n(' + white + ')?', 'g'), '\\n');\n }\n\n text = indentation + text.replace(/\\n/g, '\\n' + indentation);\n }\n }\n\n if (pre) {\n if (!text) {\n text = pre + post;\n } else {\n text = pre + text + '\\n' + post;\n }\n }\n\n printer.print_newline(false);\n if (text) {\n raw_token.text = text;\n raw_token.whitespace_before = '';\n raw_token.newlines = 0;\n printer.add_raw_token(raw_token);\n printer.print_newline(true);\n }\n }\n};\n\nBeautifier.prototype._handle_tag_open = function(printer, raw_token, last_tag_token, last_token, tokens) {\n var parser_token = this._get_tag_open_token(raw_token);\n\n if ((last_tag_token.is_unformatted || last_tag_token.is_content_unformatted) &&\n !last_tag_token.is_empty_element &&\n raw_token.type === TOKEN.TAG_OPEN && !parser_token.is_start_tag) {\n // End element tags for unformatted or content_unformatted elements\n // are printed raw to keep any newlines inside them exactly the same.\n printer.add_raw_token(raw_token);\n parser_token.start_tag_token = this._tag_stack.try_pop(parser_token.tag_name);\n } else {\n printer.traverse_whitespace(raw_token);\n this._set_tag_position(printer, raw_token, parser_token, last_tag_token, last_token);\n if (!parser_token.is_inline_element) {\n printer.set_wrap_point();\n }\n printer.print_token(raw_token);\n }\n\n // count the number of attributes\n if (parser_token.is_start_tag && this._is_wrap_attributes_force) {\n var peek_index = 0;\n var peek_token;\n do {\n peek_token = tokens.peek(peek_index);\n if (peek_token.type === TOKEN.ATTRIBUTE) {\n parser_token.attr_count += 1;\n }\n peek_index += 1;\n } while (peek_token.type !== TOKEN.EOF && peek_token.type !== TOKEN.TAG_CLOSE);\n }\n\n //indent attributes an auto, forced, aligned or forced-align line-wrap\n if (this._is_wrap_attributes_force_aligned || this._is_wrap_attributes_aligned_multiple || this._is_wrap_attributes_preserve_aligned) {\n parser_token.alignment_size = raw_token.text.length + 1;\n }\n\n if (!parser_token.tag_complete && !parser_token.is_unformatted) {\n printer.alignment_size = parser_token.alignment_size;\n }\n\n return parser_token;\n};\n\nvar TagOpenParserToken = function(options, parent, raw_token) {\n this.parent = parent || null;\n this.text = '';\n this.type = 'TK_TAG_OPEN';\n this.tag_name = '';\n this.is_inline_element = false;\n this.is_unformatted = false;\n this.is_content_unformatted = false;\n this.is_empty_element = false;\n this.is_start_tag = false;\n this.is_end_tag = false;\n this.indent_content = false;\n this.multiline_content = false;\n this.custom_beautifier_name = null;\n this.start_tag_token = null;\n this.attr_count = 0;\n this.has_wrapped_attrs = false;\n this.alignment_size = 0;\n this.tag_complete = false;\n this.tag_start_char = '';\n this.tag_check = '';\n\n if (!raw_token) {\n this.tag_complete = true;\n } else {\n var tag_check_match;\n\n this.tag_start_char = raw_token.text[0];\n this.text = raw_token.text;\n\n if (this.tag_start_char === '<') {\n tag_check_match = raw_token.text.match(/^<([^\\s>]*)/);\n this.tag_check = tag_check_match ? tag_check_match[1] : '';\n } else {\n tag_check_match = raw_token.text.match(/^{{~?(?:[\\^]|#\\*?)?([^\\s}]+)/);\n this.tag_check = tag_check_match ? tag_check_match[1] : '';\n\n // handle \"{{#> myPartial}}\" or \"{{~#> myPartial}}\"\n if ((raw_token.text.startsWith('{{#>') || raw_token.text.startsWith('{{~#>')) && this.tag_check[0] === '>') {\n if (this.tag_check === '>' && raw_token.next !== null) {\n this.tag_check = raw_token.next.text.split(' ')[0];\n } else {\n this.tag_check = raw_token.text.split('>')[1];\n }\n }\n }\n\n this.tag_check = this.tag_check.toLowerCase();\n\n if (raw_token.type === TOKEN.COMMENT) {\n this.tag_complete = true;\n }\n\n this.is_start_tag = this.tag_check.charAt(0) !== '/';\n this.tag_name = !this.is_start_tag ? this.tag_check.substr(1) : this.tag_check;\n this.is_end_tag = !this.is_start_tag ||\n (raw_token.closed && raw_token.closed.text === '/>');\n\n // if whitespace handler ~ included (i.e. {{~#if true}}), handlebars tags start at pos 3 not pos 2\n var handlebar_starts = 2;\n if (this.tag_start_char === '{' && this.text.length >= 3) {\n if (this.text.charAt(2) === '~') {\n handlebar_starts = 3;\n }\n }\n\n // handlebars tags that don't start with # or ^ are single_tags, and so also start and end.\n // if they start with # or ^, they are still considered single tags if indenting of handlebars is set to false\n this.is_end_tag = this.is_end_tag ||\n (this.tag_start_char === '{' && (!options.indent_handlebars || this.text.length < 3 || (/[^#\\^]/.test(this.text.charAt(handlebar_starts)))));\n }\n};\n\nBeautifier.prototype._get_tag_open_token = function(raw_token) { //function to get a full tag and parse its type\n var parser_token = new TagOpenParserToken(this._options, this._tag_stack.get_parser_token(), raw_token);\n\n parser_token.alignment_size = this._options.wrap_attributes_indent_size;\n\n parser_token.is_end_tag = parser_token.is_end_tag ||\n in_array(parser_token.tag_check, this._options.void_elements);\n\n parser_token.is_empty_element = parser_token.tag_complete ||\n (parser_token.is_start_tag && parser_token.is_end_tag);\n\n parser_token.is_unformatted = !parser_token.tag_complete && in_array(parser_token.tag_check, this._options.unformatted);\n parser_token.is_content_unformatted = !parser_token.is_empty_element && in_array(parser_token.tag_check, this._options.content_unformatted);\n parser_token.is_inline_element = in_array(parser_token.tag_name, this._options.inline) || (this._options.inline_custom_elements && parser_token.tag_name.includes(\"-\")) || parser_token.tag_start_char === '{';\n\n return parser_token;\n};\n\nBeautifier.prototype._set_tag_position = function(printer, raw_token, parser_token, last_tag_token, last_token) {\n\n if (!parser_token.is_empty_element) {\n if (parser_token.is_end_tag) { //this tag is a double tag so check for tag-ending\n parser_token.start_tag_token = this._tag_stack.try_pop(parser_token.tag_name); //remove it and all ancestors\n } else { // it's a start-tag\n // check if this tag is starting an element that has optional end element\n // and do an ending needed\n if (this._do_optional_end_element(parser_token)) {\n if (!parser_token.is_inline_element) {\n printer.print_newline(false);\n }\n }\n\n this._tag_stack.record_tag(parser_token); //push it on the tag stack\n\n if ((parser_token.tag_name === 'script' || parser_token.tag_name === 'style') &&\n !(parser_token.is_unformatted || parser_token.is_content_unformatted)) {\n parser_token.custom_beautifier_name = get_custom_beautifier_name(parser_token.tag_check, raw_token);\n }\n }\n }\n\n if (in_array(parser_token.tag_check, this._options.extra_liners)) { //check if this double needs an extra line\n printer.print_newline(false);\n if (!printer._output.just_added_blankline()) {\n printer.print_newline(true);\n }\n }\n\n if (parser_token.is_empty_element) { //if this tag name is a single tag type (either in the list or has a closing /)\n\n // if you hit an else case, reset the indent level if you are inside an:\n // 'if', 'unless', or 'each' block.\n if (parser_token.tag_start_char === '{' && parser_token.tag_check === 'else') {\n this._tag_stack.indent_to_tag(['if', 'unless', 'each']);\n parser_token.indent_content = true;\n // Don't add a newline if opening {{#if}} tag is on the current line\n var foundIfOnCurrentLine = printer.current_line_has_match(/{{#if/);\n if (!foundIfOnCurrentLine) {\n printer.print_newline(false);\n }\n }\n\n // Don't add a newline before elements that should remain where they are.\n if (parser_token.tag_name === '!--' && last_token.type === TOKEN.TAG_CLOSE &&\n last_tag_token.is_end_tag && parser_token.text.indexOf('\\n') === -1) {\n //Do nothing. Leave comments on same line.\n } else {\n if (!(parser_token.is_inline_element || parser_token.is_unformatted)) {\n printer.print_newline(false);\n }\n this._calcluate_parent_multiline(printer, parser_token);\n }\n } else if (parser_token.is_end_tag) { //this tag is a double tag so check for tag-ending\n var do_end_expand = false;\n\n // deciding whether a block is multiline should not be this hard\n do_end_expand = parser_token.start_tag_token && parser_token.start_tag_token.multiline_content;\n do_end_expand = do_end_expand || (!parser_token.is_inline_element &&\n !(last_tag_token.is_inline_element || last_tag_token.is_unformatted) &&\n !(last_token.type === TOKEN.TAG_CLOSE && parser_token.start_tag_token === last_tag_token) &&\n last_token.type !== 'TK_CONTENT'\n );\n\n if (parser_token.is_content_unformatted || parser_token.is_unformatted) {\n do_end_expand = false;\n }\n\n if (do_end_expand) {\n printer.print_newline(false);\n }\n } else { // it's a start-tag\n parser_token.indent_content = !parser_token.custom_beautifier_name;\n\n if (parser_token.tag_start_char === '<') {\n if (parser_token.tag_name === 'html') {\n parser_token.indent_content = this._options.indent_inner_html;\n } else if (parser_token.tag_name === 'head') {\n parser_token.indent_content = this._options.indent_head_inner_html;\n } else if (parser_token.tag_name === 'body') {\n parser_token.indent_content = this._options.indent_body_inner_html;\n }\n }\n\n if (!(parser_token.is_inline_element || parser_token.is_unformatted) &&\n (last_token.type !== 'TK_CONTENT' || parser_token.is_content_unformatted)) {\n printer.print_newline(false);\n }\n\n this._calcluate_parent_multiline(printer, parser_token);\n }\n};\n\nBeautifier.prototype._calcluate_parent_multiline = function(printer, parser_token) {\n if (parser_token.parent && printer._output.just_added_newline() &&\n !((parser_token.is_inline_element || parser_token.is_unformatted) && parser_token.parent.is_inline_element)) {\n parser_token.parent.multiline_content = true;\n }\n};\n\n//To be used for <p> tag special case:\nvar p_closers = ['address', 'article', 'aside', 'blockquote', 'details', 'div', 'dl', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'main', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'];\nvar p_parent_excludes = ['a', 'audio', 'del', 'ins', 'map', 'noscript', 'video'];\n\nBeautifier.prototype._do_optional_end_element = function(parser_token) {\n var result = null;\n // NOTE: cases of \"if there is no more content in the parent element\"\n // are handled automatically by the beautifier.\n // It assumes parent or ancestor close tag closes all children.\n // https://www.w3.org/TR/html5/syntax.html#optional-tags\n if (parser_token.is_empty_element || !parser_token.is_start_tag || !parser_token.parent) {\n return;\n\n }\n\n if (parser_token.tag_name === 'body') {\n // A head element’s end tag may be omitted if the head element is not immediately followed by a space character or a comment.\n result = result || this._tag_stack.try_pop('head');\n\n //} else if (parser_token.tag_name === 'body') {\n // DONE: A body element’s end tag may be omitted if the body element is not immediately followed by a comment.\n\n } else if (parser_token.tag_name === 'li') {\n // An li element’s end tag may be omitted if the li element is immediately followed by another li element or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('li', ['ol', 'ul', 'menu']);\n\n } else if (parser_token.tag_name === 'dd' || parser_token.tag_name === 'dt') {\n // A dd element’s end tag may be omitted if the dd element is immediately followed by another dd element or a dt element, or if there is no more content in the parent element.\n // A dt element’s end tag may be omitted if the dt element is immediately followed by another dt element or a dd element.\n result = result || this._tag_stack.try_pop('dt', ['dl']);\n result = result || this._tag_stack.try_pop('dd', ['dl']);\n\n\n } else if (parser_token.parent.tag_name === 'p' && p_closers.indexOf(parser_token.tag_name) !== -1) {\n // IMPORTANT: this else-if works because p_closers has no overlap with any other element we look for in this method\n // check for the parent element is an HTML element that is not an <a>, <audio>, <del>, <ins>, <map>, <noscript>, or <video> element, or an autonomous custom element.\n // To do this right, this needs to be coded as an inclusion of the inverse of the exclusion above.\n // But to start with (if we ignore \"autonomous custom elements\") the exclusion would be fine.\n var p_parent = parser_token.parent.parent;\n if (!p_parent || p_parent_excludes.indexOf(p_parent.tag_name) === -1) {\n result = result || this._tag_stack.try_pop('p');\n }\n } else if (parser_token.tag_name === 'rp' || parser_token.tag_name === 'rt') {\n // An rt element’s end tag may be omitted if the rt element is immediately followed by an rt or rp element, or if there is no more content in the parent element.\n // An rp element’s end tag may be omitted if the rp element is immediately followed by an rt or rp element, or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('rt', ['ruby', 'rtc']);\n result = result || this._tag_stack.try_pop('rp', ['ruby', 'rtc']);\n\n } else if (parser_token.tag_name === 'optgroup') {\n // An optgroup element’s end tag may be omitted if the optgroup element is immediately followed by another optgroup element, or if there is no more content in the parent element.\n // An option element’s end tag may be omitted if the option element is immediately followed by another option element, or if it is immediately followed by an optgroup element, or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('optgroup', ['select']);\n //result = result || this._tag_stack.try_pop('option', ['select']);\n\n } else if (parser_token.tag_name === 'option') {\n // An option element’s end tag may be omitted if the option element is immediately followed by another option element, or if it is immediately followed by an optgroup element, or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('option', ['select', 'datalist', 'optgroup']);\n\n } else if (parser_token.tag_name === 'colgroup') {\n // DONE: A colgroup element’s end tag may be omitted if the colgroup element is not immediately followed by a space character or a comment.\n // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started.\n result = result || this._tag_stack.try_pop('caption', ['table']);\n\n } else if (parser_token.tag_name === 'thead') {\n // A colgroup element's end tag may be ommitted if a thead, tfoot, tbody, or tr element is started.\n // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started.\n result = result || this._tag_stack.try_pop('caption', ['table']);\n result = result || this._tag_stack.try_pop('colgroup', ['table']);\n\n //} else if (parser_token.tag_name === 'caption') {\n // DONE: A caption element’s end tag may be omitted if the caption element is not immediately followed by a space character or a comment.\n\n } else if (parser_token.tag_name === 'tbody' || parser_token.tag_name === 'tfoot') {\n // A thead element’s end tag may be omitted if the thead element is immediately followed by a tbody or tfoot element.\n // A tbody element’s end tag may be omitted if the tbody element is immediately followed by a tbody or tfoot element, or if there is no more content in the parent element.\n // A colgroup element's end tag may be ommitted if a thead, tfoot, tbody, or tr element is started.\n // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started.\n result = result || this._tag_stack.try_pop('caption', ['table']);\n result = result || this._tag_stack.try_pop('colgroup', ['table']);\n result = result || this._tag_stack.try_pop('thead', ['table']);\n result = result || this._tag_stack.try_pop('tbody', ['table']);\n\n //} else if (parser_token.tag_name === 'tfoot') {\n // DONE: A tfoot element’s end tag may be omitted if there is no more content in the parent element.\n\n } else if (parser_token.tag_name === 'tr') {\n // A tr element’s end tag may be omitted if the tr element is immediately followed by another tr element, or if there is no more content in the parent element.\n // A colgroup element's end tag may be ommitted if a thead, tfoot, tbody, or tr element is started.\n // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started.\n result = result || this._tag_stack.try_pop('caption', ['table']);\n result = result || this._tag_stack.try_pop('colgroup', ['table']);\n result = result || this._tag_stack.try_pop('tr', ['table', 'thead', 'tbody', 'tfoot']);\n\n } else if (parser_token.tag_name === 'th' || parser_token.tag_name === 'td') {\n // A td element’s end tag may be omitted if the td element is immediately followed by a td or th element, or if there is no more content in the parent element.\n // A th element’s end tag may be omitted if the th element is immediately followed by a td or th element, or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('td', ['table', 'thead', 'tbody', 'tfoot', 'tr']);\n result = result || this._tag_stack.try_pop('th', ['table', 'thead', 'tbody', 'tfoot', 'tr']);\n }\n\n // Start element omission not handled currently\n // A head element’s start tag may be omitted if the element is empty, or if the first thing inside the head element is an element.\n // A tbody element’s start tag may be omitted if the first thing inside the tbody element is a tr element, and if the element is not immediately preceded by a tbody, thead, or tfoot element whose end tag has been omitted. (It can’t be omitted if the element is empty.)\n // A colgroup element’s start tag may be omitted if the first thing inside the colgroup element is a col element, and if the element is not immediately preceded by another colgroup element whose end tag has been omitted. (It can’t be omitted if the element is empty.)\n\n // Fix up the parent of the parser token\n parser_token.parent = this._tag_stack.get_parser_token();\n\n return result;\n};\n\nmodule.exports.Beautifier = Beautifier;\n",
27
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar Beautifier = require('./beautifier').Beautifier,\n Options = require('./options').Options;\n\nfunction style_html(html_source, options, js_beautify, css_beautify) {\n var beautifier = new Beautifier(html_source, options, js_beautify, css_beautify);\n return beautifier.beautify();\n}\n\nmodule.exports = style_html;\nmodule.exports.defaultOptions = function() {\n return new Options();\n};\n",
28
- "/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n'use strict';\n\nvar js_beautify = require('./javascript/index');\nvar css_beautify = require('./css/index');\nvar html_beautify = require('./html/index');\n\nfunction style_html(html_source, options, js, css) {\n js = js || js_beautify;\n css = css || css_beautify;\n return html_beautify(html_source, options, js, css);\n}\nstyle_html.defaultOptions = html_beautify.defaultOptions;\n\nmodule.exports.js = js_beautify;\nmodule.exports.css = css_beautify;\nmodule.exports.html = style_html;\n",
29
- "/*jshint node:true */\n/* globals define */\n/*\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n*/\n\n'use strict';\n\n/**\nThe following batches are equivalent:\n\nvar beautify_js = require('js-beautify');\nvar beautify_js = require('js-beautify').js;\nvar beautify_js = require('js-beautify').js_beautify;\n\nvar beautify_css = require('js-beautify').css;\nvar beautify_css = require('js-beautify').css_beautify;\n\nvar beautify_html = require('js-beautify').html;\nvar beautify_html = require('js-beautify').html_beautify;\n\nAll methods returned accept two arguments, the source string and an options object.\n**/\n\nfunction get_beautify(js_beautify, css_beautify, html_beautify) {\n // the default is js\n var beautify = function(src, config) {\n return js_beautify.js_beautify(src, config);\n };\n\n // short aliases\n beautify.js = js_beautify.js_beautify;\n beautify.css = css_beautify.css_beautify;\n beautify.html = html_beautify.html_beautify;\n\n // legacy aliases\n beautify.js_beautify = js_beautify.js_beautify;\n beautify.css_beautify = css_beautify.css_beautify;\n beautify.html_beautify = html_beautify.html_beautify;\n\n return beautify;\n}\n\nif (typeof define === \"function\" && define.amd) {\n // Add support for AMD ( https://github.com/amdjs/amdjs-api/wiki/AMD#defineamd-property- )\n define([\n \"./lib/beautify\",\n \"./lib/beautify-css\",\n \"./lib/beautify-html\"\n ], function(js_beautify, css_beautify, html_beautify) {\n return get_beautify(js_beautify, css_beautify, html_beautify);\n });\n} else {\n (function(mod) {\n var beautifier = require('./src/index');\n beautifier.js_beautify = beautifier.js;\n beautifier.css_beautify = beautifier.css;\n beautifier.html_beautify = beautifier.html;\n\n mod.exports = get_beautify(beautifier, beautifier, beautifier);\n\n })(module);\n}",
30
- "import type {\n IFileStorageDriver,\n ReadFileParams,\n PutFileParams,\n} from \"./types\";\n\nexport abstract class FileStorageDriver implements IFileStorageDriver {\n abstract fetch(params: ReadFileParams | string): Promise<Response>;\n abstract put(params: PutFileParams | Blob): Promise<string>;\n abstract list(folder: string): Promise<any>;\n}\n",
31
- "import type { PutFileParams, ReadFileParams } from \"./types\";\nimport { FileStorageDriver } from \"./FileStorageDriver\";\nimport { readdir } from \"fs/promises\";\n\nexport class FileSystemDriver extends FileStorageDriver {\n constructor(private folderPath: string = `${process.env.ROOT_DIR}/storage`) {\n super();\n }\n\n async put(params: PutFileParams | Blob) {\n let body: Blob | File | Buffer;\n let name: string;\n\n if (params instanceof Blob) {\n body = params;\n name = `${Bun.randomUUIDv7()}.${params.type.split(\"/\")[1].split(\";\")[0]}`;\n } else {\n body = params.body;\n name = params.name;\n }\n\n const buffer =\n body instanceof Buffer\n ? body\n : body instanceof Blob || body instanceof File\n ? Buffer.from(await body.arrayBuffer())\n : \"\";\n\n const path = `${this.folderPath}/${name}`;\n\n await Bun.write(path, buffer as any);\n\n return name;\n }\n\n async fetch(params: ReadFileParams | string) {\n let bucket = process.env.BUCKET_NAME;\n let name: string | undefined;\n\n if (typeof params === \"string\") {\n name = params;\n } else {\n bucket = params.bucket ?? bucket;\n name = params.name;\n }\n\n if (!name) {\n throw new Error(\"Object name has to be specified\");\n }\n\n const path = `${this.folderPath}/${name}`;\n const file = Bun.file(path);\n const result = Bun.file(path).stream();\n const date = new Date(file.lastModified).toUTCString();\n\n return new Response(result, {\n headers: {\n \"Content-Type\": file.type,\n \"Content-Length\": String(file.size),\n \"Cache-Control\": \"private, max-age=12000, must-revalidate\",\n // TODO: fix this.\n \"Last-Modified\": date,\n },\n });\n }\n\n async list() {\n const files = await readdir(this.folderPath);\n\n return files;\n }\n}\n",
32
- "import { ServiceProvider } from \"../ServiceProvider\";\nimport type { FileStorageDriver } from \"./drivers/FileStorageDriver\";\nimport { FileSystemDriver } from \"./drivers/FileSystemDriver\";\n\nexport class FileStorageServiceProvider extends ServiceProvider {\n driver: FileStorageDriver = new FileSystemDriver();\n\n boot() {}\n}\n",
33
- "import { HttpRequest } from \"@smithy/protocol-http\";\nexport function addExpectContinueMiddleware(options) {\n return (next) => async (args) => {\n const { request } = args;\n if (options.expectContinueHeader !== false &&\n HttpRequest.isInstance(request) &&\n request.body &&\n options.runtime === \"node\" &&\n options.requestHandler?.constructor?.name !== \"FetchHttpHandler\") {\n let sendHeader = true;\n if (typeof options.expectContinueHeader === \"number\") {\n try {\n const bodyLength = Number(request.headers?.[\"content-length\"]) ?? options.bodyLengthChecker?.(request.body) ?? Infinity;\n sendHeader = bodyLength >= options.expectContinueHeader;\n }\n catch (e) { }\n }\n else {\n sendHeader = !!options.expectContinueHeader;\n }\n if (sendHeader) {\n request.headers.Expect = \"100-continue\";\n }\n }\n return next({\n ...args,\n request,\n });\n };\n}\nexport const addExpectContinueMiddlewareOptions = {\n step: \"build\",\n tags: [\"SET_EXPECT_HEADER\", \"EXPECT_HEADER\"],\n name: \"addExpectContinueMiddleware\",\n override: true,\n};\nexport const getAddExpectContinuePlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(addExpectContinueMiddleware(options), addExpectContinueMiddlewareOptions);\n },\n});\n",
34
- "export const RequestChecksumCalculation = {\n WHEN_SUPPORTED: \"WHEN_SUPPORTED\",\n WHEN_REQUIRED: \"WHEN_REQUIRED\",\n};\nexport const DEFAULT_REQUEST_CHECKSUM_CALCULATION = RequestChecksumCalculation.WHEN_SUPPORTED;\nexport const ResponseChecksumValidation = {\n WHEN_SUPPORTED: \"WHEN_SUPPORTED\",\n WHEN_REQUIRED: \"WHEN_REQUIRED\",\n};\nexport const DEFAULT_RESPONSE_CHECKSUM_VALIDATION = RequestChecksumCalculation.WHEN_SUPPORTED;\nexport var ChecksumAlgorithm;\n(function (ChecksumAlgorithm) {\n ChecksumAlgorithm[\"MD5\"] = \"MD5\";\n ChecksumAlgorithm[\"CRC32\"] = \"CRC32\";\n ChecksumAlgorithm[\"CRC32C\"] = \"CRC32C\";\n ChecksumAlgorithm[\"CRC64NVME\"] = \"CRC64NVME\";\n ChecksumAlgorithm[\"SHA1\"] = \"SHA1\";\n ChecksumAlgorithm[\"SHA256\"] = \"SHA256\";\n})(ChecksumAlgorithm || (ChecksumAlgorithm = {}));\nexport var ChecksumLocation;\n(function (ChecksumLocation) {\n ChecksumLocation[\"HEADER\"] = \"header\";\n ChecksumLocation[\"TRAILER\"] = \"trailer\";\n})(ChecksumLocation || (ChecksumLocation = {}));\nexport const DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.CRC32;\n",
35
- "export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"ENV\"] = \"env\";\n SelectorType[\"CONFIG\"] = \"shared config entry\";\n})(SelectorType || (SelectorType = {}));\nexport const stringUnionSelector = (obj, key, union, type) => {\n if (!(key in obj))\n return undefined;\n const value = obj[key].toUpperCase();\n if (!Object.values(union).includes(value)) {\n throw new TypeError(`Cannot load ${type} '${key}'. Expected one of ${Object.values(union)}, got '${obj[key]}'.`);\n }\n return value;\n};\n",
36
- "import { DEFAULT_REQUEST_CHECKSUM_CALCULATION, RequestChecksumCalculation } from \"./constants\";\nimport { SelectorType, stringUnionSelector } from \"./stringUnionSelector\";\nexport const ENV_REQUEST_CHECKSUM_CALCULATION = \"AWS_REQUEST_CHECKSUM_CALCULATION\";\nexport const CONFIG_REQUEST_CHECKSUM_CALCULATION = \"request_checksum_calculation\";\nexport const NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => stringUnionSelector(env, ENV_REQUEST_CHECKSUM_CALCULATION, RequestChecksumCalculation, SelectorType.ENV),\n configFileSelector: (profile) => stringUnionSelector(profile, CONFIG_REQUEST_CHECKSUM_CALCULATION, RequestChecksumCalculation, SelectorType.CONFIG),\n default: DEFAULT_REQUEST_CHECKSUM_CALCULATION,\n};\n",
37
- "import { DEFAULT_RESPONSE_CHECKSUM_VALIDATION, ResponseChecksumValidation } from \"./constants\";\nimport { SelectorType, stringUnionSelector } from \"./stringUnionSelector\";\nexport const ENV_RESPONSE_CHECKSUM_VALIDATION = \"AWS_RESPONSE_CHECKSUM_VALIDATION\";\nexport const CONFIG_RESPONSE_CHECKSUM_VALIDATION = \"response_checksum_validation\";\nexport const NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => stringUnionSelector(env, ENV_RESPONSE_CHECKSUM_VALIDATION, ResponseChecksumValidation, SelectorType.ENV),\n configFileSelector: (profile) => stringUnionSelector(profile, CONFIG_RESPONSE_CHECKSUM_VALIDATION, ResponseChecksumValidation, SelectorType.CONFIG),\n default: DEFAULT_RESPONSE_CHECKSUM_VALIDATION,\n};\n",
38
- "import { setFeature } from \"@aws-sdk/core\";\nimport { HttpRequest } from \"@smithy/protocol-http\";\nimport { createBufferedReadable } from \"@smithy/util-stream\";\nimport { ChecksumAlgorithm, DEFAULT_CHECKSUM_ALGORITHM, RequestChecksumCalculation } from \"./constants\";\nimport { getChecksumAlgorithmForRequest } from \"./getChecksumAlgorithmForRequest\";\nimport { getChecksumLocationName } from \"./getChecksumLocationName\";\nimport { hasHeader } from \"./hasHeader\";\nimport { hasHeaderWithPrefix } from \"./hasHeaderWithPrefix\";\nimport { isStreaming } from \"./isStreaming\";\nimport { selectChecksumAlgorithmFunction } from \"./selectChecksumAlgorithmFunction\";\nimport { stringHasher } from \"./stringHasher\";\nexport const flexibleChecksumsMiddlewareOptions = {\n name: \"flexibleChecksumsMiddleware\",\n step: \"build\",\n tags: [\"BODY_CHECKSUM\"],\n override: true,\n};\nexport const flexibleChecksumsMiddleware = (config, middlewareConfig) => (next, context) => async (args) => {\n if (!HttpRequest.isInstance(args.request)) {\n return next(args);\n }\n if (hasHeaderWithPrefix(\"x-amz-checksum-\", args.request.headers)) {\n return next(args);\n }\n const { request, input } = args;\n const { body: requestBody, headers } = request;\n const { base64Encoder, streamHasher } = config;\n const { requestChecksumRequired, requestAlgorithmMember } = middlewareConfig;\n const requestChecksumCalculation = await config.requestChecksumCalculation();\n const requestAlgorithmMemberName = requestAlgorithmMember?.name;\n const requestAlgorithmMemberHttpHeader = requestAlgorithmMember?.httpHeader;\n if (requestAlgorithmMemberName && !input[requestAlgorithmMemberName]) {\n if (requestChecksumCalculation === RequestChecksumCalculation.WHEN_SUPPORTED || requestChecksumRequired) {\n input[requestAlgorithmMemberName] = DEFAULT_CHECKSUM_ALGORITHM;\n if (requestAlgorithmMemberHttpHeader) {\n headers[requestAlgorithmMemberHttpHeader] = DEFAULT_CHECKSUM_ALGORITHM;\n }\n }\n }\n const checksumAlgorithm = getChecksumAlgorithmForRequest(input, {\n requestChecksumRequired,\n requestAlgorithmMember: requestAlgorithmMember?.name,\n requestChecksumCalculation,\n });\n let updatedBody = requestBody;\n let updatedHeaders = headers;\n if (checksumAlgorithm) {\n switch (checksumAlgorithm) {\n case ChecksumAlgorithm.CRC32:\n setFeature(context, \"FLEXIBLE_CHECKSUMS_REQ_CRC32\", \"U\");\n break;\n case ChecksumAlgorithm.CRC32C:\n setFeature(context, \"FLEXIBLE_CHECKSUMS_REQ_CRC32C\", \"V\");\n break;\n case ChecksumAlgorithm.CRC64NVME:\n setFeature(context, \"FLEXIBLE_CHECKSUMS_REQ_CRC64\", \"W\");\n break;\n case ChecksumAlgorithm.SHA1:\n setFeature(context, \"FLEXIBLE_CHECKSUMS_REQ_SHA1\", \"X\");\n break;\n case ChecksumAlgorithm.SHA256:\n setFeature(context, \"FLEXIBLE_CHECKSUMS_REQ_SHA256\", \"Y\");\n break;\n }\n const checksumLocationName = getChecksumLocationName(checksumAlgorithm);\n const checksumAlgorithmFn = selectChecksumAlgorithmFunction(checksumAlgorithm, config);\n if (isStreaming(requestBody)) {\n const { getAwsChunkedEncodingStream, bodyLengthChecker } = config;\n updatedBody = getAwsChunkedEncodingStream(typeof config.requestStreamBufferSize === \"number\" && config.requestStreamBufferSize >= 8 * 1024\n ? createBufferedReadable(requestBody, config.requestStreamBufferSize, context.logger)\n : requestBody, {\n base64Encoder,\n bodyLengthChecker,\n checksumLocationName,\n checksumAlgorithmFn,\n streamHasher,\n });\n updatedHeaders = {\n ...headers,\n \"content-encoding\": headers[\"content-encoding\"]\n ? `${headers[\"content-encoding\"]},aws-chunked`\n : \"aws-chunked\",\n \"transfer-encoding\": \"chunked\",\n \"x-amz-decoded-content-length\": headers[\"content-length\"],\n \"x-amz-content-sha256\": \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\",\n \"x-amz-trailer\": checksumLocationName,\n };\n delete updatedHeaders[\"content-length\"];\n }\n else if (!hasHeader(checksumLocationName, headers)) {\n const rawChecksum = await stringHasher(checksumAlgorithmFn, requestBody);\n updatedHeaders = {\n ...headers,\n [checksumLocationName]: base64Encoder(rawChecksum),\n };\n }\n }\n try {\n const result = await next({\n ...args,\n request: {\n ...request,\n headers: updatedHeaders,\n body: updatedBody,\n },\n });\n return result;\n }\n catch (e) {\n if (e instanceof Error && e.name === \"InvalidChunkSizeError\") {\n try {\n if (!e.message.endsWith(\".\")) {\n e.message += \".\";\n }\n e.message +=\n \" Set [requestStreamBufferSize=number e.g. 65_536] in client constructor to instruct AWS SDK to buffer your input stream.\";\n }\n catch (ignored) {\n }\n }\n throw e;\n }\n};\n",
39
- "import { DEFAULT_CHECKSUM_ALGORITHM, RequestChecksumCalculation } from \"./constants\";\nexport const getChecksumAlgorithmForRequest = (input, { requestChecksumRequired, requestAlgorithmMember, requestChecksumCalculation }) => {\n if (!requestAlgorithmMember) {\n return requestChecksumCalculation === RequestChecksumCalculation.WHEN_SUPPORTED || requestChecksumRequired\n ? DEFAULT_CHECKSUM_ALGORITHM\n : undefined;\n }\n if (!input[requestAlgorithmMember]) {\n return undefined;\n }\n const checksumAlgorithm = input[requestAlgorithmMember];\n return checksumAlgorithm;\n};\n",
40
- "import { ChecksumAlgorithm } from \"./constants\";\nexport const getChecksumLocationName = (algorithm) => algorithm === ChecksumAlgorithm.MD5 ? \"content-md5\" : `x-amz-checksum-${algorithm.toLowerCase()}`;\n",
41
- "export const hasHeader = (header, headers) => {\n const soughtHeader = header.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n};\n",
42
- "export const hasHeaderWithPrefix = (headerPrefix, headers) => {\n const soughtHeaderPrefix = headerPrefix.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase().startsWith(soughtHeaderPrefix)) {\n return true;\n }\n }\n return false;\n};\n",
43
- "import { isArrayBuffer } from \"@smithy/is-array-buffer\";\nexport const isStreaming = (body) => body !== undefined && typeof body !== \"string\" && !ArrayBuffer.isView(body) && !isArrayBuffer(body);\n",
44
- "import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __esDecorate,\r\n __runInitializers,\r\n __propKey,\r\n __setFunctionName,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n __addDisposableResource,\r\n __disposeResources,\r\n __rewriteRelativeImportExtension,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __esDecorate,\r\n __runInitializers,\r\n __propKey,\r\n __setFunctionName,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n __addDisposableResource,\r\n __disposeResources,\r\n __rewriteRelativeImportExtension,\r\n};\r\nexport default tslib;\r\n",
45
- "import { isArrayBuffer } from \"@smithy/is-array-buffer\";\nimport { Buffer } from \"buffer\";\nexport const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => {\n if (!isArrayBuffer(input)) {\n throw new TypeError(`The \"input\" argument must be ArrayBuffer. Received type ${typeof input} (${input})`);\n }\n return Buffer.from(input, offset, length);\n};\nexport const fromString = (input, encoding) => {\n if (typeof input !== \"string\") {\n throw new TypeError(`The \"input\" argument must be of type string. Received type ${typeof input} (${input})`);\n }\n return encoding ? Buffer.from(input, encoding) : Buffer.from(input);\n};\n",
46
- "import { fromString } from \"@smithy/util-buffer-from\";\nexport const fromUtf8 = (input) => {\n const buf = fromString(input, \"utf8\");\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n};\n",
47
- "// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { fromUtf8 as fromUtf8Browser } from \"@smithy/util-utf8\";\n// Quick polyfill\nvar fromUtf8 = typeof Buffer !== \"undefined\" && Buffer.from\n ? function (input) { return Buffer.from(input, \"utf8\"); }\n : fromUtf8Browser;\nexport function convertToBuffer(data) {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array)\n return data;\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}\n//# sourceMappingURL=convertToBuffer.js.map",
48
- "// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function isEmptyData(data) {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\n//# sourceMappingURL=isEmptyData.js.map",
49
- "// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function numToUint8(num) {\n return new Uint8Array([\n (num & 0xff000000) >> 24,\n (num & 0x00ff0000) >> 16,\n (num & 0x0000ff00) >> 8,\n num & 0x000000ff,\n ]);\n}\n//# sourceMappingURL=numToUint8.js.map",
50
- "// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// IE 11 does not support Array.from, so we do it manually\nexport function uint32ArrayFrom(a_lookUpTable) {\n if (!Uint32Array.from) {\n var return_array = new Uint32Array(a_lookUpTable.length);\n var a_index = 0;\n while (a_index < a_lookUpTable.length) {\n return_array[a_index] = a_lookUpTable[a_index];\n a_index += 1;\n }\n return return_array;\n }\n return Uint32Array.from(a_lookUpTable);\n}\n//# sourceMappingURL=uint32ArrayFrom.js.map",
51
- "// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { __awaiter, __generator } from \"tslib\";\nimport { convertToBuffer, isEmptyData, numToUint8 } from \"@aws-crypto/util\";\nimport { Crc32c } from \"./index\";\nvar AwsCrc32c = /** @class */ (function () {\n function AwsCrc32c() {\n this.crc32c = new Crc32c();\n }\n AwsCrc32c.prototype.update = function (toHash) {\n if (isEmptyData(toHash))\n return;\n this.crc32c.update(convertToBuffer(toHash));\n };\n AwsCrc32c.prototype.digest = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, numToUint8(this.crc32c.digest())];\n });\n });\n };\n AwsCrc32c.prototype.reset = function () {\n this.crc32c = new Crc32c();\n };\n return AwsCrc32c;\n}());\nexport { AwsCrc32c };\n//# sourceMappingURL=aws_crc32c.js.map",
52
- "// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { __values } from \"tslib\";\nimport { uint32ArrayFrom } from \"@aws-crypto/util\";\nexport function crc32c(data) {\n return new Crc32c().update(data).digest();\n}\nvar Crc32c = /** @class */ (function () {\n function Crc32c() {\n this.checksum = 0xffffffff;\n }\n Crc32c.prototype.update = function (data) {\n var e_1, _a;\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var byte = data_1_1.value;\n this.checksum =\n (this.checksum >>> 8) ^ lookupTable[(this.checksum ^ byte) & 0xff];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return this;\n };\n Crc32c.prototype.digest = function () {\n return (this.checksum ^ 0xffffffff) >>> 0;\n };\n return Crc32c;\n}());\nexport { Crc32c };\n// prettier-ignore\nvar a_lookupTable = [\n 0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB,\n 0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24,\n 0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B, 0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384,\n 0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54, 0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B,\n 0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A, 0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35,\n 0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5, 0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA,\n 0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45, 0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A,\n 0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A, 0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595,\n 0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48, 0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957,\n 0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687, 0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198,\n 0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927, 0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38,\n 0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8, 0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7,\n 0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096, 0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789,\n 0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859, 0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46,\n 0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9, 0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6,\n 0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36, 0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829,\n 0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C, 0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93,\n 0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043, 0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C,\n 0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3, 0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC,\n 0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C, 0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033,\n 0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652, 0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D,\n 0x2892ED69, 0xDAF96E6A, 0xC9A99D9E, 0x3BC21E9D, 0xEF087A76, 0x1D63F975, 0x0E330A81, 0xFC588982,\n 0xB21572C9, 0x407EF1CA, 0x532E023E, 0xA145813D, 0x758FE5D6, 0x87E466D5, 0x94B49521, 0x66DF1622,\n 0x38CC2A06, 0xCAA7A905, 0xD9F75AF1, 0x2B9CD9F2, 0xFF56BD19, 0x0D3D3E1A, 0x1E6DCDEE, 0xEC064EED,\n 0xC38D26C4, 0x31E6A5C7, 0x22B65633, 0xD0DDD530, 0x0417B1DB, 0xF67C32D8, 0xE52CC12C, 0x1747422F,\n 0x49547E0B, 0xBB3FFD08, 0xA86F0EFC, 0x5A048DFF, 0x8ECEE914, 0x7CA56A17, 0x6FF599E3, 0x9D9E1AE0,\n 0xD3D3E1AB, 0x21B862A8, 0x32E8915C, 0xC083125F, 0x144976B4, 0xE622F5B7, 0xF5720643, 0x07198540,\n 0x590AB964, 0xAB613A67, 0xB831C993, 0x4A5A4A90, 0x9E902E7B, 0x6CFBAD78, 0x7FAB5E8C, 0x8DC0DD8F,\n 0xE330A81A, 0x115B2B19, 0x020BD8ED, 0xF0605BEE, 0x24AA3F05, 0xD6C1BC06, 0xC5914FF2, 0x37FACCF1,\n 0x69E9F0D5, 0x9B8273D6, 0x88D28022, 0x7AB90321, 0xAE7367CA, 0x5C18E4C9, 0x4F48173D, 0xBD23943E,\n 0xF36E6F75, 0x0105EC76, 0x12551F82, 0xE03E9C81, 0x34F4F86A, 0xC69F7B69, 0xD5CF889D, 0x27A40B9E,\n 0x79B737BA, 0x8BDCB4B9, 0x988C474D, 0x6AE7C44E, 0xBE2DA0A5, 0x4C4623A6, 0x5F16D052, 0xAD7D5351,\n];\nvar lookupTable = uint32ArrayFrom(a_lookupTable);\nexport { AwsCrc32c } from \"./aws_crc32c\";\n//# sourceMappingURL=index.js.map",
53
- "const generateCRC64NVMETable = () => {\n const sliceLength = 8;\n const tables = new Array(sliceLength);\n for (let slice = 0; slice < sliceLength; slice++) {\n const table = new Array(512);\n for (let i = 0; i < 256; i++) {\n let crc = BigInt(i);\n for (let j = 0; j < 8 * (slice + 1); j++) {\n if (crc & 1n) {\n crc = (crc >> 1n) ^ 0x9a6c9329ac4bc9b5n;\n }\n else {\n crc = crc >> 1n;\n }\n }\n table[i * 2] = Number((crc >> 32n) & 0xffffffffn);\n table[i * 2 + 1] = Number(crc & 0xffffffffn);\n }\n tables[slice] = new Uint32Array(table);\n }\n return tables;\n};\nlet CRC64_NVME_REVERSED_TABLE;\nlet t0, t1, t2, t3;\nlet t4, t5, t6, t7;\nconst ensureTablesInitialized = () => {\n if (!CRC64_NVME_REVERSED_TABLE) {\n CRC64_NVME_REVERSED_TABLE = generateCRC64NVMETable();\n [t0, t1, t2, t3, t4, t5, t6, t7] = CRC64_NVME_REVERSED_TABLE;\n }\n};\nexport class Crc64Nvme {\n c1 = 0;\n c2 = 0;\n constructor() {\n ensureTablesInitialized();\n this.reset();\n }\n update(data) {\n const len = data.length;\n let i = 0;\n let crc1 = this.c1;\n let crc2 = this.c2;\n while (i + 8 <= len) {\n const idx0 = ((crc2 ^ data[i++]) & 255) << 1;\n const idx1 = (((crc2 >>> 8) ^ data[i++]) & 255) << 1;\n const idx2 = (((crc2 >>> 16) ^ data[i++]) & 255) << 1;\n const idx3 = (((crc2 >>> 24) ^ data[i++]) & 255) << 1;\n const idx4 = ((crc1 ^ data[i++]) & 255) << 1;\n const idx5 = (((crc1 >>> 8) ^ data[i++]) & 255) << 1;\n const idx6 = (((crc1 >>> 16) ^ data[i++]) & 255) << 1;\n const idx7 = (((crc1 >>> 24) ^ data[i++]) & 255) << 1;\n crc1 = t7[idx0] ^ t6[idx1] ^ t5[idx2] ^ t4[idx3] ^ t3[idx4] ^ t2[idx5] ^ t1[idx6] ^ t0[idx7];\n crc2 =\n t7[idx0 + 1] ^\n t6[idx1 + 1] ^\n t5[idx2 + 1] ^\n t4[idx3 + 1] ^\n t3[idx4 + 1] ^\n t2[idx5 + 1] ^\n t1[idx6 + 1] ^\n t0[idx7 + 1];\n }\n while (i < len) {\n const idx = ((crc2 ^ data[i]) & 255) << 1;\n crc2 = ((crc2 >>> 8) | ((crc1 & 255) << 24)) >>> 0;\n crc1 = (crc1 >>> 8) ^ t0[idx];\n crc2 ^= t0[idx + 1];\n i++;\n }\n this.c1 = crc1;\n this.c2 = crc2;\n }\n async digest() {\n const c1 = this.c1 ^ 4294967295;\n const c2 = this.c2 ^ 4294967295;\n return new Uint8Array([\n c1 >>> 24,\n (c1 >>> 16) & 255,\n (c1 >>> 8) & 255,\n c1 & 255,\n c2 >>> 24,\n (c2 >>> 16) & 255,\n (c2 >>> 8) & 255,\n c2 & 255,\n ]);\n }\n reset() {\n this.c1 = 4294967295;\n this.c2 = 4294967295;\n }\n}\n",
54
- "export const crc64NvmeCrtContainer = {\n CrtCrc64Nvme: null,\n};\n",
55
- "// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { __awaiter, __generator } from \"tslib\";\nimport { convertToBuffer, isEmptyData, numToUint8 } from \"@aws-crypto/util\";\nimport { Crc32 } from \"./index\";\nvar AwsCrc32 = /** @class */ (function () {\n function AwsCrc32() {\n this.crc32 = new Crc32();\n }\n AwsCrc32.prototype.update = function (toHash) {\n if (isEmptyData(toHash))\n return;\n this.crc32.update(convertToBuffer(toHash));\n };\n AwsCrc32.prototype.digest = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, numToUint8(this.crc32.digest())];\n });\n });\n };\n AwsCrc32.prototype.reset = function () {\n this.crc32 = new Crc32();\n };\n return AwsCrc32;\n}());\nexport { AwsCrc32 };\n//# sourceMappingURL=aws_crc32.js.map",
56
- "import { __values } from \"tslib\";\nimport { uint32ArrayFrom } from \"@aws-crypto/util\";\nexport function crc32(data) {\n return new Crc32().update(data).digest();\n}\nvar Crc32 = /** @class */ (function () {\n function Crc32() {\n this.checksum = 0xffffffff;\n }\n Crc32.prototype.update = function (data) {\n var e_1, _a;\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var byte = data_1_1.value;\n this.checksum =\n (this.checksum >>> 8) ^ lookupTable[(this.checksum ^ byte) & 0xff];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return this;\n };\n Crc32.prototype.digest = function () {\n return (this.checksum ^ 0xffffffff) >>> 0;\n };\n return Crc32;\n}());\nexport { Crc32 };\n// prettier-ignore\nvar a_lookUpTable = [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,\n];\nvar lookupTable = uint32ArrayFrom(a_lookUpTable);\nexport { AwsCrc32 } from \"./aws_crc32\";\n//# sourceMappingURL=index.js.map",
57
- "import { AwsCrc32 } from \"@aws-crypto/crc32\";\nimport { numToUint8 } from \"@aws-crypto/util\";\nimport * as zlib from \"node:zlib\";\nclass NodeCrc32 {\n checksum = 0;\n update(data) {\n this.checksum = zlib.crc32(data, this.checksum);\n }\n async digest() {\n return numToUint8(this.checksum);\n }\n reset() {\n this.checksum = 0;\n }\n}\nexport const getCrc32ChecksumAlgorithmFunction = () => {\n if (typeof zlib.crc32 === \"undefined\") {\n return AwsCrc32;\n }\n return NodeCrc32;\n};\n",
58
- "import { ChecksumAlgorithm } from \"./constants\";\nexport const CLIENT_SUPPORTED_ALGORITHMS = [\n ChecksumAlgorithm.CRC32,\n ChecksumAlgorithm.CRC32C,\n ChecksumAlgorithm.CRC64NVME,\n ChecksumAlgorithm.SHA1,\n ChecksumAlgorithm.SHA256,\n];\nexport const PRIORITY_ORDER_ALGORITHMS = [\n ChecksumAlgorithm.SHA256,\n ChecksumAlgorithm.SHA1,\n ChecksumAlgorithm.CRC32,\n ChecksumAlgorithm.CRC32C,\n ChecksumAlgorithm.CRC64NVME,\n];\n",
59
- "import { AwsCrc32c } from \"@aws-crypto/crc32c\";\nimport { Crc64Nvme, crc64NvmeCrtContainer } from \"@aws-sdk/crc64-nvme\";\nimport { ChecksumAlgorithm } from \"./constants\";\nimport { getCrc32ChecksumAlgorithmFunction } from \"./getCrc32ChecksumAlgorithmFunction\";\nimport { CLIENT_SUPPORTED_ALGORITHMS } from \"./types\";\nexport const selectChecksumAlgorithmFunction = (checksumAlgorithm, config) => {\n const { checksumAlgorithms = {} } = config;\n switch (checksumAlgorithm) {\n case ChecksumAlgorithm.MD5:\n return checksumAlgorithms?.MD5 ?? config.md5;\n case ChecksumAlgorithm.CRC32:\n return checksumAlgorithms?.CRC32 ?? getCrc32ChecksumAlgorithmFunction();\n case ChecksumAlgorithm.CRC32C:\n return checksumAlgorithms?.CRC32C ?? AwsCrc32c;\n case ChecksumAlgorithm.CRC64NVME:\n if (typeof crc64NvmeCrtContainer.CrtCrc64Nvme !== \"function\") {\n return checksumAlgorithms?.CRC64NVME ?? Crc64Nvme;\n }\n return checksumAlgorithms?.CRC64NVME ?? crc64NvmeCrtContainer.CrtCrc64Nvme;\n case ChecksumAlgorithm.SHA1:\n return checksumAlgorithms?.SHA1 ?? config.sha1;\n case ChecksumAlgorithm.SHA256:\n return checksumAlgorithms?.SHA256 ?? config.sha256;\n default:\n if (checksumAlgorithms?.[checksumAlgorithm]) {\n return checksumAlgorithms[checksumAlgorithm];\n }\n throw new Error(`The checksum algorithm \"${checksumAlgorithm}\" is not supported by the client.` +\n ` Select one of ${CLIENT_SUPPORTED_ALGORITHMS}, or provide an implementation to ` +\n ` the client constructor checksums field.`);\n }\n};\n",
60
- "import { toUint8Array } from \"@smithy/util-utf8\";\nexport const stringHasher = (checksumAlgorithmFn, body) => {\n const hash = new checksumAlgorithmFn();\n hash.update(toUint8Array(body || \"\"));\n return hash.digest();\n};\n",
61
- "import { setFeature } from \"@aws-sdk/core\";\nimport { RequestChecksumCalculation, ResponseChecksumValidation } from \"./constants\";\nexport const flexibleChecksumsInputMiddlewareOptions = {\n name: \"flexibleChecksumsInputMiddleware\",\n toMiddleware: \"serializerMiddleware\",\n relation: \"before\",\n tags: [\"BODY_CHECKSUM\"],\n override: true,\n};\nexport const flexibleChecksumsInputMiddleware = (config, middlewareConfig) => (next, context) => async (args) => {\n const input = args.input;\n const { requestValidationModeMember } = middlewareConfig;\n const requestChecksumCalculation = await config.requestChecksumCalculation();\n const responseChecksumValidation = await config.responseChecksumValidation();\n switch (requestChecksumCalculation) {\n case RequestChecksumCalculation.WHEN_REQUIRED:\n setFeature(context, \"FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED\", \"a\");\n break;\n case RequestChecksumCalculation.WHEN_SUPPORTED:\n setFeature(context, \"FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED\", \"Z\");\n break;\n }\n switch (responseChecksumValidation) {\n case ResponseChecksumValidation.WHEN_REQUIRED:\n setFeature(context, \"FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED\", \"c\");\n break;\n case ResponseChecksumValidation.WHEN_SUPPORTED:\n setFeature(context, \"FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED\", \"b\");\n break;\n }\n if (requestValidationModeMember && !input[requestValidationModeMember]) {\n if (responseChecksumValidation === ResponseChecksumValidation.WHEN_SUPPORTED) {\n input[requestValidationModeMember] = \"ENABLED\";\n }\n }\n return next(args);\n};\n",
62
- "import { HttpRequest } from \"@smithy/protocol-http\";\nimport { getChecksumAlgorithmListForResponse } from \"./getChecksumAlgorithmListForResponse\";\nimport { getChecksumLocationName } from \"./getChecksumLocationName\";\nimport { isChecksumWithPartNumber } from \"./isChecksumWithPartNumber\";\nimport { validateChecksumFromResponse } from \"./validateChecksumFromResponse\";\nexport const flexibleChecksumsResponseMiddlewareOptions = {\n name: \"flexibleChecksumsResponseMiddleware\",\n toMiddleware: \"deserializerMiddleware\",\n relation: \"after\",\n tags: [\"BODY_CHECKSUM\"],\n override: true,\n};\nexport const flexibleChecksumsResponseMiddleware = (config, middlewareConfig) => (next, context) => async (args) => {\n if (!HttpRequest.isInstance(args.request)) {\n return next(args);\n }\n const input = args.input;\n const result = await next(args);\n const response = result.response;\n const { requestValidationModeMember, responseAlgorithms } = middlewareConfig;\n if (requestValidationModeMember && input[requestValidationModeMember] === \"ENABLED\") {\n const { clientName, commandName } = context;\n const customChecksumAlgorithms = Object.keys(config.checksumAlgorithms ?? {}).filter((algorithm) => {\n const responseHeader = getChecksumLocationName(algorithm);\n return response.headers[responseHeader] !== undefined;\n });\n const algoList = getChecksumAlgorithmListForResponse([\n ...(responseAlgorithms ?? []),\n ...customChecksumAlgorithms,\n ]);\n const isS3WholeObjectMultipartGetResponseChecksum = clientName === \"S3Client\" &&\n commandName === \"GetObjectCommand\" &&\n algoList.every((algorithm) => {\n const responseHeader = getChecksumLocationName(algorithm);\n const checksumFromResponse = response.headers[responseHeader];\n return !checksumFromResponse || isChecksumWithPartNumber(checksumFromResponse);\n });\n if (isS3WholeObjectMultipartGetResponseChecksum) {\n return result;\n }\n await validateChecksumFromResponse(response, {\n config,\n responseAlgorithms: algoList,\n logger: context.logger,\n });\n }\n return result;\n};\n",
63
- "import { PRIORITY_ORDER_ALGORITHMS } from \"./types\";\nexport const getChecksumAlgorithmListForResponse = (responseAlgorithms = []) => {\n const validChecksumAlgorithms = [];\n let i = PRIORITY_ORDER_ALGORITHMS.length;\n for (const algorithm of responseAlgorithms) {\n const priority = PRIORITY_ORDER_ALGORITHMS.indexOf(algorithm);\n if (priority !== -1) {\n validChecksumAlgorithms[priority] = algorithm;\n }\n else {\n validChecksumAlgorithms[i++] = algorithm;\n }\n }\n return validChecksumAlgorithms.filter(Boolean);\n};\n",
64
- "export const isChecksumWithPartNumber = (checksum) => {\n const lastHyphenIndex = checksum.lastIndexOf(\"-\");\n if (lastHyphenIndex !== -1) {\n const numberPart = checksum.slice(lastHyphenIndex + 1);\n if (!numberPart.startsWith(\"0\")) {\n const number = parseInt(numberPart, 10);\n if (!isNaN(number) && number >= 1 && number <= 10000) {\n return true;\n }\n }\n }\n return false;\n};\n",
65
- "import { createChecksumStream } from \"@smithy/util-stream\";\nimport { ChecksumAlgorithm } from \"./constants\";\nimport { getChecksum } from \"./getChecksum\";\nimport { getChecksumAlgorithmListForResponse } from \"./getChecksumAlgorithmListForResponse\";\nimport { getChecksumLocationName } from \"./getChecksumLocationName\";\nimport { isStreaming } from \"./isStreaming\";\nimport { selectChecksumAlgorithmFunction } from \"./selectChecksumAlgorithmFunction\";\nexport const validateChecksumFromResponse = async (response, { config, responseAlgorithms, logger }) => {\n const checksumAlgorithms = getChecksumAlgorithmListForResponse(responseAlgorithms);\n const { body: responseBody, headers: responseHeaders } = response;\n for (const algorithm of checksumAlgorithms) {\n const responseHeader = getChecksumLocationName(algorithm);\n const checksumFromResponse = responseHeaders[responseHeader];\n if (checksumFromResponse) {\n let checksumAlgorithmFn;\n try {\n checksumAlgorithmFn = selectChecksumAlgorithmFunction(algorithm, config);\n }\n catch (error) {\n if (algorithm === ChecksumAlgorithm.CRC64NVME) {\n logger?.warn(`Skipping ${ChecksumAlgorithm.CRC64NVME} checksum validation: ${error.message}`);\n continue;\n }\n throw error;\n }\n const { base64Encoder } = config;\n if (isStreaming(responseBody)) {\n response.body = createChecksumStream({\n expectedChecksum: checksumFromResponse,\n checksumSourceLocation: responseHeader,\n checksum: new checksumAlgorithmFn(),\n source: responseBody,\n base64Encoder,\n });\n return;\n }\n const checksum = await getChecksum(responseBody, { checksumAlgorithmFn, base64Encoder });\n if (checksum === checksumFromResponse) {\n break;\n }\n throw new Error(`Checksum mismatch: expected \"${checksum}\" but received \"${checksumFromResponse}\"` +\n ` in response header \"${responseHeader}\".`);\n }\n }\n};\n",
66
- "import { stringHasher } from \"./stringHasher\";\nexport const getChecksum = async (body, { checksumAlgorithmFn, base64Encoder }) => base64Encoder(await stringHasher(checksumAlgorithmFn, body));\n",
67
- "import { flexibleChecksumsInputMiddleware, flexibleChecksumsInputMiddlewareOptions, } from \"./flexibleChecksumsInputMiddleware\";\nimport { flexibleChecksumsMiddleware, flexibleChecksumsMiddlewareOptions } from \"./flexibleChecksumsMiddleware\";\nimport { flexibleChecksumsResponseMiddleware, flexibleChecksumsResponseMiddlewareOptions, } from \"./flexibleChecksumsResponseMiddleware\";\nexport const getFlexibleChecksumsPlugin = (config, middlewareConfig) => ({\n applyToStack: (clientStack) => {\n clientStack.add(flexibleChecksumsMiddleware(config, middlewareConfig), flexibleChecksumsMiddlewareOptions);\n clientStack.addRelativeTo(flexibleChecksumsInputMiddleware(config, middlewareConfig), flexibleChecksumsInputMiddlewareOptions);\n clientStack.addRelativeTo(flexibleChecksumsResponseMiddleware(config, middlewareConfig), flexibleChecksumsResponseMiddlewareOptions);\n },\n});\n",
68
- "import { normalizeProvider } from \"@smithy/util-middleware\";\nimport { DEFAULT_REQUEST_CHECKSUM_CALCULATION, DEFAULT_RESPONSE_CHECKSUM_VALIDATION } from \"./constants\";\nexport const resolveFlexibleChecksumsConfig = (input) => {\n const { requestChecksumCalculation, responseChecksumValidation, requestStreamBufferSize } = input;\n return Object.assign(input, {\n requestChecksumCalculation: normalizeProvider(requestChecksumCalculation ?? DEFAULT_REQUEST_CHECKSUM_CALCULATION),\n responseChecksumValidation: normalizeProvider(responseChecksumValidation ?? DEFAULT_RESPONSE_CHECKSUM_VALIDATION),\n requestStreamBufferSize: Number(requestStreamBufferSize ?? 0),\n checksumAlgorithms: input.checksumAlgorithms ?? {},\n });\n};\n",
69
- "import { getAddExpectContinuePlugin } from \"@aws-sdk/middleware-expect-continue\";\nimport { resolveFlexibleChecksumsConfig, } from \"@aws-sdk/middleware-flexible-checksums\";\nimport { getHostHeaderPlugin, resolveHostHeaderConfig, } from \"@aws-sdk/middleware-host-header\";\nimport { getLoggerPlugin } from \"@aws-sdk/middleware-logger\";\nimport { getRecursionDetectionPlugin } from \"@aws-sdk/middleware-recursion-detection\";\nimport { getRegionRedirectMiddlewarePlugin, getS3ExpressHttpSigningPlugin, getS3ExpressPlugin, getValidateBucketNamePlugin, resolveS3Config, } from \"@aws-sdk/middleware-sdk-s3\";\nimport { getUserAgentPlugin, resolveUserAgentConfig, } from \"@aws-sdk/middleware-user-agent\";\nimport { resolveRegionConfig } from \"@smithy/config-resolver\";\nimport { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from \"@smithy/core\";\nimport { getSchemaSerdePlugin } from \"@smithy/core/schema\";\nimport { resolveEventStreamSerdeConfig, } from \"@smithy/eventstream-serde-config-resolver\";\nimport { getContentLengthPlugin } from \"@smithy/middleware-content-length\";\nimport { resolveEndpointConfig, } from \"@smithy/middleware-endpoint\";\nimport { getRetryPlugin, resolveRetryConfig, } from \"@smithy/middleware-retry\";\nimport { Client as __Client, } from \"@smithy/smithy-client\";\nimport { defaultS3HttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from \"./auth/httpAuthSchemeProvider\";\nimport { CreateSessionCommand, } from \"./commands/CreateSessionCommand\";\nimport { resolveClientEndpointParameters, } from \"./endpoint/EndpointParameters\";\nimport { getRuntimeConfig as __getRuntimeConfig } from \"./runtimeConfig\";\nimport { resolveRuntimeExtensions } from \"./runtimeExtensions\";\nexport { __Client };\nexport class S3Client extends __Client {\n config;\n constructor(...[configuration]) {\n const _config_0 = __getRuntimeConfig(configuration || {});\n super(_config_0);\n this.initConfig = _config_0;\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveUserAgentConfig(_config_1);\n const _config_3 = resolveFlexibleChecksumsConfig(_config_2);\n const _config_4 = resolveRetryConfig(_config_3);\n const _config_5 = resolveRegionConfig(_config_4);\n const _config_6 = resolveHostHeaderConfig(_config_5);\n const _config_7 = resolveEndpointConfig(_config_6);\n const _config_8 = resolveEventStreamSerdeConfig(_config_7);\n const _config_9 = resolveHttpAuthSchemeConfig(_config_8);\n const _config_10 = resolveS3Config(_config_9, { session: [() => this, CreateSessionCommand] });\n const _config_11 = resolveRuntimeExtensions(_config_10, configuration?.extensions || []);\n this.config = _config_11;\n this.middlewareStack.use(getSchemaSerdePlugin(this.config));\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n httpAuthSchemeParametersProvider: defaultS3HttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n \"aws.auth#sigv4a\": config.credentials,\n }),\n }));\n this.middlewareStack.use(getHttpSigningPlugin(this.config));\n this.middlewareStack.use(getValidateBucketNamePlugin(this.config));\n this.middlewareStack.use(getAddExpectContinuePlugin(this.config));\n this.middlewareStack.use(getRegionRedirectMiddlewarePlugin(this.config));\n this.middlewareStack.use(getS3ExpressPlugin(this.config));\n this.middlewareStack.use(getS3ExpressHttpSigningPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n",
70
- "import { HttpRequest } from \"@smithy/protocol-http\";\nimport { NoOpLogger } from \"@smithy/smithy-client\";\nconst CONTENT_LENGTH_HEADER = \"content-length\";\nconst DECODED_CONTENT_LENGTH_HEADER = \"x-amz-decoded-content-length\";\nexport function checkContentLengthHeader() {\n return (next, context) => async (args) => {\n const { request } = args;\n if (HttpRequest.isInstance(request)) {\n if (!(CONTENT_LENGTH_HEADER in request.headers) && !(DECODED_CONTENT_LENGTH_HEADER in request.headers)) {\n const message = `Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.`;\n if (typeof context?.logger?.warn === \"function\" && !(context.logger instanceof NoOpLogger)) {\n context.logger.warn(message);\n }\n else {\n console.warn(message);\n }\n }\n }\n return next({ ...args });\n };\n}\nexport const checkContentLengthHeaderMiddlewareOptions = {\n step: \"finalizeRequest\",\n tags: [\"CHECK_CONTENT_LENGTH_HEADER\"],\n name: \"getCheckContentLengthHeaderPlugin\",\n override: true,\n};\nexport const getCheckContentLengthHeaderPlugin = (unused) => ({\n applyToStack: (clientStack) => {\n clientStack.add(checkContentLengthHeader(), checkContentLengthHeaderMiddlewareOptions);\n },\n});\n",
71
- "export const regionRedirectEndpointMiddleware = (config) => {\n return (next, context) => async (args) => {\n const originalRegion = await config.region();\n const regionProviderRef = config.region;\n let unlock = () => { };\n if (context.__s3RegionRedirect) {\n Object.defineProperty(config, \"region\", {\n writable: false,\n value: async () => {\n return context.__s3RegionRedirect;\n },\n });\n unlock = () => Object.defineProperty(config, \"region\", {\n writable: true,\n value: regionProviderRef,\n });\n }\n try {\n const result = await next(args);\n if (context.__s3RegionRedirect) {\n unlock();\n const region = await config.region();\n if (originalRegion !== region) {\n throw new Error(\"Region was not restored following S3 region redirect.\");\n }\n }\n return result;\n }\n catch (e) {\n unlock();\n throw e;\n }\n };\n};\nexport const regionRedirectEndpointMiddlewareOptions = {\n tags: [\"REGION_REDIRECT\", \"S3\"],\n name: \"regionRedirectEndpointMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: \"endpointV2Middleware\",\n};\n",
72
- "import { regionRedirectEndpointMiddleware, regionRedirectEndpointMiddlewareOptions, } from \"./region-redirect-endpoint-middleware\";\nexport function regionRedirectMiddleware(clientConfig) {\n return (next, context) => async (args) => {\n try {\n return await next(args);\n }\n catch (err) {\n if (clientConfig.followRegionRedirects) {\n const statusCode = err?.$metadata?.httpStatusCode;\n const isHeadBucket = context.commandName === \"HeadBucketCommand\";\n const bucketRegionHeader = err?.$response?.headers?.[\"x-amz-bucket-region\"];\n if (bucketRegionHeader) {\n if (statusCode === 301 ||\n (statusCode === 400 && (err?.name === \"IllegalLocationConstraintException\" || isHeadBucket))) {\n try {\n const actualRegion = bucketRegionHeader;\n context.logger?.debug(`Redirecting from ${await clientConfig.region()} to ${actualRegion}`);\n context.__s3RegionRedirect = actualRegion;\n }\n catch (e) {\n throw new Error(\"Region redirect failed: \" + e);\n }\n return next(args);\n }\n }\n }\n throw err;\n }\n };\n}\nexport const regionRedirectMiddlewareOptions = {\n step: \"initialize\",\n tags: [\"REGION_REDIRECT\", \"S3\"],\n name: \"regionRedirectMiddleware\",\n override: true,\n};\nexport const getRegionRedirectMiddlewarePlugin = (clientConfig) => ({\n applyToStack: (clientStack) => {\n clientStack.add(regionRedirectMiddleware(clientConfig), regionRedirectMiddlewareOptions);\n clientStack.addRelativeTo(regionRedirectEndpointMiddleware(clientConfig), regionRedirectEndpointMiddlewareOptions);\n },\n});\n",
73
- "import { HttpResponse } from \"@smithy/protocol-http\";\nimport { parseRfc7231DateTime } from \"@smithy/smithy-client\";\nexport const s3ExpiresMiddleware = (config) => {\n return (next, context) => async (args) => {\n const result = await next(args);\n const { response } = result;\n if (HttpResponse.isInstance(response)) {\n if (response.headers.expires) {\n response.headers.expiresstring = response.headers.expires;\n try {\n parseRfc7231DateTime(response.headers.expires);\n }\n catch (e) {\n context.logger?.warn(`AWS SDK Warning for ${context.clientName}::${context.commandName} response parsing (${response.headers.expires}): ${e}`);\n delete response.headers.expires;\n }\n }\n }\n return result;\n };\n};\nexport const s3ExpiresMiddlewareOptions = {\n tags: [\"S3\"],\n name: \"s3ExpiresMiddleware\",\n override: true,\n relation: \"after\",\n toMiddleware: \"deserializerMiddleware\",\n};\nexport const getS3ExpiresMiddlewarePlugin = (clientConfig) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(s3ExpiresMiddleware(clientConfig), s3ExpiresMiddlewareOptions);\n },\n});\n",
74
- "export class S3ExpressIdentityCache {\n data;\n lastPurgeTime = Date.now();\n static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS = 30_000;\n constructor(data = {}) {\n this.data = data;\n }\n get(key) {\n const entry = this.data[key];\n if (!entry) {\n return;\n }\n return entry;\n }\n set(key, entry) {\n this.data[key] = entry;\n return entry;\n }\n delete(key) {\n delete this.data[key];\n }\n async purgeExpired() {\n const now = Date.now();\n if (this.lastPurgeTime + S3ExpressIdentityCache.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS > now) {\n return;\n }\n for (const key in this.data) {\n const entry = this.data[key];\n if (!entry.isRefreshing) {\n const credential = await entry.identity;\n if (credential.expiration) {\n if (credential.expiration.getTime() < now) {\n delete this.data[key];\n }\n }\n }\n }\n }\n}\n",
75
- "export class S3ExpressIdentityCacheEntry {\n _identity;\n isRefreshing;\n accessed;\n constructor(_identity, isRefreshing = false, accessed = Date.now()) {\n this._identity = _identity;\n this.isRefreshing = isRefreshing;\n this.accessed = accessed;\n }\n get identity() {\n this.accessed = Date.now();\n return this._identity;\n }\n}\n",
76
- "import { S3ExpressIdentityCache } from \"./S3ExpressIdentityCache\";\nimport { S3ExpressIdentityCacheEntry } from \"./S3ExpressIdentityCacheEntry\";\nexport class S3ExpressIdentityProviderImpl {\n createSessionFn;\n cache;\n static REFRESH_WINDOW_MS = 60_000;\n constructor(createSessionFn, cache = new S3ExpressIdentityCache()) {\n this.createSessionFn = createSessionFn;\n this.cache = cache;\n }\n async getS3ExpressIdentity(awsIdentity, identityProperties) {\n const key = identityProperties.Bucket;\n const { cache } = this;\n const entry = cache.get(key);\n if (entry) {\n return entry.identity.then((identity) => {\n const isExpired = (identity.expiration?.getTime() ?? 0) < Date.now();\n if (isExpired) {\n return cache.set(key, new S3ExpressIdentityCacheEntry(this.getIdentity(key))).identity;\n }\n const isExpiringSoon = (identity.expiration?.getTime() ?? 0) < Date.now() + S3ExpressIdentityProviderImpl.REFRESH_WINDOW_MS;\n if (isExpiringSoon && !entry.isRefreshing) {\n entry.isRefreshing = true;\n this.getIdentity(key).then((id) => {\n cache.set(key, new S3ExpressIdentityCacheEntry(Promise.resolve(id)));\n });\n }\n return identity;\n });\n }\n return cache.set(key, new S3ExpressIdentityCacheEntry(this.getIdentity(key))).identity;\n }\n async getIdentity(key) {\n await this.cache.purgeExpired().catch((error) => {\n console.warn(\"Error while clearing expired entries in S3ExpressIdentityCache: \\n\" + error);\n });\n const session = await this.createSessionFn(key);\n if (!session.Credentials?.AccessKeyId || !session.Credentials?.SecretAccessKey) {\n throw new Error(\"s3#createSession response credential missing AccessKeyId or SecretAccessKey.\");\n }\n const identity = {\n accessKeyId: session.Credentials.AccessKeyId,\n secretAccessKey: session.Credentials.SecretAccessKey,\n sessionToken: session.Credentials.SessionToken,\n expiration: session.Credentials.Expiration ? new Date(session.Credentials.Expiration) : undefined,\n };\n return identity;\n }\n}\n",
77
- "import { SignatureV4 } from \"@smithy/signature-v4\";\nimport { SESSION_TOKEN_HEADER, SESSION_TOKEN_QUERY_PARAM } from \"../constants\";\nexport class SignatureV4S3Express extends SignatureV4 {\n async signWithCredentials(requestToSign, credentials, options) {\n const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials);\n requestToSign.headers[SESSION_TOKEN_HEADER] = credentials.sessionToken;\n const privateAccess = this;\n setSingleOverride(privateAccess, credentialsWithoutSessionToken);\n return privateAccess.signRequest(requestToSign, options ?? {});\n }\n async presignWithCredentials(requestToSign, credentials, options) {\n const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials);\n delete requestToSign.headers[SESSION_TOKEN_HEADER];\n requestToSign.headers[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken;\n requestToSign.query = requestToSign.query ?? {};\n requestToSign.query[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken;\n const privateAccess = this;\n setSingleOverride(privateAccess, credentialsWithoutSessionToken);\n return this.presign(requestToSign, options);\n }\n}\nfunction getCredentialsWithoutSessionToken(credentials) {\n const credentialsWithoutSessionToken = {\n accessKeyId: credentials.accessKeyId,\n secretAccessKey: credentials.secretAccessKey,\n expiration: credentials.expiration,\n };\n return credentialsWithoutSessionToken;\n}\nfunction setSingleOverride(privateAccess, credentialsWithoutSessionToken) {\n const id = setTimeout(() => {\n throw new Error(\"SignatureV4S3Express credential override was created but not called.\");\n }, 10);\n const currentCredentialProvider = privateAccess.credentialProvider;\n const overrideCredentialsProviderOnce = () => {\n clearTimeout(id);\n privateAccess.credentialProvider = currentCredentialProvider;\n return Promise.resolve(credentialsWithoutSessionToken);\n };\n privateAccess.credentialProvider = overrideCredentialsProviderOnce;\n}\n",
78
- "import { booleanSelector, SelectorType } from \"@smithy/util-config-provider\";\nexport const S3_EXPRESS_BUCKET_TYPE = \"Directory\";\nexport const S3_EXPRESS_BACKEND = \"S3Express\";\nexport const S3_EXPRESS_AUTH_SCHEME = \"sigv4-s3express\";\nexport const SESSION_TOKEN_QUERY_PARAM = \"X-Amz-S3session-Token\";\nexport const SESSION_TOKEN_HEADER = SESSION_TOKEN_QUERY_PARAM.toLowerCase();\nexport const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME = \"AWS_S3_DISABLE_EXPRESS_SESSION_AUTH\";\nexport const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME = \"s3_disable_express_session_auth\";\nexport const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS = {\n environmentVariableSelector: (env) => booleanSelector(env, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME, SelectorType.ENV),\n configFileSelector: (profile) => booleanSelector(profile, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME, SelectorType.CONFIG),\n default: false,\n};\n",
79
- "import { setFeature } from \"@aws-sdk/core\";\nimport { HttpRequest } from \"@smithy/protocol-http\";\nimport { S3_EXPRESS_AUTH_SCHEME, S3_EXPRESS_BACKEND, S3_EXPRESS_BUCKET_TYPE, SESSION_TOKEN_HEADER } from \"../constants\";\nexport const s3ExpressMiddleware = (options) => {\n return (next, context) => async (args) => {\n if (context.endpointV2) {\n const endpoint = context.endpointV2;\n const isS3ExpressAuth = endpoint.properties?.authSchemes?.[0]?.name === S3_EXPRESS_AUTH_SCHEME;\n const isS3ExpressBucket = endpoint.properties?.backend === S3_EXPRESS_BACKEND ||\n endpoint.properties?.bucketType === S3_EXPRESS_BUCKET_TYPE;\n if (isS3ExpressBucket) {\n setFeature(context, \"S3_EXPRESS_BUCKET\", \"J\");\n context.isS3ExpressBucket = true;\n }\n if (isS3ExpressAuth) {\n const requestBucket = args.input.Bucket;\n if (requestBucket) {\n const s3ExpressIdentity = await options.s3ExpressIdentityProvider.getS3ExpressIdentity(await options.credentials(), {\n Bucket: requestBucket,\n });\n context.s3ExpressIdentity = s3ExpressIdentity;\n if (HttpRequest.isInstance(args.request) && s3ExpressIdentity.sessionToken) {\n args.request.headers[SESSION_TOKEN_HEADER] = s3ExpressIdentity.sessionToken;\n }\n }\n }\n }\n return next(args);\n };\n};\nexport const s3ExpressMiddlewareOptions = {\n name: \"s3ExpressMiddleware\",\n step: \"build\",\n tags: [\"S3\", \"S3_EXPRESS\"],\n override: true,\n};\nexport const getS3ExpressPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(s3ExpressMiddleware(options), s3ExpressMiddlewareOptions);\n },\n});\n",
80
- "import { httpSigningMiddlewareOptions } from \"@smithy/core\";\nimport { HttpRequest } from \"@smithy/protocol-http\";\nimport { getSmithyContext } from \"@smithy/util-middleware\";\nimport { signS3Express } from \"./signS3Express\";\nconst defaultErrorHandler = (signingProperties) => (error) => {\n throw error;\n};\nconst defaultSuccessHandler = (httpResponse, signingProperties) => { };\nexport const s3ExpressHttpSigningMiddlewareOptions = httpSigningMiddlewareOptions;\nexport const s3ExpressHttpSigningMiddleware = (config) => (next, context) => async (args) => {\n if (!HttpRequest.isInstance(args.request)) {\n return next(args);\n }\n const smithyContext = getSmithyContext(context);\n const scheme = smithyContext.selectedHttpAuthScheme;\n if (!scheme) {\n throw new Error(`No HttpAuthScheme was selected: unable to sign request`);\n }\n const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme;\n let request;\n if (context.s3ExpressIdentity) {\n request = await signS3Express(context.s3ExpressIdentity, signingProperties, args.request, await config.signer());\n }\n else {\n request = await signer.sign(args.request, identity, signingProperties);\n }\n const output = await next({\n ...args,\n request,\n }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties));\n (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties);\n return output;\n};\nexport const getS3ExpressHttpSigningPlugin = (config) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(s3ExpressHttpSigningMiddleware(config), httpSigningMiddlewareOptions);\n },\n});\n",
81
- "export const signS3Express = async (s3ExpressIdentity, signingOptions, request, sigV4MultiRegionSigner) => {\n const signedRequest = await sigV4MultiRegionSigner.signWithCredentials(request, s3ExpressIdentity, {});\n if (signedRequest.headers[\"X-Amz-Security-Token\"] || signedRequest.headers[\"x-amz-security-token\"]) {\n throw new Error(\"X-Amz-Security-Token must not be set for s3-express requests.\");\n }\n return signedRequest;\n};\n",
82
- "import { S3ExpressIdentityProviderImpl } from \"./s3-express\";\nexport const resolveS3Config = (input, { session, }) => {\n const [s3ClientProvider, CreateSessionCommandCtor] = session;\n const { forcePathStyle, useAccelerateEndpoint, disableMultiregionAccessPoints, followRegionRedirects, s3ExpressIdentityProvider, bucketEndpoint, expectContinueHeader, } = input;\n return Object.assign(input, {\n forcePathStyle: forcePathStyle ?? false,\n useAccelerateEndpoint: useAccelerateEndpoint ?? false,\n disableMultiregionAccessPoints: disableMultiregionAccessPoints ?? false,\n followRegionRedirects: followRegionRedirects ?? false,\n s3ExpressIdentityProvider: s3ExpressIdentityProvider ??\n new S3ExpressIdentityProviderImpl(async (key) => s3ClientProvider().send(new CreateSessionCommandCtor({\n Bucket: key,\n }))),\n bucketEndpoint: bucketEndpoint ?? false,\n expectContinueHeader: expectContinueHeader ?? 2_097_152,\n });\n};\n",
83
- "import { HttpResponse } from \"@smithy/protocol-http\";\nimport { headStream, splitStream } from \"@smithy/util-stream\";\nconst THROW_IF_EMPTY_BODY = {\n CopyObjectCommand: true,\n UploadPartCopyCommand: true,\n CompleteMultipartUploadCommand: true,\n};\nconst MAX_BYTES_TO_INSPECT = 3000;\nexport const throw200ExceptionsMiddleware = (config) => (next, context) => async (args) => {\n const result = await next(args);\n const { response } = result;\n if (!HttpResponse.isInstance(response)) {\n return result;\n }\n const { statusCode, body: sourceBody } = response;\n if (statusCode < 200 || statusCode >= 300) {\n return result;\n }\n const isSplittableStream = typeof sourceBody?.stream === \"function\" ||\n typeof sourceBody?.pipe === \"function\" ||\n typeof sourceBody?.tee === \"function\";\n if (!isSplittableStream) {\n return result;\n }\n let bodyCopy = sourceBody;\n let body = sourceBody;\n if (sourceBody && typeof sourceBody === \"object\" && !(sourceBody instanceof Uint8Array)) {\n [bodyCopy, body] = await splitStream(sourceBody);\n }\n response.body = body;\n const bodyBytes = await collectBody(bodyCopy, {\n streamCollector: async (stream) => {\n return headStream(stream, MAX_BYTES_TO_INSPECT);\n },\n });\n if (typeof bodyCopy?.destroy === \"function\") {\n bodyCopy.destroy();\n }\n const bodyStringTail = config.utf8Encoder(bodyBytes.subarray(bodyBytes.length - 16));\n if (bodyBytes.length === 0 && THROW_IF_EMPTY_BODY[context.commandName]) {\n const err = new Error(\"S3 aborted request\");\n err.name = \"InternalError\";\n throw err;\n }\n if (bodyStringTail && bodyStringTail.endsWith(\"</Error>\")) {\n response.statusCode = 400;\n }\n return result;\n};\nconst collectBody = (streamBody = new Uint8Array(), context) => {\n if (streamBody instanceof Uint8Array) {\n return Promise.resolve(streamBody);\n }\n return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array());\n};\nexport const throw200ExceptionsMiddlewareOptions = {\n relation: \"after\",\n toMiddleware: \"deserializerMiddleware\",\n tags: [\"THROW_200_EXCEPTIONS\", \"S3\"],\n name: \"throw200ExceptionsMiddleware\",\n override: true,\n};\nexport const getThrow200ExceptionsPlugin = (config) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(throw200ExceptionsMiddleware(config), throw200ExceptionsMiddlewareOptions);\n },\n});\n",
84
- "export const validate = (str) => typeof str === \"string\" && str.indexOf(\"arn:\") === 0 && str.split(\":\").length >= 6;\nexport const parse = (arn) => {\n const segments = arn.split(\":\");\n if (segments.length < 6 || segments[0] !== \"arn\")\n throw new Error(\"Malformed ARN\");\n const [, partition, service, region, accountId, ...resource] = segments;\n return {\n partition,\n service,\n region,\n accountId,\n resource: resource.join(\":\"),\n };\n};\nexport const build = (arnObject) => {\n const { partition = \"aws\", service, region, accountId, resource } = arnObject;\n if ([service, region, accountId, resource].some((segment) => typeof segment !== \"string\")) {\n throw new Error(\"Input ARN object is invalid\");\n }\n return `arn:${partition}:${service}:${region}:${accountId}:${resource}`;\n};\n",
85
- "export function bucketEndpointMiddleware(options) {\n return (next, context) => async (args) => {\n if (options.bucketEndpoint) {\n const endpoint = context.endpointV2;\n if (endpoint) {\n const bucket = args.input.Bucket;\n if (typeof bucket === \"string\") {\n try {\n const bucketEndpointUrl = new URL(bucket);\n context.endpointV2 = {\n ...endpoint,\n url: bucketEndpointUrl,\n };\n }\n catch (e) {\n const warning = `@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${bucket} could not be parsed as URL.`;\n if (context.logger?.constructor?.name === \"NoOpLogger\") {\n console.warn(warning);\n }\n else {\n context.logger?.warn?.(warning);\n }\n throw e;\n }\n }\n }\n }\n return next(args);\n };\n}\nexport const bucketEndpointMiddlewareOptions = {\n name: \"bucketEndpointMiddleware\",\n override: true,\n relation: \"after\",\n toMiddleware: \"endpointV2Middleware\",\n};\n",
86
- "import { validate as validateArn } from \"@aws-sdk/util-arn-parser\";\nimport { bucketEndpointMiddleware, bucketEndpointMiddlewareOptions } from \"./bucket-endpoint-middleware\";\nexport function validateBucketNameMiddleware({ bucketEndpoint }) {\n return (next) => async (args) => {\n const { input: { Bucket }, } = args;\n if (!bucketEndpoint && typeof Bucket === \"string\" && !validateArn(Bucket) && Bucket.indexOf(\"/\") >= 0) {\n const err = new Error(`Bucket name shouldn't contain '/', received '${Bucket}'`);\n err.name = \"InvalidBucketName\";\n throw err;\n }\n return next({ ...args });\n };\n}\nexport const validateBucketNameMiddlewareOptions = {\n step: \"initialize\",\n tags: [\"VALIDATE_BUCKET_NAME\"],\n name: \"validateBucketNameMiddleware\",\n override: true,\n};\nexport const getValidateBucketNamePlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(validateBucketNameMiddleware(options), validateBucketNameMiddlewareOptions);\n clientStack.addRelativeTo(bucketEndpointMiddleware(options), bucketEndpointMiddlewareOptions);\n },\n});\n",
87
- "export const resolveEventStreamSerdeConfig = (input) => Object.assign(input, {\n eventStreamMarshaller: input.eventStreamSerdeProvider(input),\n});\n",
88
- "import { resolveAwsSdkSigV4AConfig, resolveAwsSdkSigV4Config, } from \"@aws-sdk/core\";\nimport { SignatureV4MultiRegion } from \"@aws-sdk/signature-v4-multi-region\";\nimport { resolveParams } from \"@smithy/middleware-endpoint\";\nimport { getSmithyContext, normalizeProvider } from \"@smithy/util-middleware\";\nimport { defaultEndpointResolver } from \"../endpoint/endpointResolver\";\nconst createEndpointRuleSetHttpAuthSchemeParametersProvider = (defaultHttpAuthSchemeParametersProvider) => async (config, context, input) => {\n if (!input) {\n throw new Error(\"Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`\");\n }\n const defaultParameters = await defaultHttpAuthSchemeParametersProvider(config, context, input);\n const instructionsFn = getSmithyContext(context)?.commandInstance?.constructor\n ?.getEndpointParameterInstructions;\n if (!instructionsFn) {\n throw new Error(`getEndpointParameterInstructions() is not defined on '${context.commandName}'`);\n }\n const endpointParameters = await resolveParams(input, { getEndpointParameterInstructions: instructionsFn }, config);\n return Object.assign(defaultParameters, endpointParameters);\n};\nconst _defaultS3HttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: getSmithyContext(context).operation,\n region: await normalizeProvider(config.region)() || (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexport const defaultS3HttpAuthSchemeParametersProvider = createEndpointRuleSetHttpAuthSchemeParametersProvider(_defaultS3HttpAuthSchemeParametersProvider);\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"s3\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createAwsAuthSigv4aHttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4a\",\n signingProperties: {\n name: \"s3\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nconst createEndpointRuleSetHttpAuthSchemeProvider = (defaultEndpointResolver, defaultHttpAuthSchemeResolver, createHttpAuthOptionFunctions) => {\n const endpointRuleSetHttpAuthSchemeProvider = (authParameters) => {\n const endpoint = defaultEndpointResolver(authParameters);\n const authSchemes = endpoint.properties?.authSchemes;\n if (!authSchemes) {\n return defaultHttpAuthSchemeResolver(authParameters);\n }\n const options = [];\n for (const scheme of authSchemes) {\n const { name: resolvedName, properties = {}, ...rest } = scheme;\n const name = resolvedName.toLowerCase();\n if (resolvedName !== name) {\n console.warn(`HttpAuthScheme has been normalized with lowercasing: '${resolvedName}' to '${name}'`);\n }\n let schemeId;\n if (name === \"sigv4a\") {\n schemeId = \"aws.auth#sigv4a\";\n const sigv4Present = authSchemes.find((s) => {\n const name = s.name.toLowerCase();\n return name !== \"sigv4a\" && name.startsWith(\"sigv4\");\n });\n if (SignatureV4MultiRegion.sigv4aDependency() === \"none\" && sigv4Present) {\n continue;\n }\n }\n else if (name.startsWith(\"sigv4\")) {\n schemeId = \"aws.auth#sigv4\";\n }\n else {\n throw new Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${name}'`);\n }\n const createOption = createHttpAuthOptionFunctions[schemeId];\n if (!createOption) {\n throw new Error(`Could not find HttpAuthOption create function for '${schemeId}'`);\n }\n const option = createOption(authParameters);\n option.schemeId = schemeId;\n option.signingProperties = { ...(option.signingProperties || {}), ...rest, ...properties };\n options.push(option);\n }\n return options;\n };\n return endpointRuleSetHttpAuthSchemeProvider;\n};\nconst _defaultS3HttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n options.push(createAwsAuthSigv4aHttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexport const defaultS3HttpAuthSchemeProvider = createEndpointRuleSetHttpAuthSchemeProvider(defaultEndpointResolver, _defaultS3HttpAuthSchemeProvider, {\n \"aws.auth#sigv4\": createAwsAuthSigv4HttpAuthOption,\n \"aws.auth#sigv4a\": createAwsAuthSigv4aHttpAuthOption,\n});\nexport const resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = resolveAwsSdkSigV4Config(config);\n const config_1 = resolveAwsSdkSigV4AConfig(config_0);\n return Object.assign(config_1, {\n authSchemePreference: normalizeProvider(config.authSchemePreference ?? []),\n });\n};\n",
89
- "import { SignatureV4S3Express } from \"@aws-sdk/middleware-sdk-s3\";\nimport { signatureV4aContainer } from \"@smithy/signature-v4\";\nimport { signatureV4CrtContainer } from \"./signature-v4-crt-container\";\nexport class SignatureV4MultiRegion {\n sigv4aSigner;\n sigv4Signer;\n signerOptions;\n static sigv4aDependency() {\n if (typeof signatureV4CrtContainer.CrtSignerV4 === \"function\") {\n return \"crt\";\n }\n else if (typeof signatureV4aContainer.SignatureV4a === \"function\") {\n return \"js\";\n }\n return \"none\";\n }\n constructor(options) {\n this.sigv4Signer = new SignatureV4S3Express(options);\n this.signerOptions = options;\n }\n async sign(requestToSign, options = {}) {\n if (options.signingRegion === \"*\") {\n return this.getSigv4aSigner().sign(requestToSign, options);\n }\n return this.sigv4Signer.sign(requestToSign, options);\n }\n async signWithCredentials(requestToSign, credentials, options = {}) {\n if (options.signingRegion === \"*\") {\n const signer = this.getSigv4aSigner();\n const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4;\n if (CrtSignerV4 && signer instanceof CrtSignerV4) {\n return signer.signWithCredentials(requestToSign, credentials, options);\n }\n else {\n throw new Error(`signWithCredentials with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. ` +\n `Please check whether you have installed the \"@aws-sdk/signature-v4-crt\" package explicitly. ` +\n `You must also register the package by calling [require(\"@aws-sdk/signature-v4-crt\");] ` +\n `or an ESM equivalent such as [import \"@aws-sdk/signature-v4-crt\";]. ` +\n `For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`);\n }\n }\n return this.sigv4Signer.signWithCredentials(requestToSign, credentials, options);\n }\n async presign(originalRequest, options = {}) {\n if (options.signingRegion === \"*\") {\n const signer = this.getSigv4aSigner();\n const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4;\n if (CrtSignerV4 && signer instanceof CrtSignerV4) {\n return signer.presign(originalRequest, options);\n }\n else {\n throw new Error(`presign with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. ` +\n `Please check whether you have installed the \"@aws-sdk/signature-v4-crt\" package explicitly. ` +\n `You must also register the package by calling [require(\"@aws-sdk/signature-v4-crt\");] ` +\n `or an ESM equivalent such as [import \"@aws-sdk/signature-v4-crt\";]. ` +\n `For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`);\n }\n }\n return this.sigv4Signer.presign(originalRequest, options);\n }\n async presignWithCredentials(originalRequest, credentials, options = {}) {\n if (options.signingRegion === \"*\") {\n throw new Error(\"Method presignWithCredentials is not supported for [signingRegion=*].\");\n }\n return this.sigv4Signer.presignWithCredentials(originalRequest, credentials, options);\n }\n getSigv4aSigner() {\n if (!this.sigv4aSigner) {\n const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4;\n const JsSigV4aSigner = signatureV4aContainer.SignatureV4a;\n if (this.signerOptions.runtime === \"node\") {\n if (!CrtSignerV4 && !JsSigV4aSigner) {\n throw new Error(\"Neither CRT nor JS SigV4a implementation is available. \" +\n \"Please load either @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a. \" +\n \"For more information please go to \" +\n \"https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt\");\n }\n if (CrtSignerV4 && typeof CrtSignerV4 === \"function\") {\n this.sigv4aSigner = new CrtSignerV4({\n ...this.signerOptions,\n signingAlgorithm: 1,\n });\n }\n else if (JsSigV4aSigner && typeof JsSigV4aSigner === \"function\") {\n this.sigv4aSigner = new JsSigV4aSigner({\n ...this.signerOptions,\n });\n }\n else {\n throw new Error(\"Available SigV4a implementation is not a valid constructor. \" +\n \"Please ensure you've properly imported @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a.\" +\n \"For more information please go to \" +\n \"https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt\");\n }\n }\n else {\n if (!JsSigV4aSigner || typeof JsSigV4aSigner !== \"function\") {\n throw new Error(\"JS SigV4a implementation is not available or not a valid constructor. \" +\n \"Please check whether you have installed the @aws-sdk/signature-v4a package explicitly. The CRT implementation is not available for browsers. \" +\n \"You must also register the package by calling [require('@aws-sdk/signature-v4a');] \" +\n \"or an ESM equivalent such as [import '@aws-sdk/signature-v4a';]. \" +\n \"For more information please go to \" +\n \"https://github.com/aws/aws-sdk-js-v3#using-javascript-non-crt-implementation-of-sigv4a\");\n }\n this.sigv4aSigner = new JsSigV4aSigner({\n ...this.signerOptions,\n });\n }\n }\n return this.sigv4aSigner;\n }\n}\n",
90
- "export const signatureV4CrtContainer = {\n CrtSignerV4: null,\n};\n",
91
- "import { awsEndpointFunctions } from \"@aws-sdk/util-endpoints\";\nimport { customEndpointFunctions, EndpointCache, resolveEndpoint } from \"@smithy/util-endpoints\";\nimport { ruleSet } from \"./ruleset\";\nconst cache = new EndpointCache({\n size: 50,\n params: [\n \"Accelerate\",\n \"Bucket\",\n \"DisableAccessPoints\",\n \"DisableMultiRegionAccessPoints\",\n \"DisableS3ExpressSessionAuth\",\n \"Endpoint\",\n \"ForcePathStyle\",\n \"Region\",\n \"UseArnRegion\",\n \"UseDualStack\",\n \"UseFIPS\",\n \"UseGlobalEndpoint\",\n \"UseObjectLambdaEndpoint\",\n \"UseS3ExpressControlEndpoint\",\n ],\n});\nexport const defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => resolveEndpoint(ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n",
92
- "const cs = \"required\", ct = \"type\", cu = \"rules\", cv = \"conditions\", cw = \"fn\", cx = \"argv\", cy = \"ref\", cz = \"assign\", cA = \"url\", cB = \"properties\", cC = \"backend\", cD = \"authSchemes\", cE = \"disableDoubleEncoding\", cF = \"signingName\", cG = \"signingRegion\", cH = \"headers\", cI = \"signingRegionSet\";\nconst a = 6, b = false, c = true, d = \"isSet\", e = \"booleanEquals\", f = \"error\", g = \"aws.partition\", h = \"stringEquals\", i = \"getAttr\", j = \"name\", k = \"substring\", l = \"bucketSuffix\", m = \"parseURL\", n = \"endpoint\", o = \"tree\", p = \"aws.isVirtualHostableS3Bucket\", q = \"{url#scheme}://{Bucket}.{url#authority}{url#path}\", r = \"not\", s = \"accessPointSuffix\", t = \"{url#scheme}://{url#authority}{url#path}\", u = \"hardwareType\", v = \"regionPrefix\", w = \"bucketAliasSuffix\", x = \"outpostId\", y = \"isValidHostLabel\", z = \"sigv4a\", A = \"s3-outposts\", B = \"s3\", C = \"{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}\", D = \"https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}\", E = \"https://{Bucket}.s3.{partitionResult#dnsSuffix}\", F = \"aws.parseArn\", G = \"bucketArn\", H = \"arnType\", I = \"\", J = \"s3-object-lambda\", K = \"accesspoint\", L = \"accessPointName\", M = \"{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}\", N = \"mrapPartition\", O = \"outpostType\", P = \"arnPrefix\", Q = \"{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}\", R = \"https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", S = \"https://s3.{partitionResult#dnsSuffix}\", T = { [cs]: false, [ct]: \"string\" }, U = { [cs]: true, \"default\": false, [ct]: \"boolean\" }, V = { [cs]: false, [ct]: \"boolean\" }, W = { [cw]: e, [cx]: [{ [cy]: \"Accelerate\" }, true] }, X = { [cw]: e, [cx]: [{ [cy]: \"UseFIPS\" }, true] }, Y = { [cw]: e, [cx]: [{ [cy]: \"UseDualStack\" }, true] }, Z = { [cw]: d, [cx]: [{ [cy]: \"Endpoint\" }] }, aa = { [cw]: g, [cx]: [{ [cy]: \"Region\" }], [cz]: \"partitionResult\" }, ab = { [cw]: h, [cx]: [{ [cw]: i, [cx]: [{ [cy]: \"partitionResult\" }, j] }, \"aws-cn\"] }, ac = { [cw]: d, [cx]: [{ [cy]: \"Bucket\" }] }, ad = { [cy]: \"Bucket\" }, ae = { [cv]: [W], [f]: \"S3Express does not support S3 Accelerate.\", [ct]: f }, af = { [cv]: [Z, { [cw]: m, [cx]: [{ [cy]: \"Endpoint\" }], [cz]: \"url\" }], [cu]: [{ [cv]: [{ [cw]: d, [cx]: [{ [cy]: \"DisableS3ExpressSessionAuth\" }] }, { [cw]: e, [cx]: [{ [cy]: \"DisableS3ExpressSessionAuth\" }, true] }], [cu]: [{ [cv]: [{ [cw]: e, [cx]: [{ [cw]: i, [cx]: [{ [cy]: \"url\" }, \"isIp\"] }, true] }], [cu]: [{ [cv]: [{ [cw]: \"uriEncode\", [cx]: [ad], [cz]: \"uri_encoded_bucket\" }], [cu]: [{ [n]: { [cA]: \"{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}\", [cB]: { [cC]: \"S3Express\", [cD]: [{ [cE]: true, [j]: \"sigv4\", [cF]: \"s3express\", [cG]: \"{Region}\" }] }, [cH]: {} }, [ct]: n }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: p, [cx]: [ad, false] }], [cu]: [{ [n]: { [cA]: q, [cB]: { [cC]: \"S3Express\", [cD]: [{ [cE]: true, [j]: \"sigv4\", [cF]: \"s3express\", [cG]: \"{Region}\" }] }, [cH]: {} }, [ct]: n }], [ct]: o }, { [f]: \"S3Express bucket name is not a valid virtual hostable name.\", [ct]: f }], [ct]: o }, { [cv]: [{ [cw]: e, [cx]: [{ [cw]: i, [cx]: [{ [cy]: \"url\" }, \"isIp\"] }, true] }], [cu]: [{ [cv]: [{ [cw]: \"uriEncode\", [cx]: [ad], [cz]: \"uri_encoded_bucket\" }], [cu]: [{ [n]: { [cA]: \"{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}\", [cB]: { [cC]: \"S3Express\", [cD]: [{ [cE]: true, [j]: \"sigv4-s3express\", [cF]: \"s3express\", [cG]: \"{Region}\" }] }, [cH]: {} }, [ct]: n }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: p, [cx]: [ad, false] }], [cu]: [{ [n]: { [cA]: q, [cB]: { [cC]: \"S3Express\", [cD]: [{ [cE]: true, [j]: \"sigv4-s3express\", [cF]: \"s3express\", [cG]: \"{Region}\" }] }, [cH]: {} }, [ct]: n }], [ct]: o }, { [f]: \"S3Express bucket name is not a valid virtual hostable name.\", [ct]: f }], [ct]: o }, ag = { [cw]: m, [cx]: [{ [cy]: \"Endpoint\" }], [cz]: \"url\" }, ah = { [cw]: e, [cx]: [{ [cw]: i, [cx]: [{ [cy]: \"url\" }, \"isIp\"] }, true] }, ai = { [cy]: \"url\" }, aj = { [cw]: \"uriEncode\", [cx]: [ad], [cz]: \"uri_encoded_bucket\" }, ak = { [cC]: \"S3Express\", [cD]: [{ [cE]: true, [j]: \"sigv4\", [cF]: \"s3express\", [cG]: \"{Region}\" }] }, al = {}, am = { [cw]: p, [cx]: [ad, false] }, an = { [f]: \"S3Express bucket name is not a valid virtual hostable name.\", [ct]: f }, ao = { [cw]: d, [cx]: [{ [cy]: \"UseS3ExpressControlEndpoint\" }] }, ap = { [cw]: e, [cx]: [{ [cy]: \"UseS3ExpressControlEndpoint\" }, true] }, aq = { [cw]: r, [cx]: [Z] }, ar = { [cw]: e, [cx]: [{ [cy]: \"UseDualStack\" }, false] }, as = { [cw]: e, [cx]: [{ [cy]: \"UseFIPS\" }, false] }, at = { [f]: \"Unrecognized S3Express bucket name format.\", [ct]: f }, au = { [cw]: r, [cx]: [ac] }, av = { [cy]: u }, aw = { [cv]: [aq], [f]: \"Expected a endpoint to be specified but no endpoint was found\", [ct]: f }, ax = { [cD]: [{ [cE]: true, [j]: z, [cF]: A, [cI]: [\"*\"] }, { [cE]: true, [j]: \"sigv4\", [cF]: A, [cG]: \"{Region}\" }] }, ay = { [cw]: e, [cx]: [{ [cy]: \"ForcePathStyle\" }, false] }, az = { [cy]: \"ForcePathStyle\" }, aA = { [cw]: e, [cx]: [{ [cy]: \"Accelerate\" }, false] }, aB = { [cw]: h, [cx]: [{ [cy]: \"Region\" }, \"aws-global\"] }, aC = { [cD]: [{ [cE]: true, [j]: \"sigv4\", [cF]: B, [cG]: \"us-east-1\" }] }, aD = { [cw]: r, [cx]: [aB] }, aE = { [cw]: e, [cx]: [{ [cy]: \"UseGlobalEndpoint\" }, true] }, aF = { [cA]: \"https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cB]: { [cD]: [{ [cE]: true, [j]: \"sigv4\", [cF]: B, [cG]: \"{Region}\" }] }, [cH]: {} }, aG = { [cD]: [{ [cE]: true, [j]: \"sigv4\", [cF]: B, [cG]: \"{Region}\" }] }, aH = { [cw]: e, [cx]: [{ [cy]: \"UseGlobalEndpoint\" }, false] }, aI = { [cA]: \"https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}\", [cB]: aG, [cH]: {} }, aJ = { [cA]: \"https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}\", [cB]: aG, [cH]: {} }, aK = { [cA]: \"https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cB]: aG, [cH]: {} }, aL = { [cw]: e, [cx]: [{ [cw]: i, [cx]: [ai, \"isIp\"] }, false] }, aM = { [cA]: C, [cB]: aG, [cH]: {} }, aN = { [cA]: q, [cB]: aG, [cH]: {} }, aO = { [n]: aN, [ct]: n }, aP = { [cA]: D, [cB]: aG, [cH]: {} }, aQ = { [cA]: \"https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}\", [cB]: aG, [cH]: {} }, aR = { [f]: \"Invalid region: region was not a valid DNS name.\", [ct]: f }, aS = { [cy]: G }, aT = { [cy]: H }, aU = { [cw]: i, [cx]: [aS, \"service\"] }, aV = { [cy]: L }, aW = { [cv]: [Y], [f]: \"S3 Object Lambda does not support Dual-stack\", [ct]: f }, aX = { [cv]: [W], [f]: \"S3 Object Lambda does not support S3 Accelerate\", [ct]: f }, aY = { [cv]: [{ [cw]: d, [cx]: [{ [cy]: \"DisableAccessPoints\" }] }, { [cw]: e, [cx]: [{ [cy]: \"DisableAccessPoints\" }, true] }], [f]: \"Access points are not supported for this operation\", [ct]: f }, aZ = { [cv]: [{ [cw]: d, [cx]: [{ [cy]: \"UseArnRegion\" }] }, { [cw]: e, [cx]: [{ [cy]: \"UseArnRegion\" }, false] }, { [cw]: r, [cx]: [{ [cw]: h, [cx]: [{ [cw]: i, [cx]: [aS, \"region\"] }, \"{Region}\"] }] }], [f]: \"Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`\", [ct]: f }, ba = { [cw]: i, [cx]: [{ [cy]: \"bucketPartition\" }, j] }, bb = { [cw]: i, [cx]: [aS, \"accountId\"] }, bc = { [cD]: [{ [cE]: true, [j]: \"sigv4\", [cF]: J, [cG]: \"{bucketArn#region}\" }] }, bd = { [f]: \"Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`\", [ct]: f }, be = { [f]: \"Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`\", [ct]: f }, bf = { [f]: \"Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)\", [ct]: f }, bg = { [f]: \"Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`\", [ct]: f }, bh = { [f]: \"Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.\", [ct]: f }, bi = { [f]: \"Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided\", [ct]: f }, bj = { [cD]: [{ [cE]: true, [j]: \"sigv4\", [cF]: B, [cG]: \"{bucketArn#region}\" }] }, bk = { [cD]: [{ [cE]: true, [j]: z, [cF]: A, [cI]: [\"*\"] }, { [cE]: true, [j]: \"sigv4\", [cF]: A, [cG]: \"{bucketArn#region}\" }] }, bl = { [cw]: F, [cx]: [ad] }, bm = { [cA]: \"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: aG, [cH]: {} }, bn = { [cA]: \"https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: aG, [cH]: {} }, bo = { [cA]: \"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: aG, [cH]: {} }, bp = { [cA]: Q, [cB]: aG, [cH]: {} }, bq = { [cA]: \"https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: aG, [cH]: {} }, br = { [cy]: \"UseObjectLambdaEndpoint\" }, bs = { [cD]: [{ [cE]: true, [j]: \"sigv4\", [cF]: J, [cG]: \"{Region}\" }] }, bt = { [cA]: \"https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cB]: aG, [cH]: {} }, bu = { [cA]: \"https://s3-fips.{Region}.{partitionResult#dnsSuffix}\", [cB]: aG, [cH]: {} }, bv = { [cA]: \"https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cB]: aG, [cH]: {} }, bw = { [cA]: t, [cB]: aG, [cH]: {} }, bx = { [cA]: \"https://s3.{Region}.{partitionResult#dnsSuffix}\", [cB]: aG, [cH]: {} }, by = [{ [cy]: \"Region\" }], bz = [{ [cy]: \"Endpoint\" }], bA = [ad], bB = [W], bC = [Z, ag], bD = [{ [cw]: d, [cx]: [{ [cy]: \"DisableS3ExpressSessionAuth\" }] }, { [cw]: e, [cx]: [{ [cy]: \"DisableS3ExpressSessionAuth\" }, true] }], bE = [aj], bF = [am], bG = [aa], bH = [X, Y], bI = [X, ar], bJ = [as, Y], bK = [as, ar], bL = [{ [cw]: k, [cx]: [ad, 6, 14, true], [cz]: \"s3expressAvailabilityZoneId\" }, { [cw]: k, [cx]: [ad, 14, 16, true], [cz]: \"s3expressAvailabilityZoneDelim\" }, { [cw]: h, [cx]: [{ [cy]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bM = [{ [cv]: [X, Y], [n]: { [cA]: \"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cB]: ak, [cH]: {} }, [ct]: n }, { [cv]: bI, [n]: { [cA]: \"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}\", [cB]: ak, [cH]: {} }, [ct]: n }, { [cv]: bJ, [n]: { [cA]: \"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cB]: ak, [cH]: {} }, [ct]: n }, { [cv]: bK, [n]: { [cA]: \"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}\", [cB]: ak, [cH]: {} }, [ct]: n }], bN = [{ [cw]: k, [cx]: [ad, 6, 15, true], [cz]: \"s3expressAvailabilityZoneId\" }, { [cw]: k, [cx]: [ad, 15, 17, true], [cz]: \"s3expressAvailabilityZoneDelim\" }, { [cw]: h, [cx]: [{ [cy]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bO = [{ [cw]: k, [cx]: [ad, 6, 19, true], [cz]: \"s3expressAvailabilityZoneId\" }, { [cw]: k, [cx]: [ad, 19, 21, true], [cz]: \"s3expressAvailabilityZoneDelim\" }, { [cw]: h, [cx]: [{ [cy]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bP = [{ [cw]: k, [cx]: [ad, 6, 20, true], [cz]: \"s3expressAvailabilityZoneId\" }, { [cw]: k, [cx]: [ad, 20, 22, true], [cz]: \"s3expressAvailabilityZoneDelim\" }, { [cw]: h, [cx]: [{ [cy]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bQ = [{ [cw]: k, [cx]: [ad, 6, 26, true], [cz]: \"s3expressAvailabilityZoneId\" }, { [cw]: k, [cx]: [ad, 26, 28, true], [cz]: \"s3expressAvailabilityZoneDelim\" }, { [cw]: h, [cx]: [{ [cy]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bR = [{ [cv]: [X, Y], [n]: { [cA]: \"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cB]: { [cC]: \"S3Express\", [cD]: [{ [cE]: true, [j]: \"sigv4-s3express\", [cF]: \"s3express\", [cG]: \"{Region}\" }] }, [cH]: {} }, [ct]: n }, { [cv]: bI, [n]: { [cA]: \"https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}\", [cB]: { [cC]: \"S3Express\", [cD]: [{ [cE]: true, [j]: \"sigv4-s3express\", [cF]: \"s3express\", [cG]: \"{Region}\" }] }, [cH]: {} }, [ct]: n }, { [cv]: bJ, [n]: { [cA]: \"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cB]: { [cC]: \"S3Express\", [cD]: [{ [cE]: true, [j]: \"sigv4-s3express\", [cF]: \"s3express\", [cG]: \"{Region}\" }] }, [cH]: {} }, [ct]: n }, { [cv]: bK, [n]: { [cA]: \"https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}\", [cB]: { [cC]: \"S3Express\", [cD]: [{ [cE]: true, [j]: \"sigv4-s3express\", [cF]: \"s3express\", [cG]: \"{Region}\" }] }, [cH]: {} }, [ct]: n }], bS = [ad, 0, 7, true], bT = [{ [cw]: k, [cx]: [ad, 7, 15, true], [cz]: \"s3expressAvailabilityZoneId\" }, { [cw]: k, [cx]: [ad, 15, 17, true], [cz]: \"s3expressAvailabilityZoneDelim\" }, { [cw]: h, [cx]: [{ [cy]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bU = [{ [cw]: k, [cx]: [ad, 7, 16, true], [cz]: \"s3expressAvailabilityZoneId\" }, { [cw]: k, [cx]: [ad, 16, 18, true], [cz]: \"s3expressAvailabilityZoneDelim\" }, { [cw]: h, [cx]: [{ [cy]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bV = [{ [cw]: k, [cx]: [ad, 7, 20, true], [cz]: \"s3expressAvailabilityZoneId\" }, { [cw]: k, [cx]: [ad, 20, 22, true], [cz]: \"s3expressAvailabilityZoneDelim\" }, { [cw]: h, [cx]: [{ [cy]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bW = [{ [cw]: k, [cx]: [ad, 7, 21, true], [cz]: \"s3expressAvailabilityZoneId\" }, { [cw]: k, [cx]: [ad, 21, 23, true], [cz]: \"s3expressAvailabilityZoneDelim\" }, { [cw]: h, [cx]: [{ [cy]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bX = [{ [cw]: k, [cx]: [ad, 7, 27, true], [cz]: \"s3expressAvailabilityZoneId\" }, { [cw]: k, [cx]: [ad, 27, 29, true], [cz]: \"s3expressAvailabilityZoneDelim\" }, { [cw]: h, [cx]: [{ [cy]: \"s3expressAvailabilityZoneDelim\" }, \"--\"] }], bY = [ac], bZ = [{ [cw]: y, [cx]: [{ [cy]: x }, false] }], ca = [{ [cw]: h, [cx]: [{ [cy]: v }, \"beta\"] }], cb = [\"*\"], cc = [{ [cw]: y, [cx]: [{ [cy]: \"Region\" }, false] }], cd = [{ [cw]: h, [cx]: [{ [cy]: \"Region\" }, \"us-east-1\"] }], ce = [{ [cw]: h, [cx]: [aT, K] }], cf = [{ [cw]: i, [cx]: [aS, \"resourceId[1]\"], [cz]: L }, { [cw]: r, [cx]: [{ [cw]: h, [cx]: [aV, I] }] }], cg = [aS, \"resourceId[1]\"], ch = [Y], ci = [{ [cw]: r, [cx]: [{ [cw]: h, [cx]: [{ [cw]: i, [cx]: [aS, \"region\"] }, I] }] }], cj = [{ [cw]: r, [cx]: [{ [cw]: d, [cx]: [{ [cw]: i, [cx]: [aS, \"resourceId[2]\"] }] }] }], ck = [aS, \"resourceId[2]\"], cl = [{ [cw]: g, [cx]: [{ [cw]: i, [cx]: [aS, \"region\"] }], [cz]: \"bucketPartition\" }], cm = [{ [cw]: h, [cx]: [ba, { [cw]: i, [cx]: [{ [cy]: \"partitionResult\" }, j] }] }], cn = [{ [cw]: y, [cx]: [{ [cw]: i, [cx]: [aS, \"region\"] }, true] }], co = [{ [cw]: y, [cx]: [bb, false] }], cp = [{ [cw]: y, [cx]: [aV, false] }], cq = [X], cr = [{ [cw]: y, [cx]: [{ [cy]: \"Region\" }, true] }];\nconst _data = { version: \"1.0\", parameters: { Bucket: T, Region: T, UseFIPS: U, UseDualStack: U, Endpoint: T, ForcePathStyle: U, Accelerate: U, UseGlobalEndpoint: U, UseObjectLambdaEndpoint: V, Key: T, Prefix: T, CopySource: T, DisableAccessPoints: V, DisableMultiRegionAccessPoints: U, UseArnRegion: V, UseS3ExpressControlEndpoint: V, DisableS3ExpressSessionAuth: V }, [cu]: [{ [cv]: [{ [cw]: d, [cx]: by }], [cu]: [{ [cv]: [W, X], error: \"Accelerate cannot be used with FIPS\", [ct]: f }, { [cv]: [Y, Z], error: \"Cannot set dual-stack in combination with a custom endpoint.\", [ct]: f }, { [cv]: [Z, X], error: \"A custom endpoint cannot be combined with FIPS\", [ct]: f }, { [cv]: [Z, W], error: \"A custom endpoint cannot be combined with S3 Accelerate\", [ct]: f }, { [cv]: [X, aa, ab], error: \"Partition does not support FIPS\", [ct]: f }, { [cv]: [ac, { [cw]: k, [cx]: [ad, 0, a, c], [cz]: l }, { [cw]: h, [cx]: [{ [cy]: l }, \"--x-s3\"] }], [cu]: [ae, af, { [cv]: [ao, ap], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: [aj, aq], [cu]: [{ [cv]: bH, endpoint: { [cA]: \"https://s3express-control-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bI, endpoint: { [cA]: \"https://s3express-control-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bJ, endpoint: { [cA]: \"https://s3express-control.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bK, endpoint: { [cA]: \"https://s3express-control.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: ak, [cH]: al }, [ct]: n }], [ct]: o }], [ct]: o }], [ct]: o }, { [cv]: bF, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: bD, [cu]: [{ [cv]: bL, [cu]: bM, [ct]: o }, { [cv]: bN, [cu]: bM, [ct]: o }, { [cv]: bO, [cu]: bM, [ct]: o }, { [cv]: bP, [cu]: bM, [ct]: o }, { [cv]: bQ, [cu]: bM, [ct]: o }, at], [ct]: o }, { [cv]: bL, [cu]: bR, [ct]: o }, { [cv]: bN, [cu]: bR, [ct]: o }, { [cv]: bO, [cu]: bR, [ct]: o }, { [cv]: bP, [cu]: bR, [ct]: o }, { [cv]: bQ, [cu]: bR, [ct]: o }, at], [ct]: o }], [ct]: o }, an], [ct]: o }, { [cv]: [ac, { [cw]: k, [cx]: bS, [cz]: s }, { [cw]: h, [cx]: [{ [cy]: s }, \"--xa-s3\"] }], [cu]: [ae, af, { [cv]: bF, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: bD, [cu]: [{ [cv]: bT, [cu]: bM, [ct]: o }, { [cv]: bU, [cu]: bM, [ct]: o }, { [cv]: bV, [cu]: bM, [ct]: o }, { [cv]: bW, [cu]: bM, [ct]: o }, { [cv]: bX, [cu]: bM, [ct]: o }, at], [ct]: o }, { [cv]: bT, [cu]: bR, [ct]: o }, { [cv]: bU, [cu]: bR, [ct]: o }, { [cv]: bV, [cu]: bR, [ct]: o }, { [cv]: bW, [cu]: bR, [ct]: o }, { [cv]: bX, [cu]: bR, [ct]: o }, at], [ct]: o }], [ct]: o }, an], [ct]: o }, { [cv]: [au, ao, ap], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: bC, endpoint: { [cA]: t, [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bH, endpoint: { [cA]: \"https://s3express-control-fips.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bI, endpoint: { [cA]: \"https://s3express-control-fips.{Region}.{partitionResult#dnsSuffix}\", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bJ, endpoint: { [cA]: \"https://s3express-control.dualstack.{Region}.{partitionResult#dnsSuffix}\", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bK, endpoint: { [cA]: \"https://s3express-control.{Region}.{partitionResult#dnsSuffix}\", [cB]: ak, [cH]: al }, [ct]: n }], [ct]: o }], [ct]: o }, { [cv]: [ac, { [cw]: k, [cx]: [ad, 49, 50, c], [cz]: u }, { [cw]: k, [cx]: [ad, 8, 12, c], [cz]: v }, { [cw]: k, [cx]: bS, [cz]: w }, { [cw]: k, [cx]: [ad, 32, 49, c], [cz]: x }, { [cw]: g, [cx]: by, [cz]: \"regionPartition\" }, { [cw]: h, [cx]: [{ [cy]: w }, \"--op-s3\"] }], [cu]: [{ [cv]: bZ, [cu]: [{ [cv]: bF, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [av, \"e\"] }], [cu]: [{ [cv]: ca, [cu]: [aw, { [cv]: bC, endpoint: { [cA]: \"https://{Bucket}.ec2.{url#authority}\", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { endpoint: { [cA]: \"https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}\", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { [cv]: [{ [cw]: h, [cx]: [av, \"o\"] }], [cu]: [{ [cv]: ca, [cu]: [aw, { [cv]: bC, endpoint: { [cA]: \"https://{Bucket}.op-{outpostId}.{url#authority}\", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { endpoint: { [cA]: \"https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}\", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { error: \"Unrecognized hardware type: \\\"Expected hardware type o or e but got {hardwareType}\\\"\", [ct]: f }], [ct]: o }, { error: \"Invalid Outposts Bucket alias - it must be a valid bucket name.\", [ct]: f }], [ct]: o }, { error: \"Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.\", [ct]: f }], [ct]: o }, { [cv]: bY, [cu]: [{ [cv]: [Z, { [cw]: r, [cx]: [{ [cw]: d, [cx]: [{ [cw]: m, [cx]: bz }] }] }], error: \"Custom endpoint `{Endpoint}` was not a valid URI\", [ct]: f }, { [cv]: [ay, am], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cc, [cu]: [{ [cv]: [W, ab], error: \"S3 Accelerate cannot be used in this region\", [ct]: f }, { [cv]: [Y, X, aA, aq, aB], endpoint: { [cA]: \"https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}\", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, X, aA, aq, aD, aE], [cu]: [{ endpoint: aF, [ct]: n }], [ct]: o }, { [cv]: [Y, X, aA, aq, aD, aH], endpoint: aF, [ct]: n }, { [cv]: [ar, X, aA, aq, aB], endpoint: { [cA]: \"https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}\", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, X, aA, aq, aD, aE], [cu]: [{ endpoint: aI, [ct]: n }], [ct]: o }, { [cv]: [ar, X, aA, aq, aD, aH], endpoint: aI, [ct]: n }, { [cv]: [Y, as, W, aq, aB], endpoint: { [cA]: \"https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}\", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, as, W, aq, aD, aE], [cu]: [{ endpoint: aJ, [ct]: n }], [ct]: o }, { [cv]: [Y, as, W, aq, aD, aH], endpoint: aJ, [ct]: n }, { [cv]: [Y, as, aA, aq, aB], endpoint: { [cA]: \"https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}\", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, as, aA, aq, aD, aE], [cu]: [{ endpoint: aK, [ct]: n }], [ct]: o }, { [cv]: [Y, as, aA, aq, aD, aH], endpoint: aK, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, ah, aB], endpoint: { [cA]: C, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, aL, aB], endpoint: { [cA]: q, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, ah, aD, aE], [cu]: [{ [cv]: cd, endpoint: aM, [ct]: n }, { endpoint: aM, [ct]: n }], [ct]: o }, { [cv]: [ar, as, aA, Z, ag, aL, aD, aE], [cu]: [{ [cv]: cd, endpoint: aN, [ct]: n }, aO], [ct]: o }, { [cv]: [ar, as, aA, Z, ag, ah, aD, aH], endpoint: aM, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, aL, aD, aH], endpoint: aN, [ct]: n }, { [cv]: [ar, as, W, aq, aB], endpoint: { [cA]: D, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, W, aq, aD, aE], [cu]: [{ [cv]: cd, endpoint: aP, [ct]: n }, { endpoint: aP, [ct]: n }], [ct]: o }, { [cv]: [ar, as, W, aq, aD, aH], endpoint: aP, [ct]: n }, { [cv]: [ar, as, aA, aq, aB], endpoint: { [cA]: E, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, aA, aq, aD, aE], [cu]: [{ [cv]: cd, endpoint: { [cA]: E, [cB]: aG, [cH]: al }, [ct]: n }, { endpoint: aQ, [ct]: n }], [ct]: o }, { [cv]: [ar, as, aA, aq, aD, aH], endpoint: aQ, [ct]: n }], [ct]: o }, aR], [ct]: o }], [ct]: o }, { [cv]: [Z, ag, { [cw]: h, [cx]: [{ [cw]: i, [cx]: [ai, \"scheme\"] }, \"http\"] }, { [cw]: p, [cx]: [ad, c] }, ay, as, ar, aA], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cc, [cu]: [aO], [ct]: o }, aR], [ct]: o }], [ct]: o }, { [cv]: [ay, { [cw]: F, [cx]: bA, [cz]: G }], [cu]: [{ [cv]: [{ [cw]: i, [cx]: [aS, \"resourceId[0]\"], [cz]: H }, { [cw]: r, [cx]: [{ [cw]: h, [cx]: [aT, I] }] }], [cu]: [{ [cv]: [{ [cw]: h, [cx]: [aU, J] }], [cu]: [{ [cv]: ce, [cu]: [{ [cv]: cf, [cu]: [aW, aX, { [cv]: ci, [cu]: [aY, { [cv]: cj, [cu]: [aZ, { [cv]: cl, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cm, [cu]: [{ [cv]: cn, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [bb, I] }], error: \"Invalid ARN: Missing account id\", [ct]: f }, { [cv]: co, [cu]: [{ [cv]: cp, [cu]: [{ [cv]: bC, endpoint: { [cA]: M, [cB]: bc, [cH]: al }, [ct]: n }, { [cv]: cq, endpoint: { [cA]: \"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cB]: bc, [cH]: al }, [ct]: n }, { endpoint: { [cA]: \"https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cB]: bc, [cH]: al }, [ct]: n }], [ct]: o }, bd], [ct]: o }, be], [ct]: o }, bf], [ct]: o }, bg], [ct]: o }], [ct]: o }], [ct]: o }, bh], [ct]: o }, { error: \"Invalid ARN: bucket ARN is missing a region\", [ct]: f }], [ct]: o }, bi], [ct]: o }, { error: \"Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`\", [ct]: f }], [ct]: o }, { [cv]: ce, [cu]: [{ [cv]: cf, [cu]: [{ [cv]: ci, [cu]: [{ [cv]: ce, [cu]: [{ [cv]: ci, [cu]: [aY, { [cv]: cj, [cu]: [aZ, { [cv]: cl, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [ba, \"{partitionResult#name}\"] }], [cu]: [{ [cv]: cn, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [aU, B] }], [cu]: [{ [cv]: co, [cu]: [{ [cv]: cp, [cu]: [{ [cv]: bB, error: \"Access Points do not support S3 Accelerate\", [ct]: f }, { [cv]: bH, endpoint: { [cA]: \"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: bI, endpoint: { [cA]: \"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: bJ, endpoint: { [cA]: \"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: [as, ar, Z, ag], endpoint: { [cA]: M, [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: bK, endpoint: { [cA]: \"https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cB]: bj, [cH]: al }, [ct]: n }], [ct]: o }, bd], [ct]: o }, be], [ct]: o }, { error: \"Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}\", [ct]: f }], [ct]: o }, bf], [ct]: o }, bg], [ct]: o }], [ct]: o }], [ct]: o }, bh], [ct]: o }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: y, [cx]: [aV, c] }], [cu]: [{ [cv]: ch, error: \"S3 MRAP does not support dual-stack\", [ct]: f }, { [cv]: cq, error: \"S3 MRAP does not support FIPS\", [ct]: f }, { [cv]: bB, error: \"S3 MRAP does not support S3 Accelerate\", [ct]: f }, { [cv]: [{ [cw]: e, [cx]: [{ [cy]: \"DisableMultiRegionAccessPoints\" }, c] }], error: \"Invalid configuration: Multi-Region Access Point ARNs are disabled.\", [ct]: f }, { [cv]: [{ [cw]: g, [cx]: by, [cz]: N }], [cu]: [{ [cv]: [{ [cw]: h, [cx]: [{ [cw]: i, [cx]: [{ [cy]: N }, j] }, { [cw]: i, [cx]: [aS, \"partition\"] }] }], [cu]: [{ endpoint: { [cA]: \"https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}\", [cB]: { [cD]: [{ [cE]: c, name: z, [cF]: B, [cI]: cb }] }, [cH]: al }, [ct]: n }], [ct]: o }, { error: \"Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`\", [ct]: f }], [ct]: o }], [ct]: o }, { error: \"Invalid Access Point Name\", [ct]: f }], [ct]: o }, bi], [ct]: o }, { [cv]: [{ [cw]: h, [cx]: [aU, A] }], [cu]: [{ [cv]: ch, error: \"S3 Outposts does not support Dual-stack\", [ct]: f }, { [cv]: cq, error: \"S3 Outposts does not support FIPS\", [ct]: f }, { [cv]: bB, error: \"S3 Outposts does not support S3 Accelerate\", [ct]: f }, { [cv]: [{ [cw]: d, [cx]: [{ [cw]: i, [cx]: [aS, \"resourceId[4]\"] }] }], error: \"Invalid Arn: Outpost Access Point ARN contains sub resources\", [ct]: f }, { [cv]: [{ [cw]: i, [cx]: cg, [cz]: x }], [cu]: [{ [cv]: bZ, [cu]: [aZ, { [cv]: cl, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cm, [cu]: [{ [cv]: cn, [cu]: [{ [cv]: co, [cu]: [{ [cv]: [{ [cw]: i, [cx]: ck, [cz]: O }], [cu]: [{ [cv]: [{ [cw]: i, [cx]: [aS, \"resourceId[3]\"], [cz]: L }], [cu]: [{ [cv]: [{ [cw]: h, [cx]: [{ [cy]: O }, K] }], [cu]: [{ [cv]: bC, endpoint: { [cA]: \"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}\", [cB]: bk, [cH]: al }, [ct]: n }, { endpoint: { [cA]: \"https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}\", [cB]: bk, [cH]: al }, [ct]: n }], [ct]: o }, { error: \"Expected an outpost type `accesspoint`, found {outpostType}\", [ct]: f }], [ct]: o }, { error: \"Invalid ARN: expected an access point name\", [ct]: f }], [ct]: o }, { error: \"Invalid ARN: Expected a 4-component resource\", [ct]: f }], [ct]: o }, be], [ct]: o }, bf], [ct]: o }, bg], [ct]: o }], [ct]: o }], [ct]: o }, { error: \"Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`\", [ct]: f }], [ct]: o }, { error: \"Invalid ARN: The Outpost Id was not set\", [ct]: f }], [ct]: o }, { error: \"Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})\", [ct]: f }], [ct]: o }, { error: \"Invalid ARN: No ARN type specified\", [ct]: f }], [ct]: o }, { [cv]: [{ [cw]: k, [cx]: [ad, 0, 4, b], [cz]: P }, { [cw]: h, [cx]: [{ [cy]: P }, \"arn:\"] }, { [cw]: r, [cx]: [{ [cw]: d, [cx]: [bl] }] }], error: \"Invalid ARN: `{Bucket}` was not a valid ARN\", [ct]: f }, { [cv]: [{ [cw]: e, [cx]: [az, c] }, bl], error: \"Path-style addressing cannot be used with ARN buckets\", [ct]: f }, { [cv]: bE, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: [aA], [cu]: [{ [cv]: [Y, aq, X, aB], endpoint: { [cA]: \"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, aq, X, aD, aE], [cu]: [{ endpoint: bm, [ct]: n }], [ct]: o }, { [cv]: [Y, aq, X, aD, aH], endpoint: bm, [ct]: n }, { [cv]: [ar, aq, X, aB], endpoint: { [cA]: \"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, aq, X, aD, aE], [cu]: [{ endpoint: bn, [ct]: n }], [ct]: o }, { [cv]: [ar, aq, X, aD, aH], endpoint: bn, [ct]: n }, { [cv]: [Y, aq, as, aB], endpoint: { [cA]: \"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}\", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, aq, as, aD, aE], [cu]: [{ endpoint: bo, [ct]: n }], [ct]: o }, { [cv]: [Y, aq, as, aD, aH], endpoint: bo, [ct]: n }, { [cv]: [ar, Z, ag, as, aB], endpoint: { [cA]: Q, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, Z, ag, as, aD, aE], [cu]: [{ [cv]: cd, endpoint: bp, [ct]: n }, { endpoint: bp, [ct]: n }], [ct]: o }, { [cv]: [ar, Z, ag, as, aD, aH], endpoint: bp, [ct]: n }, { [cv]: [ar, aq, as, aB], endpoint: { [cA]: R, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, aq, as, aD, aE], [cu]: [{ [cv]: cd, endpoint: { [cA]: R, [cB]: aG, [cH]: al }, [ct]: n }, { endpoint: bq, [ct]: n }], [ct]: o }, { [cv]: [ar, aq, as, aD, aH], endpoint: bq, [ct]: n }], [ct]: o }, { error: \"Path-style addressing cannot be used with S3 Accelerate\", [ct]: f }], [ct]: o }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: d, [cx]: [br] }, { [cw]: e, [cx]: [br, c] }], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cr, [cu]: [aW, aX, { [cv]: bC, endpoint: { [cA]: t, [cB]: bs, [cH]: al }, [ct]: n }, { [cv]: cq, endpoint: { [cA]: \"https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}\", [cB]: bs, [cH]: al }, [ct]: n }, { endpoint: { [cA]: \"https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}\", [cB]: bs, [cH]: al }, [ct]: n }], [ct]: o }, aR], [ct]: o }], [ct]: o }, { [cv]: [au], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cr, [cu]: [{ [cv]: [X, Y, aq, aB], endpoint: { [cA]: \"https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}\", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [X, Y, aq, aD, aE], [cu]: [{ endpoint: bt, [ct]: n }], [ct]: o }, { [cv]: [X, Y, aq, aD, aH], endpoint: bt, [ct]: n }, { [cv]: [X, ar, aq, aB], endpoint: { [cA]: \"https://s3-fips.us-east-1.{partitionResult#dnsSuffix}\", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [X, ar, aq, aD, aE], [cu]: [{ endpoint: bu, [ct]: n }], [ct]: o }, { [cv]: [X, ar, aq, aD, aH], endpoint: bu, [ct]: n }, { [cv]: [as, Y, aq, aB], endpoint: { [cA]: \"https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}\", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [as, Y, aq, aD, aE], [cu]: [{ endpoint: bv, [ct]: n }], [ct]: o }, { [cv]: [as, Y, aq, aD, aH], endpoint: bv, [ct]: n }, { [cv]: [as, ar, Z, ag, aB], endpoint: { [cA]: t, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [as, ar, Z, ag, aD, aE], [cu]: [{ [cv]: cd, endpoint: bw, [ct]: n }, { endpoint: bw, [ct]: n }], [ct]: o }, { [cv]: [as, ar, Z, ag, aD, aH], endpoint: bw, [ct]: n }, { [cv]: [as, ar, aq, aB], endpoint: { [cA]: S, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [as, ar, aq, aD, aE], [cu]: [{ [cv]: cd, endpoint: { [cA]: S, [cB]: aG, [cH]: al }, [ct]: n }, { endpoint: bx, [ct]: n }], [ct]: o }, { [cv]: [as, ar, aq, aD, aH], endpoint: bx, [ct]: n }], [ct]: o }, aR], [ct]: o }], [ct]: o }], [ct]: o }, { error: \"A region must be set when sending requests to S3.\", [ct]: f }] };\nexport const ruleSet = _data;\n",
93
- "import { getThrow200ExceptionsPlugin } from \"@aws-sdk/middleware-sdk-s3\";\nimport { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { CreateSession$ } from \"../schemas/schemas_0\";\nexport { $Command };\nexport class CreateSessionCommand extends $Command\n .classBuilder()\n .ep({\n ...commonParams,\n DisableS3ExpressSessionAuth: { type: \"staticContextParams\", value: true },\n Bucket: { type: \"contextParams\", name: \"Bucket\" },\n})\n .m(function (Command, cs, config, o) {\n return [\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n getThrow200ExceptionsPlugin(config),\n ];\n})\n .s(\"AmazonS3\", \"CreateSession\", {})\n .n(\"S3Client\", \"CreateSessionCommand\")\n .sc(CreateSession$)\n .build() {\n}\n",
94
- "const clientContextParamDefaults = {};\nexport const resolveClientEndpointParameters = (options) => {\n return Object.assign(options, {\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n forcePathStyle: options.forcePathStyle ?? false,\n useAccelerateEndpoint: options.useAccelerateEndpoint ?? false,\n useGlobalEndpoint: options.useGlobalEndpoint ?? false,\n disableMultiregionAccessPoints: options.disableMultiregionAccessPoints ?? false,\n defaultSigningName: \"s3\",\n clientContextParams: options.clientContextParams ?? {},\n });\n};\nexport const commonParams = {\n ForcePathStyle: { type: \"clientContextParams\", name: \"forcePathStyle\" },\n UseArnRegion: { type: \"clientContextParams\", name: \"useArnRegion\" },\n DisableMultiRegionAccessPoints: { type: \"clientContextParams\", name: \"disableMultiregionAccessPoints\" },\n Accelerate: { type: \"clientContextParams\", name: \"useAccelerateEndpoint\" },\n DisableS3ExpressSessionAuth: { type: \"clientContextParams\", name: \"disableS3ExpressSessionAuth\" },\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n",
95
- "const _A = \"Account\";\nconst _AAO = \"AnalyticsAndOperator\";\nconst _AC = \"AccelerateConfiguration\";\nconst _ACL = \"AccessControlList\";\nconst _ACL_ = \"ACL\";\nconst _ACLn = \"AnalyticsConfigurationList\";\nconst _ACP = \"AccessControlPolicy\";\nconst _ACT = \"AccessControlTranslation\";\nconst _ACn = \"AnalyticsConfiguration\";\nconst _AD = \"AccessDenied\";\nconst _ADb = \"AbortDate\";\nconst _AED = \"AnalyticsExportDestination\";\nconst _AF = \"AnalyticsFilter\";\nconst _AH = \"AllowedHeaders\";\nconst _AHl = \"AllowedHeader\";\nconst _AI = \"AccountId\";\nconst _AIMU = \"AbortIncompleteMultipartUpload\";\nconst _AKI = \"AccessKeyId\";\nconst _AM = \"AllowedMethods\";\nconst _AMU = \"AbortMultipartUpload\";\nconst _AMUO = \"AbortMultipartUploadOutput\";\nconst _AMUR = \"AbortMultipartUploadRequest\";\nconst _AMl = \"AllowedMethod\";\nconst _AO = \"AllowedOrigins\";\nconst _AOl = \"AllowedOrigin\";\nconst _APA = \"AccessPointAlias\";\nconst _APAc = \"AccessPointArn\";\nconst _AQRD = \"AllowQuotedRecordDelimiter\";\nconst _AR = \"AcceptRanges\";\nconst _ARI = \"AbortRuleId\";\nconst _AS = \"AbacStatus\";\nconst _ASBD = \"AnalyticsS3BucketDestination\";\nconst _ASSEBD = \"ApplyServerSideEncryptionByDefault\";\nconst _ASr = \"ArchiveStatus\";\nconst _AT = \"AccessTier\";\nconst _An = \"And\";\nconst _B = \"Bucket\";\nconst _BA = \"BucketArn\";\nconst _BAE = \"BucketAlreadyExists\";\nconst _BAI = \"BucketAccountId\";\nconst _BAOBY = \"BucketAlreadyOwnedByYou\";\nconst _BET = \"BlockedEncryptionTypes\";\nconst _BGR = \"BypassGovernanceRetention\";\nconst _BI = \"BucketInfo\";\nconst _BKE = \"BucketKeyEnabled\";\nconst _BLC = \"BucketLifecycleConfiguration\";\nconst _BLN = \"BucketLocationName\";\nconst _BLS = \"BucketLoggingStatus\";\nconst _BLT = \"BucketLocationType\";\nconst _BN = \"BucketNamespace\";\nconst _BNu = \"BucketName\";\nconst _BP = \"BytesProcessed\";\nconst _BPA = \"BlockPublicAcls\";\nconst _BPP = \"BlockPublicPolicy\";\nconst _BR = \"BucketRegion\";\nconst _BRy = \"BytesReturned\";\nconst _BS = \"BytesScanned\";\nconst _Bo = \"Body\";\nconst _Bu = \"Buckets\";\nconst _C = \"Checksum\";\nconst _CA = \"ChecksumAlgorithm\";\nconst _CACL = \"CannedACL\";\nconst _CB = \"CreateBucket\";\nconst _CBC = \"CreateBucketConfiguration\";\nconst _CBMC = \"CreateBucketMetadataConfiguration\";\nconst _CBMCR = \"CreateBucketMetadataConfigurationRequest\";\nconst _CBMTC = \"CreateBucketMetadataTableConfiguration\";\nconst _CBMTCR = \"CreateBucketMetadataTableConfigurationRequest\";\nconst _CBO = \"CreateBucketOutput\";\nconst _CBR = \"CreateBucketRequest\";\nconst _CC = \"CacheControl\";\nconst _CCRC = \"ChecksumCRC32\";\nconst _CCRCC = \"ChecksumCRC32C\";\nconst _CCRCNVME = \"ChecksumCRC64NVME\";\nconst _CC_ = \"Cache-Control\";\nconst _CD = \"CreationDate\";\nconst _CD_ = \"Content-Disposition\";\nconst _CDo = \"ContentDisposition\";\nconst _CE = \"ContinuationEvent\";\nconst _CE_ = \"Content-Encoding\";\nconst _CEo = \"ContentEncoding\";\nconst _CF = \"CloudFunction\";\nconst _CFC = \"CloudFunctionConfiguration\";\nconst _CL = \"ContentLanguage\";\nconst _CL_ = \"Content-Language\";\nconst _CL__ = \"Content-Length\";\nconst _CLo = \"ContentLength\";\nconst _CM = \"Content-MD5\";\nconst _CMD = \"ContentMD5\";\nconst _CMU = \"CompletedMultipartUpload\";\nconst _CMUO = \"CompleteMultipartUploadOutput\";\nconst _CMUOr = \"CreateMultipartUploadOutput\";\nconst _CMUR = \"CompleteMultipartUploadResult\";\nconst _CMURo = \"CompleteMultipartUploadRequest\";\nconst _CMURr = \"CreateMultipartUploadRequest\";\nconst _CMUo = \"CompleteMultipartUpload\";\nconst _CMUr = \"CreateMultipartUpload\";\nconst _CMh = \"ChecksumMode\";\nconst _CO = \"CopyObject\";\nconst _COO = \"CopyObjectOutput\";\nconst _COR = \"CopyObjectResult\";\nconst _CORSC = \"CORSConfiguration\";\nconst _CORSR = \"CORSRules\";\nconst _CORSRu = \"CORSRule\";\nconst _CORo = \"CopyObjectRequest\";\nconst _CP = \"CommonPrefix\";\nconst _CPL = \"CommonPrefixList\";\nconst _CPLo = \"CompletedPartList\";\nconst _CPR = \"CopyPartResult\";\nconst _CPo = \"CompletedPart\";\nconst _CPom = \"CommonPrefixes\";\nconst _CR = \"ContentRange\";\nconst _CRSBA = \"ConfirmRemoveSelfBucketAccess\";\nconst _CR_ = \"Content-Range\";\nconst _CS = \"CopySource\";\nconst _CSHA = \"ChecksumSHA1\";\nconst _CSHAh = \"ChecksumSHA256\";\nconst _CSIM = \"CopySourceIfMatch\";\nconst _CSIMS = \"CopySourceIfModifiedSince\";\nconst _CSINM = \"CopySourceIfNoneMatch\";\nconst _CSIUS = \"CopySourceIfUnmodifiedSince\";\nconst _CSO = \"CreateSessionOutput\";\nconst _CSR = \"CreateSessionResult\";\nconst _CSRo = \"CopySourceRange\";\nconst _CSRr = \"CreateSessionRequest\";\nconst _CSSSECA = \"CopySourceSSECustomerAlgorithm\";\nconst _CSSSECK = \"CopySourceSSECustomerKey\";\nconst _CSSSECKMD = \"CopySourceSSECustomerKeyMD5\";\nconst _CSV = \"CSV\";\nconst _CSVI = \"CopySourceVersionId\";\nconst _CSVIn = \"CSVInput\";\nconst _CSVO = \"CSVOutput\";\nconst _CSo = \"ConfigurationState\";\nconst _CSr = \"CreateSession\";\nconst _CT = \"ChecksumType\";\nconst _CT_ = \"Content-Type\";\nconst _CTl = \"ClientToken\";\nconst _CTo = \"ContentType\";\nconst _CTom = \"CompressionType\";\nconst _CTon = \"ContinuationToken\";\nconst _Co = \"Condition\";\nconst _Cod = \"Code\";\nconst _Com = \"Comments\";\nconst _Con = \"Contents\";\nconst _Cont = \"Cont\";\nconst _Cr = \"Credentials\";\nconst _D = \"Days\";\nconst _DAI = \"DaysAfterInitiation\";\nconst _DB = \"DeleteBucket\";\nconst _DBAC = \"DeleteBucketAnalyticsConfiguration\";\nconst _DBACR = \"DeleteBucketAnalyticsConfigurationRequest\";\nconst _DBC = \"DeleteBucketCors\";\nconst _DBCR = \"DeleteBucketCorsRequest\";\nconst _DBE = \"DeleteBucketEncryption\";\nconst _DBER = \"DeleteBucketEncryptionRequest\";\nconst _DBIC = \"DeleteBucketInventoryConfiguration\";\nconst _DBICR = \"DeleteBucketInventoryConfigurationRequest\";\nconst _DBITC = \"DeleteBucketIntelligentTieringConfiguration\";\nconst _DBITCR = \"DeleteBucketIntelligentTieringConfigurationRequest\";\nconst _DBL = \"DeleteBucketLifecycle\";\nconst _DBLR = \"DeleteBucketLifecycleRequest\";\nconst _DBMC = \"DeleteBucketMetadataConfiguration\";\nconst _DBMCR = \"DeleteBucketMetadataConfigurationRequest\";\nconst _DBMCRe = \"DeleteBucketMetricsConfigurationRequest\";\nconst _DBMCe = \"DeleteBucketMetricsConfiguration\";\nconst _DBMTC = \"DeleteBucketMetadataTableConfiguration\";\nconst _DBMTCR = \"DeleteBucketMetadataTableConfigurationRequest\";\nconst _DBOC = \"DeleteBucketOwnershipControls\";\nconst _DBOCR = \"DeleteBucketOwnershipControlsRequest\";\nconst _DBP = \"DeleteBucketPolicy\";\nconst _DBPR = \"DeleteBucketPolicyRequest\";\nconst _DBR = \"DeleteBucketRequest\";\nconst _DBRR = \"DeleteBucketReplicationRequest\";\nconst _DBRe = \"DeleteBucketReplication\";\nconst _DBT = \"DeleteBucketTagging\";\nconst _DBTR = \"DeleteBucketTaggingRequest\";\nconst _DBW = \"DeleteBucketWebsite\";\nconst _DBWR = \"DeleteBucketWebsiteRequest\";\nconst _DE = \"DataExport\";\nconst _DIM = \"DestinationIfMatch\";\nconst _DIMS = \"DestinationIfModifiedSince\";\nconst _DINM = \"DestinationIfNoneMatch\";\nconst _DIUS = \"DestinationIfUnmodifiedSince\";\nconst _DM = \"DeleteMarker\";\nconst _DME = \"DeleteMarkerEntry\";\nconst _DMR = \"DeleteMarkerReplication\";\nconst _DMVI = \"DeleteMarkerVersionId\";\nconst _DMe = \"DeleteMarkers\";\nconst _DN = \"DisplayName\";\nconst _DO = \"DeletedObject\";\nconst _DOO = \"DeleteObjectOutput\";\nconst _DOOe = \"DeleteObjectsOutput\";\nconst _DOR = \"DeleteObjectRequest\";\nconst _DORe = \"DeleteObjectsRequest\";\nconst _DOT = \"DeleteObjectTagging\";\nconst _DOTO = \"DeleteObjectTaggingOutput\";\nconst _DOTR = \"DeleteObjectTaggingRequest\";\nconst _DOe = \"DeletedObjects\";\nconst _DOel = \"DeleteObject\";\nconst _DOele = \"DeleteObjects\";\nconst _DPAB = \"DeletePublicAccessBlock\";\nconst _DPABR = \"DeletePublicAccessBlockRequest\";\nconst _DR = \"DataRedundancy\";\nconst _DRe = \"DefaultRetention\";\nconst _DRel = \"DeleteResult\";\nconst _DRes = \"DestinationResult\";\nconst _Da = \"Date\";\nconst _De = \"Delete\";\nconst _Del = \"Deleted\";\nconst _Deli = \"Delimiter\";\nconst _Des = \"Destination\";\nconst _Desc = \"Description\";\nconst _Det = \"Details\";\nconst _E = \"Expiration\";\nconst _EA = \"EmailAddress\";\nconst _EBC = \"EventBridgeConfiguration\";\nconst _EBO = \"ExpectedBucketOwner\";\nconst _EC = \"EncryptionConfiguration\";\nconst _ECr = \"ErrorCode\";\nconst _ED = \"ErrorDetails\";\nconst _EDr = \"ErrorDocument\";\nconst _EE = \"EndEvent\";\nconst _EH = \"ExposeHeaders\";\nconst _EHx = \"ExposeHeader\";\nconst _EM = \"ErrorMessage\";\nconst _EODM = \"ExpiredObjectDeleteMarker\";\nconst _EOR = \"ExistingObjectReplication\";\nconst _ES = \"ExpiresString\";\nconst _ESBO = \"ExpectedSourceBucketOwner\";\nconst _ET = \"EncryptionType\";\nconst _ETL = \"EncryptionTypeList\";\nconst _ETM = \"EncryptionTypeMismatch\";\nconst _ETa = \"ETag\";\nconst _ETn = \"EncodingType\";\nconst _ETv = \"EventThreshold\";\nconst _ETx = \"ExpressionType\";\nconst _En = \"Encryption\";\nconst _Ena = \"Enabled\";\nconst _End = \"End\";\nconst _Er = \"Errors\";\nconst _Err = \"Error\";\nconst _Ev = \"Events\";\nconst _Eve = \"Event\";\nconst _Ex = \"Expires\";\nconst _Exp = \"Expression\";\nconst _F = \"Filter\";\nconst _FD = \"FieldDelimiter\";\nconst _FHI = \"FileHeaderInfo\";\nconst _FO = \"FetchOwner\";\nconst _FR = \"FilterRule\";\nconst _FRL = \"FilterRuleList\";\nconst _FRi = \"FilterRules\";\nconst _Fi = \"Field\";\nconst _Fo = \"Format\";\nconst _Fr = \"Frequency\";\nconst _G = \"Grants\";\nconst _GBA = \"GetBucketAbac\";\nconst _GBAC = \"GetBucketAccelerateConfiguration\";\nconst _GBACO = \"GetBucketAccelerateConfigurationOutput\";\nconst _GBACOe = \"GetBucketAnalyticsConfigurationOutput\";\nconst _GBACR = \"GetBucketAccelerateConfigurationRequest\";\nconst _GBACRe = \"GetBucketAnalyticsConfigurationRequest\";\nconst _GBACe = \"GetBucketAnalyticsConfiguration\";\nconst _GBAO = \"GetBucketAbacOutput\";\nconst _GBAOe = \"GetBucketAclOutput\";\nconst _GBAR = \"GetBucketAbacRequest\";\nconst _GBARe = \"GetBucketAclRequest\";\nconst _GBAe = \"GetBucketAcl\";\nconst _GBC = \"GetBucketCors\";\nconst _GBCO = \"GetBucketCorsOutput\";\nconst _GBCR = \"GetBucketCorsRequest\";\nconst _GBE = \"GetBucketEncryption\";\nconst _GBEO = \"GetBucketEncryptionOutput\";\nconst _GBER = \"GetBucketEncryptionRequest\";\nconst _GBIC = \"GetBucketInventoryConfiguration\";\nconst _GBICO = \"GetBucketInventoryConfigurationOutput\";\nconst _GBICR = \"GetBucketInventoryConfigurationRequest\";\nconst _GBITC = \"GetBucketIntelligentTieringConfiguration\";\nconst _GBITCO = \"GetBucketIntelligentTieringConfigurationOutput\";\nconst _GBITCR = \"GetBucketIntelligentTieringConfigurationRequest\";\nconst _GBL = \"GetBucketLocation\";\nconst _GBLC = \"GetBucketLifecycleConfiguration\";\nconst _GBLCO = \"GetBucketLifecycleConfigurationOutput\";\nconst _GBLCR = \"GetBucketLifecycleConfigurationRequest\";\nconst _GBLO = \"GetBucketLocationOutput\";\nconst _GBLOe = \"GetBucketLoggingOutput\";\nconst _GBLR = \"GetBucketLocationRequest\";\nconst _GBLRe = \"GetBucketLoggingRequest\";\nconst _GBLe = \"GetBucketLogging\";\nconst _GBMC = \"GetBucketMetadataConfiguration\";\nconst _GBMCO = \"GetBucketMetadataConfigurationOutput\";\nconst _GBMCOe = \"GetBucketMetricsConfigurationOutput\";\nconst _GBMCR = \"GetBucketMetadataConfigurationResult\";\nconst _GBMCRe = \"GetBucketMetadataConfigurationRequest\";\nconst _GBMCRet = \"GetBucketMetricsConfigurationRequest\";\nconst _GBMCe = \"GetBucketMetricsConfiguration\";\nconst _GBMTC = \"GetBucketMetadataTableConfiguration\";\nconst _GBMTCO = \"GetBucketMetadataTableConfigurationOutput\";\nconst _GBMTCR = \"GetBucketMetadataTableConfigurationResult\";\nconst _GBMTCRe = \"GetBucketMetadataTableConfigurationRequest\";\nconst _GBNC = \"GetBucketNotificationConfiguration\";\nconst _GBNCR = \"GetBucketNotificationConfigurationRequest\";\nconst _GBOC = \"GetBucketOwnershipControls\";\nconst _GBOCO = \"GetBucketOwnershipControlsOutput\";\nconst _GBOCR = \"GetBucketOwnershipControlsRequest\";\nconst _GBP = \"GetBucketPolicy\";\nconst _GBPO = \"GetBucketPolicyOutput\";\nconst _GBPR = \"GetBucketPolicyRequest\";\nconst _GBPS = \"GetBucketPolicyStatus\";\nconst _GBPSO = \"GetBucketPolicyStatusOutput\";\nconst _GBPSR = \"GetBucketPolicyStatusRequest\";\nconst _GBR = \"GetBucketReplication\";\nconst _GBRO = \"GetBucketReplicationOutput\";\nconst _GBRP = \"GetBucketRequestPayment\";\nconst _GBRPO = \"GetBucketRequestPaymentOutput\";\nconst _GBRPR = \"GetBucketRequestPaymentRequest\";\nconst _GBRR = \"GetBucketReplicationRequest\";\nconst _GBT = \"GetBucketTagging\";\nconst _GBTO = \"GetBucketTaggingOutput\";\nconst _GBTR = \"GetBucketTaggingRequest\";\nconst _GBV = \"GetBucketVersioning\";\nconst _GBVO = \"GetBucketVersioningOutput\";\nconst _GBVR = \"GetBucketVersioningRequest\";\nconst _GBW = \"GetBucketWebsite\";\nconst _GBWO = \"GetBucketWebsiteOutput\";\nconst _GBWR = \"GetBucketWebsiteRequest\";\nconst _GFC = \"GrantFullControl\";\nconst _GJP = \"GlacierJobParameters\";\nconst _GO = \"GetObject\";\nconst _GOA = \"GetObjectAcl\";\nconst _GOAO = \"GetObjectAclOutput\";\nconst _GOAOe = \"GetObjectAttributesOutput\";\nconst _GOAP = \"GetObjectAttributesParts\";\nconst _GOAR = \"GetObjectAclRequest\";\nconst _GOARe = \"GetObjectAttributesResponse\";\nconst _GOARet = \"GetObjectAttributesRequest\";\nconst _GOAe = \"GetObjectAttributes\";\nconst _GOLC = \"GetObjectLockConfiguration\";\nconst _GOLCO = \"GetObjectLockConfigurationOutput\";\nconst _GOLCR = \"GetObjectLockConfigurationRequest\";\nconst _GOLH = \"GetObjectLegalHold\";\nconst _GOLHO = \"GetObjectLegalHoldOutput\";\nconst _GOLHR = \"GetObjectLegalHoldRequest\";\nconst _GOO = \"GetObjectOutput\";\nconst _GOR = \"GetObjectRequest\";\nconst _GORO = \"GetObjectRetentionOutput\";\nconst _GORR = \"GetObjectRetentionRequest\";\nconst _GORe = \"GetObjectRetention\";\nconst _GOT = \"GetObjectTagging\";\nconst _GOTO = \"GetObjectTaggingOutput\";\nconst _GOTOe = \"GetObjectTorrentOutput\";\nconst _GOTR = \"GetObjectTaggingRequest\";\nconst _GOTRe = \"GetObjectTorrentRequest\";\nconst _GOTe = \"GetObjectTorrent\";\nconst _GPAB = \"GetPublicAccessBlock\";\nconst _GPABO = \"GetPublicAccessBlockOutput\";\nconst _GPABR = \"GetPublicAccessBlockRequest\";\nconst _GR = \"GrantRead\";\nconst _GRACP = \"GrantReadACP\";\nconst _GW = \"GrantWrite\";\nconst _GWACP = \"GrantWriteACP\";\nconst _Gr = \"Grant\";\nconst _Gra = \"Grantee\";\nconst _HB = \"HeadBucket\";\nconst _HBO = \"HeadBucketOutput\";\nconst _HBR = \"HeadBucketRequest\";\nconst _HECRE = \"HttpErrorCodeReturnedEquals\";\nconst _HN = \"HostName\";\nconst _HO = \"HeadObject\";\nconst _HOO = \"HeadObjectOutput\";\nconst _HOR = \"HeadObjectRequest\";\nconst _HRC = \"HttpRedirectCode\";\nconst _I = \"Id\";\nconst _IC = \"InventoryConfiguration\";\nconst _ICL = \"InventoryConfigurationList\";\nconst _ID = \"ID\";\nconst _IDn = \"IndexDocument\";\nconst _IDnv = \"InventoryDestination\";\nconst _IE = \"IsEnabled\";\nconst _IEn = \"InventoryEncryption\";\nconst _IF = \"InventoryFilter\";\nconst _IL = \"IsLatest\";\nconst _IM = \"IfMatch\";\nconst _IMIT = \"IfMatchInitiatedTime\";\nconst _IMLMT = \"IfMatchLastModifiedTime\";\nconst _IMS = \"IfMatchSize\";\nconst _IMS_ = \"If-Modified-Since\";\nconst _IMSf = \"IfModifiedSince\";\nconst _IMUR = \"InitiateMultipartUploadResult\";\nconst _IM_ = \"If-Match\";\nconst _INM = \"IfNoneMatch\";\nconst _INM_ = \"If-None-Match\";\nconst _IOF = \"InventoryOptionalFields\";\nconst _IOS = \"InvalidObjectState\";\nconst _IOV = \"IncludedObjectVersions\";\nconst _IP = \"IsPublic\";\nconst _IPA = \"IgnorePublicAcls\";\nconst _IPM = \"IdempotencyParameterMismatch\";\nconst _IR = \"InvalidRequest\";\nconst _IRIP = \"IsRestoreInProgress\";\nconst _IS = \"InputSerialization\";\nconst _ISBD = \"InventoryS3BucketDestination\";\nconst _ISn = \"InventorySchedule\";\nconst _IT = \"IsTruncated\";\nconst _ITAO = \"IntelligentTieringAndOperator\";\nconst _ITC = \"IntelligentTieringConfiguration\";\nconst _ITCL = \"IntelligentTieringConfigurationList\";\nconst _ITCR = \"InventoryTableConfigurationResult\";\nconst _ITCU = \"InventoryTableConfigurationUpdates\";\nconst _ITCn = \"InventoryTableConfiguration\";\nconst _ITF = \"IntelligentTieringFilter\";\nconst _IUS = \"IfUnmodifiedSince\";\nconst _IUS_ = \"If-Unmodified-Since\";\nconst _IWO = \"InvalidWriteOffset\";\nconst _In = \"Initiator\";\nconst _Ini = \"Initiated\";\nconst _JSON = \"JSON\";\nconst _JSONI = \"JSONInput\";\nconst _JSONO = \"JSONOutput\";\nconst _JTC = \"JournalTableConfiguration\";\nconst _JTCR = \"JournalTableConfigurationResult\";\nconst _JTCU = \"JournalTableConfigurationUpdates\";\nconst _K = \"Key\";\nconst _KC = \"KeyCount\";\nconst _KI = \"KeyId\";\nconst _KKA = \"KmsKeyArn\";\nconst _KM = \"KeyMarker\";\nconst _KMSC = \"KMSContext\";\nconst _KMSKA = \"KMSKeyArn\";\nconst _KMSKI = \"KMSKeyId\";\nconst _KMSMKID = \"KMSMasterKeyID\";\nconst _KPE = \"KeyPrefixEquals\";\nconst _L = \"Location\";\nconst _LAMBR = \"ListAllMyBucketsResult\";\nconst _LAMDBR = \"ListAllMyDirectoryBucketsResult\";\nconst _LB = \"ListBuckets\";\nconst _LBAC = \"ListBucketAnalyticsConfigurations\";\nconst _LBACO = \"ListBucketAnalyticsConfigurationsOutput\";\nconst _LBACR = \"ListBucketAnalyticsConfigurationResult\";\nconst _LBACRi = \"ListBucketAnalyticsConfigurationsRequest\";\nconst _LBIC = \"ListBucketInventoryConfigurations\";\nconst _LBICO = \"ListBucketInventoryConfigurationsOutput\";\nconst _LBICR = \"ListBucketInventoryConfigurationsRequest\";\nconst _LBITC = \"ListBucketIntelligentTieringConfigurations\";\nconst _LBITCO = \"ListBucketIntelligentTieringConfigurationsOutput\";\nconst _LBITCR = \"ListBucketIntelligentTieringConfigurationsRequest\";\nconst _LBMC = \"ListBucketMetricsConfigurations\";\nconst _LBMCO = \"ListBucketMetricsConfigurationsOutput\";\nconst _LBMCR = \"ListBucketMetricsConfigurationsRequest\";\nconst _LBO = \"ListBucketsOutput\";\nconst _LBR = \"ListBucketsRequest\";\nconst _LBRi = \"ListBucketResult\";\nconst _LC = \"LocationConstraint\";\nconst _LCi = \"LifecycleConfiguration\";\nconst _LDB = \"ListDirectoryBuckets\";\nconst _LDBO = \"ListDirectoryBucketsOutput\";\nconst _LDBR = \"ListDirectoryBucketsRequest\";\nconst _LE = \"LoggingEnabled\";\nconst _LEi = \"LifecycleExpiration\";\nconst _LFA = \"LambdaFunctionArn\";\nconst _LFC = \"LambdaFunctionConfiguration\";\nconst _LFCL = \"LambdaFunctionConfigurationList\";\nconst _LFCa = \"LambdaFunctionConfigurations\";\nconst _LH = \"LegalHold\";\nconst _LI = \"LocationInfo\";\nconst _LICR = \"ListInventoryConfigurationsResult\";\nconst _LM = \"LastModified\";\nconst _LMCR = \"ListMetricsConfigurationsResult\";\nconst _LMT = \"LastModifiedTime\";\nconst _LMU = \"ListMultipartUploads\";\nconst _LMUO = \"ListMultipartUploadsOutput\";\nconst _LMUR = \"ListMultipartUploadsResult\";\nconst _LMURi = \"ListMultipartUploadsRequest\";\nconst _LM_ = \"Last-Modified\";\nconst _LO = \"ListObjects\";\nconst _LOO = \"ListObjectsOutput\";\nconst _LOR = \"ListObjectsRequest\";\nconst _LOV = \"ListObjectsV2\";\nconst _LOVO = \"ListObjectsV2Output\";\nconst _LOVOi = \"ListObjectVersionsOutput\";\nconst _LOVR = \"ListObjectsV2Request\";\nconst _LOVRi = \"ListObjectVersionsRequest\";\nconst _LOVi = \"ListObjectVersions\";\nconst _LP = \"ListParts\";\nconst _LPO = \"ListPartsOutput\";\nconst _LPR = \"ListPartsResult\";\nconst _LPRi = \"ListPartsRequest\";\nconst _LR = \"LifecycleRule\";\nconst _LRAO = \"LifecycleRuleAndOperator\";\nconst _LRF = \"LifecycleRuleFilter\";\nconst _LRi = \"LifecycleRules\";\nconst _LVR = \"ListVersionsResult\";\nconst _M = \"Metadata\";\nconst _MAO = \"MetricsAndOperator\";\nconst _MAS = \"MaxAgeSeconds\";\nconst _MB = \"MaxBuckets\";\nconst _MC = \"MetadataConfiguration\";\nconst _MCL = \"MetricsConfigurationList\";\nconst _MCR = \"MetadataConfigurationResult\";\nconst _MCe = \"MetricsConfiguration\";\nconst _MD = \"MetadataDirective\";\nconst _MDB = \"MaxDirectoryBuckets\";\nconst _MDf = \"MfaDelete\";\nconst _ME = \"MetadataEntry\";\nconst _MF = \"MetricsFilter\";\nconst _MFA = \"MFA\";\nconst _MFAD = \"MFADelete\";\nconst _MK = \"MaxKeys\";\nconst _MM = \"MissingMeta\";\nconst _MOS = \"MpuObjectSize\";\nconst _MP = \"MaxParts\";\nconst _MTC = \"MetadataTableConfiguration\";\nconst _MTCR = \"MetadataTableConfigurationResult\";\nconst _MTEC = \"MetadataTableEncryptionConfiguration\";\nconst _MU = \"MultipartUpload\";\nconst _MUL = \"MultipartUploadList\";\nconst _MUa = \"MaxUploads\";\nconst _Ma = \"Marker\";\nconst _Me = \"Metrics\";\nconst _Mes = \"Message\";\nconst _Mi = \"Minutes\";\nconst _Mo = \"Mode\";\nconst _N = \"Name\";\nconst _NC = \"NotificationConfiguration\";\nconst _NCF = \"NotificationConfigurationFilter\";\nconst _NCT = \"NextContinuationToken\";\nconst _ND = \"NoncurrentDays\";\nconst _NEKKAS = \"NonEmptyKmsKeyArnString\";\nconst _NF = \"NotFound\";\nconst _NKM = \"NextKeyMarker\";\nconst _NM = \"NextMarker\";\nconst _NNV = \"NewerNoncurrentVersions\";\nconst _NPNM = \"NextPartNumberMarker\";\nconst _NSB = \"NoSuchBucket\";\nconst _NSK = \"NoSuchKey\";\nconst _NSU = \"NoSuchUpload\";\nconst _NUIM = \"NextUploadIdMarker\";\nconst _NVE = \"NoncurrentVersionExpiration\";\nconst _NVIM = \"NextVersionIdMarker\";\nconst _NVT = \"NoncurrentVersionTransitions\";\nconst _NVTL = \"NoncurrentVersionTransitionList\";\nconst _NVTo = \"NoncurrentVersionTransition\";\nconst _O = \"Owner\";\nconst _OA = \"ObjectAttributes\";\nconst _OAIATE = \"ObjectAlreadyInActiveTierError\";\nconst _OC = \"OwnershipControls\";\nconst _OCR = \"OwnershipControlsRule\";\nconst _OCRw = \"OwnershipControlsRules\";\nconst _OE = \"ObjectEncryption\";\nconst _OF = \"OptionalFields\";\nconst _OI = \"ObjectIdentifier\";\nconst _OIL = \"ObjectIdentifierList\";\nconst _OL = \"OutputLocation\";\nconst _OLC = \"ObjectLockConfiguration\";\nconst _OLE = \"ObjectLockEnabled\";\nconst _OLEFB = \"ObjectLockEnabledForBucket\";\nconst _OLLH = \"ObjectLockLegalHold\";\nconst _OLLHS = \"ObjectLockLegalHoldStatus\";\nconst _OLM = \"ObjectLockMode\";\nconst _OLR = \"ObjectLockRetention\";\nconst _OLRUD = \"ObjectLockRetainUntilDate\";\nconst _OLRb = \"ObjectLockRule\";\nconst _OLb = \"ObjectList\";\nconst _ONIATE = \"ObjectNotInActiveTierError\";\nconst _OO = \"ObjectOwnership\";\nconst _OOA = \"OptionalObjectAttributes\";\nconst _OP = \"ObjectParts\";\nconst _OPb = \"ObjectPart\";\nconst _OS = \"ObjectSize\";\nconst _OSGT = \"ObjectSizeGreaterThan\";\nconst _OSLT = \"ObjectSizeLessThan\";\nconst _OSV = \"OutputSchemaVersion\";\nconst _OSu = \"OutputSerialization\";\nconst _OV = \"ObjectVersion\";\nconst _OVL = \"ObjectVersionList\";\nconst _Ob = \"Objects\";\nconst _Obj = \"Object\";\nconst _P = \"Prefix\";\nconst _PABC = \"PublicAccessBlockConfiguration\";\nconst _PBA = \"PutBucketAbac\";\nconst _PBAC = \"PutBucketAccelerateConfiguration\";\nconst _PBACR = \"PutBucketAccelerateConfigurationRequest\";\nconst _PBACRu = \"PutBucketAnalyticsConfigurationRequest\";\nconst _PBACu = \"PutBucketAnalyticsConfiguration\";\nconst _PBAR = \"PutBucketAbacRequest\";\nconst _PBARu = \"PutBucketAclRequest\";\nconst _PBAu = \"PutBucketAcl\";\nconst _PBC = \"PutBucketCors\";\nconst _PBCR = \"PutBucketCorsRequest\";\nconst _PBE = \"PutBucketEncryption\";\nconst _PBER = \"PutBucketEncryptionRequest\";\nconst _PBIC = \"PutBucketInventoryConfiguration\";\nconst _PBICR = \"PutBucketInventoryConfigurationRequest\";\nconst _PBITC = \"PutBucketIntelligentTieringConfiguration\";\nconst _PBITCR = \"PutBucketIntelligentTieringConfigurationRequest\";\nconst _PBL = \"PutBucketLogging\";\nconst _PBLC = \"PutBucketLifecycleConfiguration\";\nconst _PBLCO = \"PutBucketLifecycleConfigurationOutput\";\nconst _PBLCR = \"PutBucketLifecycleConfigurationRequest\";\nconst _PBLR = \"PutBucketLoggingRequest\";\nconst _PBMC = \"PutBucketMetricsConfiguration\";\nconst _PBMCR = \"PutBucketMetricsConfigurationRequest\";\nconst _PBNC = \"PutBucketNotificationConfiguration\";\nconst _PBNCR = \"PutBucketNotificationConfigurationRequest\";\nconst _PBOC = \"PutBucketOwnershipControls\";\nconst _PBOCR = \"PutBucketOwnershipControlsRequest\";\nconst _PBP = \"PutBucketPolicy\";\nconst _PBPR = \"PutBucketPolicyRequest\";\nconst _PBR = \"PutBucketReplication\";\nconst _PBRP = \"PutBucketRequestPayment\";\nconst _PBRPR = \"PutBucketRequestPaymentRequest\";\nconst _PBRR = \"PutBucketReplicationRequest\";\nconst _PBT = \"PutBucketTagging\";\nconst _PBTR = \"PutBucketTaggingRequest\";\nconst _PBV = \"PutBucketVersioning\";\nconst _PBVR = \"PutBucketVersioningRequest\";\nconst _PBW = \"PutBucketWebsite\";\nconst _PBWR = \"PutBucketWebsiteRequest\";\nconst _PC = \"PartsCount\";\nconst _PDS = \"PartitionDateSource\";\nconst _PE = \"ProgressEvent\";\nconst _PI = \"ParquetInput\";\nconst _PL = \"PartsList\";\nconst _PN = \"PartNumber\";\nconst _PNM = \"PartNumberMarker\";\nconst _PO = \"PutObject\";\nconst _POA = \"PutObjectAcl\";\nconst _POAO = \"PutObjectAclOutput\";\nconst _POAR = \"PutObjectAclRequest\";\nconst _POLC = \"PutObjectLockConfiguration\";\nconst _POLCO = \"PutObjectLockConfigurationOutput\";\nconst _POLCR = \"PutObjectLockConfigurationRequest\";\nconst _POLH = \"PutObjectLegalHold\";\nconst _POLHO = \"PutObjectLegalHoldOutput\";\nconst _POLHR = \"PutObjectLegalHoldRequest\";\nconst _POO = \"PutObjectOutput\";\nconst _POR = \"PutObjectRequest\";\nconst _PORO = \"PutObjectRetentionOutput\";\nconst _PORR = \"PutObjectRetentionRequest\";\nconst _PORu = \"PutObjectRetention\";\nconst _POT = \"PutObjectTagging\";\nconst _POTO = \"PutObjectTaggingOutput\";\nconst _POTR = \"PutObjectTaggingRequest\";\nconst _PP = \"PartitionedPrefix\";\nconst _PPAB = \"PutPublicAccessBlock\";\nconst _PPABR = \"PutPublicAccessBlockRequest\";\nconst _PS = \"PolicyStatus\";\nconst _Pa = \"Parts\";\nconst _Par = \"Part\";\nconst _Parq = \"Parquet\";\nconst _Pay = \"Payer\";\nconst _Payl = \"Payload\";\nconst _Pe = \"Permission\";\nconst _Po = \"Policy\";\nconst _Pr = \"Progress\";\nconst _Pri = \"Priority\";\nconst _Pro = \"Protocol\";\nconst _Q = \"Quiet\";\nconst _QA = \"QueueArn\";\nconst _QC = \"QuoteCharacter\";\nconst _QCL = \"QueueConfigurationList\";\nconst _QCu = \"QueueConfigurations\";\nconst _QCue = \"QueueConfiguration\";\nconst _QEC = \"QuoteEscapeCharacter\";\nconst _QF = \"QuoteFields\";\nconst _Qu = \"Queue\";\nconst _R = \"Rules\";\nconst _RART = \"RedirectAllRequestsTo\";\nconst _RC = \"RequestCharged\";\nconst _RCC = \"ResponseCacheControl\";\nconst _RCD = \"ResponseContentDisposition\";\nconst _RCE = \"ResponseContentEncoding\";\nconst _RCL = \"ResponseContentLanguage\";\nconst _RCT = \"ResponseContentType\";\nconst _RCe = \"ReplicationConfiguration\";\nconst _RD = \"RecordDelimiter\";\nconst _RE = \"ResponseExpires\";\nconst _RED = \"RestoreExpiryDate\";\nconst _REe = \"RecordExpiration\";\nconst _REec = \"RecordsEvent\";\nconst _RKKID = \"ReplicaKmsKeyID\";\nconst _RKPW = \"ReplaceKeyPrefixWith\";\nconst _RKW = \"ReplaceKeyWith\";\nconst _RM = \"ReplicaModifications\";\nconst _RO = \"RenameObject\";\nconst _ROO = \"RenameObjectOutput\";\nconst _ROOe = \"RestoreObjectOutput\";\nconst _ROP = \"RestoreOutputPath\";\nconst _ROR = \"RenameObjectRequest\";\nconst _RORe = \"RestoreObjectRequest\";\nconst _ROe = \"RestoreObject\";\nconst _RP = \"RequestPayer\";\nconst _RPB = \"RestrictPublicBuckets\";\nconst _RPC = \"RequestPaymentConfiguration\";\nconst _RPe = \"RequestProgress\";\nconst _RR = \"RoutingRules\";\nconst _RRAO = \"ReplicationRuleAndOperator\";\nconst _RRF = \"ReplicationRuleFilter\";\nconst _RRe = \"ReplicationRule\";\nconst _RRep = \"ReplicationRules\";\nconst _RReq = \"RequestRoute\";\nconst _RRes = \"RestoreRequest\";\nconst _RRo = \"RoutingRule\";\nconst _RS = \"ReplicationStatus\";\nconst _RSe = \"RestoreStatus\";\nconst _RSen = \"RenameSource\";\nconst _RT = \"ReplicationTime\";\nconst _RTV = \"ReplicationTimeValue\";\nconst _RTe = \"RequestToken\";\nconst _RUD = \"RetainUntilDate\";\nconst _Ra = \"Range\";\nconst _Re = \"Restore\";\nconst _Rec = \"Records\";\nconst _Red = \"Redirect\";\nconst _Ret = \"Retention\";\nconst _Ro = \"Role\";\nconst _Ru = \"Rule\";\nconst _S = \"Status\";\nconst _SA = \"StartAfter\";\nconst _SAK = \"SecretAccessKey\";\nconst _SAs = \"SseAlgorithm\";\nconst _SB = \"StreamingBlob\";\nconst _SBD = \"S3BucketDestination\";\nconst _SC = \"StorageClass\";\nconst _SCA = \"StorageClassAnalysis\";\nconst _SCADE = \"StorageClassAnalysisDataExport\";\nconst _SCV = \"SessionCredentialValue\";\nconst _SCe = \"SessionCredentials\";\nconst _SCt = \"StatusCode\";\nconst _SDV = \"SkipDestinationValidation\";\nconst _SE = \"StatsEvent\";\nconst _SIM = \"SourceIfMatch\";\nconst _SIMS = \"SourceIfModifiedSince\";\nconst _SINM = \"SourceIfNoneMatch\";\nconst _SIUS = \"SourceIfUnmodifiedSince\";\nconst _SK = \"SSE-KMS\";\nconst _SKEO = \"SseKmsEncryptedObjects\";\nconst _SKF = \"S3KeyFilter\";\nconst _SKe = \"S3Key\";\nconst _SL = \"S3Location\";\nconst _SM = \"SessionMode\";\nconst _SOC = \"SelectObjectContent\";\nconst _SOCES = \"SelectObjectContentEventStream\";\nconst _SOCO = \"SelectObjectContentOutput\";\nconst _SOCR = \"SelectObjectContentRequest\";\nconst _SP = \"SelectParameters\";\nconst _SPi = \"SimplePrefix\";\nconst _SR = \"ScanRange\";\nconst _SS = \"SSE-S3\";\nconst _SSC = \"SourceSelectionCriteria\";\nconst _SSE = \"ServerSideEncryption\";\nconst _SSEA = \"SSEAlgorithm\";\nconst _SSEBD = \"ServerSideEncryptionByDefault\";\nconst _SSEC = \"ServerSideEncryptionConfiguration\";\nconst _SSECA = \"SSECustomerAlgorithm\";\nconst _SSECK = \"SSECustomerKey\";\nconst _SSECKMD = \"SSECustomerKeyMD5\";\nconst _SSEKMS = \"SSEKMS\";\nconst _SSEKMSE = \"SSEKMSEncryption\";\nconst _SSEKMSEC = \"SSEKMSEncryptionContext\";\nconst _SSEKMSKI = \"SSEKMSKeyId\";\nconst _SSER = \"ServerSideEncryptionRule\";\nconst _SSERe = \"ServerSideEncryptionRules\";\nconst _SSES = \"SSES3\";\nconst _ST = \"SessionToken\";\nconst _STD = \"S3TablesDestination\";\nconst _STDR = \"S3TablesDestinationResult\";\nconst _S_ = \"S3\";\nconst _Sc = \"Schedule\";\nconst _Si = \"Size\";\nconst _St = \"Start\";\nconst _Sta = \"Stats\";\nconst _Su = \"Suffix\";\nconst _T = \"Tags\";\nconst _TA = \"TableArn\";\nconst _TAo = \"TopicArn\";\nconst _TB = \"TargetBucket\";\nconst _TBA = \"TableBucketArn\";\nconst _TBT = \"TableBucketType\";\nconst _TC = \"TagCount\";\nconst _TCL = \"TopicConfigurationList\";\nconst _TCo = \"TopicConfigurations\";\nconst _TCop = \"TopicConfiguration\";\nconst _TD = \"TaggingDirective\";\nconst _TDMOS = \"TransitionDefaultMinimumObjectSize\";\nconst _TG = \"TargetGrants\";\nconst _TGa = \"TargetGrant\";\nconst _TL = \"TieringList\";\nconst _TLr = \"TransitionList\";\nconst _TMP = \"TooManyParts\";\nconst _TN = \"TableNamespace\";\nconst _TNa = \"TableName\";\nconst _TOKF = \"TargetObjectKeyFormat\";\nconst _TP = \"TargetPrefix\";\nconst _TPC = \"TotalPartsCount\";\nconst _TS = \"TagSet\";\nconst _TSa = \"TableStatus\";\nconst _Ta = \"Tag\";\nconst _Tag = \"Tagging\";\nconst _Ti = \"Tier\";\nconst _Tie = \"Tierings\";\nconst _Tier = \"Tiering\";\nconst _Tim = \"Time\";\nconst _To = \"Token\";\nconst _Top = \"Topic\";\nconst _Tr = \"Transitions\";\nconst _Tra = \"Transition\";\nconst _Ty = \"Type\";\nconst _U = \"Uploads\";\nconst _UBMITC = \"UpdateBucketMetadataInventoryTableConfiguration\";\nconst _UBMITCR = \"UpdateBucketMetadataInventoryTableConfigurationRequest\";\nconst _UBMJTC = \"UpdateBucketMetadataJournalTableConfiguration\";\nconst _UBMJTCR = \"UpdateBucketMetadataJournalTableConfigurationRequest\";\nconst _UI = \"UploadId\";\nconst _UIM = \"UploadIdMarker\";\nconst _UM = \"UserMetadata\";\nconst _UOE = \"UpdateObjectEncryption\";\nconst _UOER = \"UpdateObjectEncryptionRequest\";\nconst _UOERp = \"UpdateObjectEncryptionResponse\";\nconst _UP = \"UploadPart\";\nconst _UPC = \"UploadPartCopy\";\nconst _UPCO = \"UploadPartCopyOutput\";\nconst _UPCR = \"UploadPartCopyRequest\";\nconst _UPO = \"UploadPartOutput\";\nconst _UPR = \"UploadPartRequest\";\nconst _URI = \"URI\";\nconst _Up = \"Upload\";\nconst _V = \"Value\";\nconst _VC = \"VersioningConfiguration\";\nconst _VI = \"VersionId\";\nconst _VIM = \"VersionIdMarker\";\nconst _Ve = \"Versions\";\nconst _Ver = \"Version\";\nconst _WC = \"WebsiteConfiguration\";\nconst _WGOR = \"WriteGetObjectResponse\";\nconst _WGORR = \"WriteGetObjectResponseRequest\";\nconst _WOB = \"WriteOffsetBytes\";\nconst _WRL = \"WebsiteRedirectLocation\";\nconst _Y = \"Years\";\nconst _ar = \"accept-ranges\";\nconst _br = \"bucket-region\";\nconst _c = \"client\";\nconst _ct = \"continuation-token\";\nconst _d = \"delimiter\";\nconst _e = \"error\";\nconst _eP = \"eventPayload\";\nconst _en = \"endpoint\";\nconst _et = \"encoding-type\";\nconst _fo = \"fetch-owner\";\nconst _h = \"http\";\nconst _hC = \"httpChecksum\";\nconst _hE = \"httpError\";\nconst _hH = \"httpHeader\";\nconst _hL = \"hostLabel\";\nconst _hP = \"httpPayload\";\nconst _hPH = \"httpPrefixHeaders\";\nconst _hQ = \"httpQuery\";\nconst _hi = \"http://www.w3.org/2001/XMLSchema-instance\";\nconst _i = \"id\";\nconst _iT = \"idempotencyToken\";\nconst _km = \"key-marker\";\nconst _m = \"marker\";\nconst _mb = \"max-buckets\";\nconst _mdb = \"max-directory-buckets\";\nconst _mk = \"max-keys\";\nconst _mp = \"max-parts\";\nconst _mu = \"max-uploads\";\nconst _p = \"prefix\";\nconst _pN = \"partNumber\";\nconst _pnm = \"part-number-marker\";\nconst _rcc = \"response-cache-control\";\nconst _rcd = \"response-content-disposition\";\nconst _rce = \"response-content-encoding\";\nconst _rcl = \"response-content-language\";\nconst _rct = \"response-content-type\";\nconst _re = \"response-expires\";\nconst _s = \"smithy.ts.sdk.synthetic.com.amazonaws.s3\";\nconst _sa = \"start-after\";\nconst _st = \"streaming\";\nconst _uI = \"uploadId\";\nconst _uim = \"upload-id-marker\";\nconst _vI = \"versionId\";\nconst _vim = \"version-id-marker\";\nconst _x = \"xsi\";\nconst _xA = \"xmlAttribute\";\nconst _xF = \"xmlFlattened\";\nconst _xN = \"xmlName\";\nconst _xNm = \"xmlNamespace\";\nconst _xaa = \"x-amz-acl\";\nconst _xaad = \"x-amz-abort-date\";\nconst _xaapa = \"x-amz-access-point-alias\";\nconst _xaari = \"x-amz-abort-rule-id\";\nconst _xaas = \"x-amz-archive-status\";\nconst _xaba = \"x-amz-bucket-arn\";\nconst _xabgr = \"x-amz-bypass-governance-retention\";\nconst _xabln = \"x-amz-bucket-location-name\";\nconst _xablt = \"x-amz-bucket-location-type\";\nconst _xabn = \"x-amz-bucket-namespace\";\nconst _xabole = \"x-amz-bucket-object-lock-enabled\";\nconst _xabolt = \"x-amz-bucket-object-lock-token\";\nconst _xabr = \"x-amz-bucket-region\";\nconst _xaca = \"x-amz-checksum-algorithm\";\nconst _xacc = \"x-amz-checksum-crc32\";\nconst _xacc_ = \"x-amz-checksum-crc32c\";\nconst _xacc__ = \"x-amz-checksum-crc64nvme\";\nconst _xacm = \"x-amz-checksum-mode\";\nconst _xacrsba = \"x-amz-confirm-remove-self-bucket-access\";\nconst _xacs = \"x-amz-checksum-sha1\";\nconst _xacs_ = \"x-amz-checksum-sha256\";\nconst _xacs__ = \"x-amz-copy-source\";\nconst _xacsim = \"x-amz-copy-source-if-match\";\nconst _xacsims = \"x-amz-copy-source-if-modified-since\";\nconst _xacsinm = \"x-amz-copy-source-if-none-match\";\nconst _xacsius = \"x-amz-copy-source-if-unmodified-since\";\nconst _xacsm = \"x-amz-create-session-mode\";\nconst _xacsr = \"x-amz-copy-source-range\";\nconst _xacssseca = \"x-amz-copy-source-server-side-encryption-customer-algorithm\";\nconst _xacssseck = \"x-amz-copy-source-server-side-encryption-customer-key\";\nconst _xacssseckM = \"x-amz-copy-source-server-side-encryption-customer-key-MD5\";\nconst _xacsvi = \"x-amz-copy-source-version-id\";\nconst _xact = \"x-amz-checksum-type\";\nconst _xact_ = \"x-amz-client-token\";\nconst _xadm = \"x-amz-delete-marker\";\nconst _xae = \"x-amz-expiration\";\nconst _xaebo = \"x-amz-expected-bucket-owner\";\nconst _xafec = \"x-amz-fwd-error-code\";\nconst _xafem = \"x-amz-fwd-error-message\";\nconst _xafhCC = \"x-amz-fwd-header-Cache-Control\";\nconst _xafhCD = \"x-amz-fwd-header-Content-Disposition\";\nconst _xafhCE = \"x-amz-fwd-header-Content-Encoding\";\nconst _xafhCL = \"x-amz-fwd-header-Content-Language\";\nconst _xafhCR = \"x-amz-fwd-header-Content-Range\";\nconst _xafhCT = \"x-amz-fwd-header-Content-Type\";\nconst _xafhE = \"x-amz-fwd-header-ETag\";\nconst _xafhE_ = \"x-amz-fwd-header-Expires\";\nconst _xafhLM = \"x-amz-fwd-header-Last-Modified\";\nconst _xafhar = \"x-amz-fwd-header-accept-ranges\";\nconst _xafhxacc = \"x-amz-fwd-header-x-amz-checksum-crc32\";\nconst _xafhxacc_ = \"x-amz-fwd-header-x-amz-checksum-crc32c\";\nconst _xafhxacc__ = \"x-amz-fwd-header-x-amz-checksum-crc64nvme\";\nconst _xafhxacs = \"x-amz-fwd-header-x-amz-checksum-sha1\";\nconst _xafhxacs_ = \"x-amz-fwd-header-x-amz-checksum-sha256\";\nconst _xafhxadm = \"x-amz-fwd-header-x-amz-delete-marker\";\nconst _xafhxae = \"x-amz-fwd-header-x-amz-expiration\";\nconst _xafhxamm = \"x-amz-fwd-header-x-amz-missing-meta\";\nconst _xafhxampc = \"x-amz-fwd-header-x-amz-mp-parts-count\";\nconst _xafhxaollh = \"x-amz-fwd-header-x-amz-object-lock-legal-hold\";\nconst _xafhxaolm = \"x-amz-fwd-header-x-amz-object-lock-mode\";\nconst _xafhxaolrud = \"x-amz-fwd-header-x-amz-object-lock-retain-until-date\";\nconst _xafhxar = \"x-amz-fwd-header-x-amz-restore\";\nconst _xafhxarc = \"x-amz-fwd-header-x-amz-request-charged\";\nconst _xafhxars = \"x-amz-fwd-header-x-amz-replication-status\";\nconst _xafhxasc = \"x-amz-fwd-header-x-amz-storage-class\";\nconst _xafhxasse = \"x-amz-fwd-header-x-amz-server-side-encryption\";\nconst _xafhxasseakki = \"x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id\";\nconst _xafhxassebke = \"x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled\";\nconst _xafhxasseca = \"x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm\";\nconst _xafhxasseckM = \"x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5\";\nconst _xafhxatc = \"x-amz-fwd-header-x-amz-tagging-count\";\nconst _xafhxavi = \"x-amz-fwd-header-x-amz-version-id\";\nconst _xafs = \"x-amz-fwd-status\";\nconst _xagfc = \"x-amz-grant-full-control\";\nconst _xagr = \"x-amz-grant-read\";\nconst _xagra = \"x-amz-grant-read-acp\";\nconst _xagw = \"x-amz-grant-write\";\nconst _xagwa = \"x-amz-grant-write-acp\";\nconst _xaimit = \"x-amz-if-match-initiated-time\";\nconst _xaimlmt = \"x-amz-if-match-last-modified-time\";\nconst _xaims = \"x-amz-if-match-size\";\nconst _xam = \"x-amz-meta-\";\nconst _xam_ = \"x-amz-mfa\";\nconst _xamd = \"x-amz-metadata-directive\";\nconst _xamm = \"x-amz-missing-meta\";\nconst _xamos = \"x-amz-mp-object-size\";\nconst _xamp = \"x-amz-max-parts\";\nconst _xampc = \"x-amz-mp-parts-count\";\nconst _xaoa = \"x-amz-object-attributes\";\nconst _xaollh = \"x-amz-object-lock-legal-hold\";\nconst _xaolm = \"x-amz-object-lock-mode\";\nconst _xaolrud = \"x-amz-object-lock-retain-until-date\";\nconst _xaoo = \"x-amz-object-ownership\";\nconst _xaooa = \"x-amz-optional-object-attributes\";\nconst _xaos = \"x-amz-object-size\";\nconst _xapnm = \"x-amz-part-number-marker\";\nconst _xar = \"x-amz-restore\";\nconst _xarc = \"x-amz-request-charged\";\nconst _xarop = \"x-amz-restore-output-path\";\nconst _xarp = \"x-amz-request-payer\";\nconst _xarr = \"x-amz-request-route\";\nconst _xars = \"x-amz-replication-status\";\nconst _xars_ = \"x-amz-rename-source\";\nconst _xarsim = \"x-amz-rename-source-if-match\";\nconst _xarsims = \"x-amz-rename-source-if-modified-since\";\nconst _xarsinm = \"x-amz-rename-source-if-none-match\";\nconst _xarsius = \"x-amz-rename-source-if-unmodified-since\";\nconst _xart = \"x-amz-request-token\";\nconst _xasc = \"x-amz-storage-class\";\nconst _xasca = \"x-amz-sdk-checksum-algorithm\";\nconst _xasdv = \"x-amz-skip-destination-validation\";\nconst _xasebo = \"x-amz-source-expected-bucket-owner\";\nconst _xasse = \"x-amz-server-side-encryption\";\nconst _xasseakki = \"x-amz-server-side-encryption-aws-kms-key-id\";\nconst _xassebke = \"x-amz-server-side-encryption-bucket-key-enabled\";\nconst _xassec = \"x-amz-server-side-encryption-context\";\nconst _xasseca = \"x-amz-server-side-encryption-customer-algorithm\";\nconst _xasseck = \"x-amz-server-side-encryption-customer-key\";\nconst _xasseckM = \"x-amz-server-side-encryption-customer-key-MD5\";\nconst _xat = \"x-amz-tagging\";\nconst _xatc = \"x-amz-tagging-count\";\nconst _xatd = \"x-amz-tagging-directive\";\nconst _xatdmos = \"x-amz-transition-default-minimum-object-size\";\nconst _xavi = \"x-amz-version-id\";\nconst _xawob = \"x-amz-write-offset-bytes\";\nconst _xawrl = \"x-amz-website-redirect-location\";\nconst _xs = \"xsi:type\";\nconst n0 = \"com.amazonaws.s3\";\nimport { TypeRegistry } from \"@smithy/core/schema\";\nimport { AccessDenied, BucketAlreadyExists, BucketAlreadyOwnedByYou, EncryptionTypeMismatch, IdempotencyParameterMismatch, InvalidObjectState, InvalidRequest, InvalidWriteOffset, NoSuchBucket, NoSuchKey, NoSuchUpload, NotFound, ObjectAlreadyInActiveTierError, ObjectNotInActiveTierError, TooManyParts, } from \"../models/errors\";\nimport { S3ServiceException } from \"../models/S3ServiceException\";\nconst _s_registry = TypeRegistry.for(_s);\nexport var S3ServiceException$ = [-3, _s, \"S3ServiceException\", 0, [], []];\n_s_registry.registerError(S3ServiceException$, S3ServiceException);\nconst n0_registry = TypeRegistry.for(n0);\nexport var AccessDenied$ = [-3, n0, _AD,\n { [_e]: _c, [_hE]: 403 },\n [],\n []\n];\nn0_registry.registerError(AccessDenied$, AccessDenied);\nexport var BucketAlreadyExists$ = [-3, n0, _BAE,\n { [_e]: _c, [_hE]: 409 },\n [],\n []\n];\nn0_registry.registerError(BucketAlreadyExists$, BucketAlreadyExists);\nexport var BucketAlreadyOwnedByYou$ = [-3, n0, _BAOBY,\n { [_e]: _c, [_hE]: 409 },\n [],\n []\n];\nn0_registry.registerError(BucketAlreadyOwnedByYou$, BucketAlreadyOwnedByYou);\nexport var EncryptionTypeMismatch$ = [-3, n0, _ETM,\n { [_e]: _c, [_hE]: 400 },\n [],\n []\n];\nn0_registry.registerError(EncryptionTypeMismatch$, EncryptionTypeMismatch);\nexport var IdempotencyParameterMismatch$ = [-3, n0, _IPM,\n { [_e]: _c, [_hE]: 400 },\n [],\n []\n];\nn0_registry.registerError(IdempotencyParameterMismatch$, IdempotencyParameterMismatch);\nexport var InvalidObjectState$ = [-3, n0, _IOS,\n { [_e]: _c, [_hE]: 403 },\n [_SC, _AT],\n [0, 0]\n];\nn0_registry.registerError(InvalidObjectState$, InvalidObjectState);\nexport var InvalidRequest$ = [-3, n0, _IR,\n { [_e]: _c, [_hE]: 400 },\n [],\n []\n];\nn0_registry.registerError(InvalidRequest$, InvalidRequest);\nexport var InvalidWriteOffset$ = [-3, n0, _IWO,\n { [_e]: _c, [_hE]: 400 },\n [],\n []\n];\nn0_registry.registerError(InvalidWriteOffset$, InvalidWriteOffset);\nexport var NoSuchBucket$ = [-3, n0, _NSB,\n { [_e]: _c, [_hE]: 404 },\n [],\n []\n];\nn0_registry.registerError(NoSuchBucket$, NoSuchBucket);\nexport var NoSuchKey$ = [-3, n0, _NSK,\n { [_e]: _c, [_hE]: 404 },\n [],\n []\n];\nn0_registry.registerError(NoSuchKey$, NoSuchKey);\nexport var NoSuchUpload$ = [-3, n0, _NSU,\n { [_e]: _c, [_hE]: 404 },\n [],\n []\n];\nn0_registry.registerError(NoSuchUpload$, NoSuchUpload);\nexport var NotFound$ = [-3, n0, _NF,\n { [_e]: _c },\n [],\n []\n];\nn0_registry.registerError(NotFound$, NotFound);\nexport var ObjectAlreadyInActiveTierError$ = [-3, n0, _OAIATE,\n { [_e]: _c, [_hE]: 403 },\n [],\n []\n];\nn0_registry.registerError(ObjectAlreadyInActiveTierError$, ObjectAlreadyInActiveTierError);\nexport var ObjectNotInActiveTierError$ = [-3, n0, _ONIATE,\n { [_e]: _c, [_hE]: 403 },\n [],\n []\n];\nn0_registry.registerError(ObjectNotInActiveTierError$, ObjectNotInActiveTierError);\nexport var TooManyParts$ = [-3, n0, _TMP,\n { [_e]: _c, [_hE]: 400 },\n [],\n []\n];\nn0_registry.registerError(TooManyParts$, TooManyParts);\nexport const errorTypeRegistries = [\n _s_registry,\n n0_registry,\n];\nvar CopySourceSSECustomerKey = [0, n0, _CSSSECK, 8, 0];\nvar NonEmptyKmsKeyArnString = [0, n0, _NEKKAS, 8, 0];\nvar SessionCredentialValue = [0, n0, _SCV, 8, 0];\nvar SSECustomerKey = [0, n0, _SSECK, 8, 0];\nvar SSEKMSEncryptionContext = [0, n0, _SSEKMSEC, 8, 0];\nvar SSEKMSKeyId = [0, n0, _SSEKMSKI, 8, 0];\nvar StreamingBlob = [0, n0, _SB, { [_st]: 1 }, 42];\nexport var AbacStatus$ = [3, n0, _AS,\n 0,\n [_S],\n [0]\n];\nexport var AbortIncompleteMultipartUpload$ = [3, n0, _AIMU,\n 0,\n [_DAI],\n [1]\n];\nexport var AbortMultipartUploadOutput$ = [3, n0, _AMUO,\n 0,\n [_RC],\n [[0, { [_hH]: _xarc }]]\n];\nexport var AbortMultipartUploadRequest$ = [3, n0, _AMUR,\n 0,\n [_B, _K, _UI, _RP, _EBO, _IMIT],\n [[0, 1], [0, 1], [0, { [_hQ]: _uI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [6, { [_hH]: _xaimit }]], 3\n];\nexport var AccelerateConfiguration$ = [3, n0, _AC,\n 0,\n [_S],\n [0]\n];\nexport var AccessControlPolicy$ = [3, n0, _ACP,\n 0,\n [_G, _O],\n [[() => Grants, { [_xN]: _ACL }], () => Owner$]\n];\nexport var AccessControlTranslation$ = [3, n0, _ACT,\n 0,\n [_O],\n [0], 1\n];\nexport var AnalyticsAndOperator$ = [3, n0, _AAO,\n 0,\n [_P, _T],\n [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }]]\n];\nexport var AnalyticsConfiguration$ = [3, n0, _ACn,\n 0,\n [_I, _SCA, _F],\n [0, () => StorageClassAnalysis$, [() => AnalyticsFilter$, 0]], 2\n];\nexport var AnalyticsExportDestination$ = [3, n0, _AED,\n 0,\n [_SBD],\n [() => AnalyticsS3BucketDestination$], 1\n];\nexport var AnalyticsS3BucketDestination$ = [3, n0, _ASBD,\n 0,\n [_Fo, _B, _BAI, _P],\n [0, 0, 0, 0], 2\n];\nexport var BlockedEncryptionTypes$ = [3, n0, _BET,\n 0,\n [_ET],\n [[() => EncryptionTypeList, { [_xF]: 1 }]]\n];\nexport var Bucket$ = [3, n0, _B,\n 0,\n [_N, _CD, _BR, _BA],\n [0, 4, 0, 0]\n];\nexport var BucketInfo$ = [3, n0, _BI,\n 0,\n [_DR, _Ty],\n [0, 0]\n];\nexport var BucketLifecycleConfiguration$ = [3, n0, _BLC,\n 0,\n [_R],\n [[() => LifecycleRules, { [_xF]: 1, [_xN]: _Ru }]], 1\n];\nexport var BucketLoggingStatus$ = [3, n0, _BLS,\n 0,\n [_LE],\n [[() => LoggingEnabled$, 0]]\n];\nexport var Checksum$ = [3, n0, _C,\n 0,\n [_CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT],\n [0, 0, 0, 0, 0, 0]\n];\nexport var CommonPrefix$ = [3, n0, _CP,\n 0,\n [_P],\n [0]\n];\nexport var CompletedMultipartUpload$ = [3, n0, _CMU,\n 0,\n [_Pa],\n [[() => CompletedPartList, { [_xF]: 1, [_xN]: _Par }]]\n];\nexport var CompletedPart$ = [3, n0, _CPo,\n 0,\n [_ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _PN],\n [0, 0, 0, 0, 0, 0, 1]\n];\nexport var CompleteMultipartUploadOutput$ = [3, n0, _CMUO,\n { [_xN]: _CMUR },\n [_L, _B, _K, _E, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _SSE, _VI, _SSEKMSKI, _BKE, _RC],\n [0, 0, 0, [0, { [_hH]: _xae }], 0, 0, 0, 0, 0, 0, 0, [0, { [_hH]: _xasse }], [0, { [_hH]: _xavi }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]]\n];\nexport var CompleteMultipartUploadRequest$ = [3, n0, _CMURo,\n 0,\n [_B, _K, _UI, _MU, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _MOS, _RP, _EBO, _IM, _INM, _SSECA, _SSECK, _SSECKMD],\n [[0, 1], [0, 1], [0, { [_hQ]: _uI }], [() => CompletedMultipartUpload$, { [_hP]: 1, [_xN]: _CMUo }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [1, { [_hH]: _xamos }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }]], 3\n];\nexport var Condition$ = [3, n0, _Co,\n 0,\n [_HECRE, _KPE],\n [0, 0]\n];\nexport var ContinuationEvent$ = [3, n0, _CE,\n 0,\n [],\n []\n];\nexport var CopyObjectOutput$ = [3, n0, _COO,\n 0,\n [_COR, _E, _CSVI, _VI, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RC],\n [[() => CopyObjectResult$, 16], [0, { [_hH]: _xae }], [0, { [_hH]: _xacsvi }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]]\n];\nexport var CopyObjectRequest$ = [3, n0, _CORo,\n 0,\n [_B, _CS, _K, _ACL_, _CC, _CA, _CDo, _CEo, _CL, _CTo, _CSIM, _CSIMS, _CSINM, _CSIUS, _Ex, _GFC, _GR, _GRACP, _GWACP, _IM, _INM, _M, _MD, _TD, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _CSSSECA, _CSSSECK, _CSSSECKMD, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _EBO, _ESBO],\n [[0, 1], [0, { [_hH]: _xacs__ }], [0, 1], [0, { [_hH]: _xaa }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _xaca }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CT_ }], [0, { [_hH]: _xacsim }], [4, { [_hH]: _xacsims }], [0, { [_hH]: _xacsinm }], [4, { [_hH]: _xacsius }], [4, { [_hH]: _Ex }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagwa }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xamd }], [0, { [_hH]: _xatd }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xacssseca }], [() => CopySourceSSECustomerKey, { [_hH]: _xacssseck }], [0, { [_hH]: _xacssseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xat }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasebo }]], 3\n];\nexport var CopyObjectResult$ = [3, n0, _COR,\n 0,\n [_ETa, _LM, _CT, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh],\n [0, 4, 0, 0, 0, 0, 0, 0]\n];\nexport var CopyPartResult$ = [3, n0, _CPR,\n 0,\n [_ETa, _LM, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh],\n [0, 4, 0, 0, 0, 0, 0]\n];\nexport var CORSConfiguration$ = [3, n0, _CORSC,\n 0,\n [_CORSR],\n [[() => CORSRules, { [_xF]: 1, [_xN]: _CORSRu }]], 1\n];\nexport var CORSRule$ = [3, n0, _CORSRu,\n 0,\n [_AM, _AO, _ID, _AH, _EH, _MAS],\n [[64 | 0, { [_xF]: 1, [_xN]: _AMl }], [64 | 0, { [_xF]: 1, [_xN]: _AOl }], 0, [64 | 0, { [_xF]: 1, [_xN]: _AHl }], [64 | 0, { [_xF]: 1, [_xN]: _EHx }], 1], 2\n];\nexport var CreateBucketConfiguration$ = [3, n0, _CBC,\n 0,\n [_LC, _L, _B, _T],\n [0, () => LocationInfo$, () => BucketInfo$, [() => TagSet, 0]]\n];\nexport var CreateBucketMetadataConfigurationRequest$ = [3, n0, _CBMCR,\n 0,\n [_B, _MC, _CMD, _CA, _EBO],\n [[0, 1], [() => MetadataConfiguration$, { [_hP]: 1, [_xN]: _MC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var CreateBucketMetadataTableConfigurationRequest$ = [3, n0, _CBMTCR,\n 0,\n [_B, _MTC, _CMD, _CA, _EBO],\n [[0, 1], [() => MetadataTableConfiguration$, { [_hP]: 1, [_xN]: _MTC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var CreateBucketOutput$ = [3, n0, _CBO,\n 0,\n [_L, _BA],\n [[0, { [_hH]: _L }], [0, { [_hH]: _xaba }]]\n];\nexport var CreateBucketRequest$ = [3, n0, _CBR,\n 0,\n [_B, _ACL_, _CBC, _GFC, _GR, _GRACP, _GW, _GWACP, _OLEFB, _OO, _BN],\n [[0, 1], [0, { [_hH]: _xaa }], [() => CreateBucketConfiguration$, { [_hP]: 1, [_xN]: _CBC }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagw }], [0, { [_hH]: _xagwa }], [2, { [_hH]: _xabole }], [0, { [_hH]: _xaoo }], [0, { [_hH]: _xabn }]], 1\n];\nexport var CreateMultipartUploadOutput$ = [3, n0, _CMUOr,\n { [_xN]: _IMUR },\n [_ADb, _ARI, _B, _K, _UI, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RC, _CA, _CT],\n [[4, { [_hH]: _xaad }], [0, { [_hH]: _xaari }], [0, { [_xN]: _B }], 0, 0, [0, { [_hH]: _xasse }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }], [0, { [_hH]: _xaca }], [0, { [_hH]: _xact }]]\n];\nexport var CreateMultipartUploadRequest$ = [3, n0, _CMURr,\n 0,\n [_B, _K, _ACL_, _CC, _CDo, _CEo, _CL, _CTo, _Ex, _GFC, _GR, _GRACP, _GWACP, _M, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _EBO, _CA, _CT],\n [[0, 1], [0, 1], [0, { [_hH]: _xaa }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CT_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagwa }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xat }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xaca }], [0, { [_hH]: _xact }]], 2\n];\nexport var CreateSessionOutput$ = [3, n0, _CSO,\n { [_xN]: _CSR },\n [_Cr, _SSE, _SSEKMSKI, _SSEKMSEC, _BKE],\n [[() => SessionCredentials$, { [_xN]: _Cr }], [0, { [_hH]: _xasse }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }]], 1\n];\nexport var CreateSessionRequest$ = [3, n0, _CSRr,\n 0,\n [_B, _SM, _SSE, _SSEKMSKI, _SSEKMSEC, _BKE],\n [[0, 1], [0, { [_hH]: _xacsm }], [0, { [_hH]: _xasse }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }]], 1\n];\nexport var CSVInput$ = [3, n0, _CSVIn,\n 0,\n [_FHI, _Com, _QEC, _RD, _FD, _QC, _AQRD],\n [0, 0, 0, 0, 0, 0, 2]\n];\nexport var CSVOutput$ = [3, n0, _CSVO,\n 0,\n [_QF, _QEC, _RD, _FD, _QC],\n [0, 0, 0, 0, 0]\n];\nexport var DefaultRetention$ = [3, n0, _DRe,\n 0,\n [_Mo, _D, _Y],\n [0, 1, 1]\n];\nexport var Delete$ = [3, n0, _De,\n 0,\n [_Ob, _Q],\n [[() => ObjectIdentifierList, { [_xF]: 1, [_xN]: _Obj }], 2], 1\n];\nexport var DeleteBucketAnalyticsConfigurationRequest$ = [3, n0, _DBACR,\n 0,\n [_B, _I, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var DeleteBucketCorsRequest$ = [3, n0, _DBCR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeleteBucketEncryptionRequest$ = [3, n0, _DBER,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeleteBucketIntelligentTieringConfigurationRequest$ = [3, n0, _DBITCR,\n 0,\n [_B, _I, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var DeleteBucketInventoryConfigurationRequest$ = [3, n0, _DBICR,\n 0,\n [_B, _I, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var DeleteBucketLifecycleRequest$ = [3, n0, _DBLR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeleteBucketMetadataConfigurationRequest$ = [3, n0, _DBMCR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeleteBucketMetadataTableConfigurationRequest$ = [3, n0, _DBMTCR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeleteBucketMetricsConfigurationRequest$ = [3, n0, _DBMCRe,\n 0,\n [_B, _I, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var DeleteBucketOwnershipControlsRequest$ = [3, n0, _DBOCR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeleteBucketPolicyRequest$ = [3, n0, _DBPR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeleteBucketReplicationRequest$ = [3, n0, _DBRR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeleteBucketRequest$ = [3, n0, _DBR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeleteBucketTaggingRequest$ = [3, n0, _DBTR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeleteBucketWebsiteRequest$ = [3, n0, _DBWR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var DeletedObject$ = [3, n0, _DO,\n 0,\n [_K, _VI, _DM, _DMVI],\n [0, 0, 2, 0]\n];\nexport var DeleteMarkerEntry$ = [3, n0, _DME,\n 0,\n [_O, _K, _VI, _IL, _LM],\n [() => Owner$, 0, 0, 2, 4]\n];\nexport var DeleteMarkerReplication$ = [3, n0, _DMR,\n 0,\n [_S],\n [0]\n];\nexport var DeleteObjectOutput$ = [3, n0, _DOO,\n 0,\n [_DM, _VI, _RC],\n [[2, { [_hH]: _xadm }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xarc }]]\n];\nexport var DeleteObjectRequest$ = [3, n0, _DOR,\n 0,\n [_B, _K, _MFA, _VI, _RP, _BGR, _EBO, _IM, _IMLMT, _IMS],\n [[0, 1], [0, 1], [0, { [_hH]: _xam_ }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [2, { [_hH]: _xabgr }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _IM_ }], [6, { [_hH]: _xaimlmt }], [1, { [_hH]: _xaims }]], 2\n];\nexport var DeleteObjectsOutput$ = [3, n0, _DOOe,\n { [_xN]: _DRel },\n [_Del, _RC, _Er],\n [[() => DeletedObjects, { [_xF]: 1 }], [0, { [_hH]: _xarc }], [() => Errors, { [_xF]: 1, [_xN]: _Err }]]\n];\nexport var DeleteObjectsRequest$ = [3, n0, _DORe,\n 0,\n [_B, _De, _MFA, _RP, _BGR, _EBO, _CA],\n [[0, 1], [() => Delete$, { [_hP]: 1, [_xN]: _De }], [0, { [_hH]: _xam_ }], [0, { [_hH]: _xarp }], [2, { [_hH]: _xabgr }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasca }]], 2\n];\nexport var DeleteObjectTaggingOutput$ = [3, n0, _DOTO,\n 0,\n [_VI],\n [[0, { [_hH]: _xavi }]]\n];\nexport var DeleteObjectTaggingRequest$ = [3, n0, _DOTR,\n 0,\n [_B, _K, _VI, _EBO],\n [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var DeletePublicAccessBlockRequest$ = [3, n0, _DPABR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var Destination$ = [3, n0, _Des,\n 0,\n [_B, _A, _SC, _ACT, _EC, _RT, _Me],\n [0, 0, 0, () => AccessControlTranslation$, () => EncryptionConfiguration$, () => ReplicationTime$, () => Metrics$], 1\n];\nexport var DestinationResult$ = [3, n0, _DRes,\n 0,\n [_TBT, _TBA, _TN],\n [0, 0, 0]\n];\nexport var Encryption$ = [3, n0, _En,\n 0,\n [_ET, _KMSKI, _KMSC],\n [0, [() => SSEKMSKeyId, 0], 0], 1\n];\nexport var EncryptionConfiguration$ = [3, n0, _EC,\n 0,\n [_RKKID],\n [0]\n];\nexport var EndEvent$ = [3, n0, _EE,\n 0,\n [],\n []\n];\nexport var _Error$ = [3, n0, _Err,\n 0,\n [_K, _VI, _Cod, _Mes],\n [0, 0, 0, 0]\n];\nexport var ErrorDetails$ = [3, n0, _ED,\n 0,\n [_ECr, _EM],\n [0, 0]\n];\nexport var ErrorDocument$ = [3, n0, _EDr,\n 0,\n [_K],\n [0], 1\n];\nexport var EventBridgeConfiguration$ = [3, n0, _EBC,\n 0,\n [],\n []\n];\nexport var ExistingObjectReplication$ = [3, n0, _EOR,\n 0,\n [_S],\n [0], 1\n];\nexport var FilterRule$ = [3, n0, _FR,\n 0,\n [_N, _V],\n [0, 0]\n];\nexport var GetBucketAbacOutput$ = [3, n0, _GBAO,\n 0,\n [_AS],\n [[() => AbacStatus$, 16]]\n];\nexport var GetBucketAbacRequest$ = [3, n0, _GBAR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketAccelerateConfigurationOutput$ = [3, n0, _GBACO,\n { [_xN]: _AC },\n [_S, _RC],\n [0, [0, { [_hH]: _xarc }]]\n];\nexport var GetBucketAccelerateConfigurationRequest$ = [3, n0, _GBACR,\n 0,\n [_B, _EBO, _RP],\n [[0, 1], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 1\n];\nexport var GetBucketAclOutput$ = [3, n0, _GBAOe,\n { [_xN]: _ACP },\n [_O, _G],\n [() => Owner$, [() => Grants, { [_xN]: _ACL }]]\n];\nexport var GetBucketAclRequest$ = [3, n0, _GBARe,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketAnalyticsConfigurationOutput$ = [3, n0, _GBACOe,\n 0,\n [_ACn],\n [[() => AnalyticsConfiguration$, 16]]\n];\nexport var GetBucketAnalyticsConfigurationRequest$ = [3, n0, _GBACRe,\n 0,\n [_B, _I, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var GetBucketCorsOutput$ = [3, n0, _GBCO,\n { [_xN]: _CORSC },\n [_CORSR],\n [[() => CORSRules, { [_xF]: 1, [_xN]: _CORSRu }]]\n];\nexport var GetBucketCorsRequest$ = [3, n0, _GBCR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketEncryptionOutput$ = [3, n0, _GBEO,\n 0,\n [_SSEC],\n [[() => ServerSideEncryptionConfiguration$, 16]]\n];\nexport var GetBucketEncryptionRequest$ = [3, n0, _GBER,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketIntelligentTieringConfigurationOutput$ = [3, n0, _GBITCO,\n 0,\n [_ITC],\n [[() => IntelligentTieringConfiguration$, 16]]\n];\nexport var GetBucketIntelligentTieringConfigurationRequest$ = [3, n0, _GBITCR,\n 0,\n [_B, _I, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var GetBucketInventoryConfigurationOutput$ = [3, n0, _GBICO,\n 0,\n [_IC],\n [[() => InventoryConfiguration$, 16]]\n];\nexport var GetBucketInventoryConfigurationRequest$ = [3, n0, _GBICR,\n 0,\n [_B, _I, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var GetBucketLifecycleConfigurationOutput$ = [3, n0, _GBLCO,\n { [_xN]: _LCi },\n [_R, _TDMOS],\n [[() => LifecycleRules, { [_xF]: 1, [_xN]: _Ru }], [0, { [_hH]: _xatdmos }]]\n];\nexport var GetBucketLifecycleConfigurationRequest$ = [3, n0, _GBLCR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketLocationOutput$ = [3, n0, _GBLO,\n { [_xN]: _LC },\n [_LC],\n [0]\n];\nexport var GetBucketLocationRequest$ = [3, n0, _GBLR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketLoggingOutput$ = [3, n0, _GBLOe,\n { [_xN]: _BLS },\n [_LE],\n [[() => LoggingEnabled$, 0]]\n];\nexport var GetBucketLoggingRequest$ = [3, n0, _GBLRe,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketMetadataConfigurationOutput$ = [3, n0, _GBMCO,\n 0,\n [_GBMCR],\n [[() => GetBucketMetadataConfigurationResult$, 16]]\n];\nexport var GetBucketMetadataConfigurationRequest$ = [3, n0, _GBMCRe,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketMetadataConfigurationResult$ = [3, n0, _GBMCR,\n 0,\n [_MCR],\n [() => MetadataConfigurationResult$], 1\n];\nexport var GetBucketMetadataTableConfigurationOutput$ = [3, n0, _GBMTCO,\n 0,\n [_GBMTCR],\n [[() => GetBucketMetadataTableConfigurationResult$, 16]]\n];\nexport var GetBucketMetadataTableConfigurationRequest$ = [3, n0, _GBMTCRe,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketMetadataTableConfigurationResult$ = [3, n0, _GBMTCR,\n 0,\n [_MTCR, _S, _Err],\n [() => MetadataTableConfigurationResult$, 0, () => ErrorDetails$], 2\n];\nexport var GetBucketMetricsConfigurationOutput$ = [3, n0, _GBMCOe,\n 0,\n [_MCe],\n [[() => MetricsConfiguration$, 16]]\n];\nexport var GetBucketMetricsConfigurationRequest$ = [3, n0, _GBMCRet,\n 0,\n [_B, _I, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var GetBucketNotificationConfigurationRequest$ = [3, n0, _GBNCR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketOwnershipControlsOutput$ = [3, n0, _GBOCO,\n 0,\n [_OC],\n [[() => OwnershipControls$, 16]]\n];\nexport var GetBucketOwnershipControlsRequest$ = [3, n0, _GBOCR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketPolicyOutput$ = [3, n0, _GBPO,\n 0,\n [_Po],\n [[0, 16]]\n];\nexport var GetBucketPolicyRequest$ = [3, n0, _GBPR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketPolicyStatusOutput$ = [3, n0, _GBPSO,\n 0,\n [_PS],\n [[() => PolicyStatus$, 16]]\n];\nexport var GetBucketPolicyStatusRequest$ = [3, n0, _GBPSR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketReplicationOutput$ = [3, n0, _GBRO,\n 0,\n [_RCe],\n [[() => ReplicationConfiguration$, 16]]\n];\nexport var GetBucketReplicationRequest$ = [3, n0, _GBRR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketRequestPaymentOutput$ = [3, n0, _GBRPO,\n { [_xN]: _RPC },\n [_Pay],\n [0]\n];\nexport var GetBucketRequestPaymentRequest$ = [3, n0, _GBRPR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketTaggingOutput$ = [3, n0, _GBTO,\n { [_xN]: _Tag },\n [_TS],\n [[() => TagSet, 0]], 1\n];\nexport var GetBucketTaggingRequest$ = [3, n0, _GBTR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketVersioningOutput$ = [3, n0, _GBVO,\n { [_xN]: _VC },\n [_S, _MFAD],\n [0, [0, { [_xN]: _MDf }]]\n];\nexport var GetBucketVersioningRequest$ = [3, n0, _GBVR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetBucketWebsiteOutput$ = [3, n0, _GBWO,\n { [_xN]: _WC },\n [_RART, _IDn, _EDr, _RR],\n [() => RedirectAllRequestsTo$, () => IndexDocument$, () => ErrorDocument$, [() => RoutingRules, 0]]\n];\nexport var GetBucketWebsiteRequest$ = [3, n0, _GBWR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetObjectAclOutput$ = [3, n0, _GOAO,\n { [_xN]: _ACP },\n [_O, _G, _RC],\n [() => Owner$, [() => Grants, { [_xN]: _ACL }], [0, { [_hH]: _xarc }]]\n];\nexport var GetObjectAclRequest$ = [3, n0, _GOAR,\n 0,\n [_B, _K, _VI, _RP, _EBO],\n [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var GetObjectAttributesOutput$ = [3, n0, _GOAOe,\n { [_xN]: _GOARe },\n [_DM, _LM, _VI, _RC, _ETa, _C, _OP, _SC, _OS],\n [[2, { [_hH]: _xadm }], [4, { [_hH]: _LM_ }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xarc }], 0, () => Checksum$, [() => GetObjectAttributesParts$, 0], 0, 1]\n];\nexport var GetObjectAttributesParts$ = [3, n0, _GOAP,\n 0,\n [_TPC, _PNM, _NPNM, _MP, _IT, _Pa],\n [[1, { [_xN]: _PC }], 0, 0, 1, 2, [() => PartsList, { [_xF]: 1, [_xN]: _Par }]]\n];\nexport var GetObjectAttributesRequest$ = [3, n0, _GOARet,\n 0,\n [_B, _K, _OA, _VI, _MP, _PNM, _SSECA, _SSECK, _SSECKMD, _RP, _EBO],\n [[0, 1], [0, 1], [64 | 0, { [_hH]: _xaoa }], [0, { [_hQ]: _vI }], [1, { [_hH]: _xamp }], [0, { [_hH]: _xapnm }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 3\n];\nexport var GetObjectLegalHoldOutput$ = [3, n0, _GOLHO,\n 0,\n [_LH],\n [[() => ObjectLockLegalHold$, { [_hP]: 1, [_xN]: _LH }]]\n];\nexport var GetObjectLegalHoldRequest$ = [3, n0, _GOLHR,\n 0,\n [_B, _K, _VI, _RP, _EBO],\n [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var GetObjectLockConfigurationOutput$ = [3, n0, _GOLCO,\n 0,\n [_OLC],\n [[() => ObjectLockConfiguration$, 16]]\n];\nexport var GetObjectLockConfigurationRequest$ = [3, n0, _GOLCR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GetObjectOutput$ = [3, n0, _GOO,\n 0,\n [_Bo, _DM, _AR, _E, _Re, _LM, _CLo, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _MM, _VI, _CC, _CDo, _CEo, _CL, _CR, _CTo, _Ex, _ES, _WRL, _SSE, _M, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _SC, _RC, _RS, _PC, _TC, _OLM, _OLRUD, _OLLHS],\n [[() => StreamingBlob, 16], [2, { [_hH]: _xadm }], [0, { [_hH]: _ar }], [0, { [_hH]: _xae }], [0, { [_hH]: _xar }], [4, { [_hH]: _LM_ }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _ETa }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [1, { [_hH]: _xamm }], [0, { [_hH]: _xavi }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CR_ }], [0, { [_hH]: _CT_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _ES }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasse }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xarc }], [0, { [_hH]: _xars }], [1, { [_hH]: _xampc }], [1, { [_hH]: _xatc }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }]]\n];\nexport var GetObjectRequest$ = [3, n0, _GOR,\n 0,\n [_B, _K, _IM, _IMSf, _INM, _IUS, _Ra, _RCC, _RCD, _RCE, _RCL, _RCT, _RE, _VI, _SSECA, _SSECK, _SSECKMD, _RP, _PN, _EBO, _CMh],\n [[0, 1], [0, 1], [0, { [_hH]: _IM_ }], [4, { [_hH]: _IMS_ }], [0, { [_hH]: _INM_ }], [4, { [_hH]: _IUS_ }], [0, { [_hH]: _Ra }], [0, { [_hQ]: _rcc }], [0, { [_hQ]: _rcd }], [0, { [_hQ]: _rce }], [0, { [_hQ]: _rcl }], [0, { [_hQ]: _rct }], [6, { [_hQ]: _re }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [1, { [_hQ]: _pN }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xacm }]], 2\n];\nexport var GetObjectRetentionOutput$ = [3, n0, _GORO,\n 0,\n [_Ret],\n [[() => ObjectLockRetention$, { [_hP]: 1, [_xN]: _Ret }]]\n];\nexport var GetObjectRetentionRequest$ = [3, n0, _GORR,\n 0,\n [_B, _K, _VI, _RP, _EBO],\n [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var GetObjectTaggingOutput$ = [3, n0, _GOTO,\n { [_xN]: _Tag },\n [_TS, _VI],\n [[() => TagSet, 0], [0, { [_hH]: _xavi }]], 1\n];\nexport var GetObjectTaggingRequest$ = [3, n0, _GOTR,\n 0,\n [_B, _K, _VI, _EBO, _RP],\n [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 2\n];\nexport var GetObjectTorrentOutput$ = [3, n0, _GOTOe,\n 0,\n [_Bo, _RC],\n [[() => StreamingBlob, 16], [0, { [_hH]: _xarc }]]\n];\nexport var GetObjectTorrentRequest$ = [3, n0, _GOTRe,\n 0,\n [_B, _K, _RP, _EBO],\n [[0, 1], [0, 1], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var GetPublicAccessBlockOutput$ = [3, n0, _GPABO,\n 0,\n [_PABC],\n [[() => PublicAccessBlockConfiguration$, 16]]\n];\nexport var GetPublicAccessBlockRequest$ = [3, n0, _GPABR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var GlacierJobParameters$ = [3, n0, _GJP,\n 0,\n [_Ti],\n [0], 1\n];\nexport var Grant$ = [3, n0, _Gr,\n 0,\n [_Gra, _Pe],\n [[() => Grantee$, { [_xNm]: [_x, _hi] }], 0]\n];\nexport var Grantee$ = [3, n0, _Gra,\n 0,\n [_Ty, _DN, _EA, _ID, _URI],\n [[0, { [_xA]: 1, [_xN]: _xs }], 0, 0, 0, 0], 1\n];\nexport var HeadBucketOutput$ = [3, n0, _HBO,\n 0,\n [_BA, _BLT, _BLN, _BR, _APA],\n [[0, { [_hH]: _xaba }], [0, { [_hH]: _xablt }], [0, { [_hH]: _xabln }], [0, { [_hH]: _xabr }], [2, { [_hH]: _xaapa }]]\n];\nexport var HeadBucketRequest$ = [3, n0, _HBR,\n 0,\n [_B, _EBO],\n [[0, 1], [0, { [_hH]: _xaebo }]], 1\n];\nexport var HeadObjectOutput$ = [3, n0, _HOO,\n 0,\n [_DM, _AR, _E, _Re, _ASr, _LM, _CLo, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _ETa, _MM, _VI, _CC, _CDo, _CEo, _CL, _CTo, _CR, _Ex, _ES, _WRL, _SSE, _M, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _SC, _RC, _RS, _PC, _TC, _OLM, _OLRUD, _OLLHS],\n [[2, { [_hH]: _xadm }], [0, { [_hH]: _ar }], [0, { [_hH]: _xae }], [0, { [_hH]: _xar }], [0, { [_hH]: _xaas }], [4, { [_hH]: _LM_ }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [0, { [_hH]: _ETa }], [1, { [_hH]: _xamm }], [0, { [_hH]: _xavi }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CT_ }], [0, { [_hH]: _CR_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _ES }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasse }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xarc }], [0, { [_hH]: _xars }], [1, { [_hH]: _xampc }], [1, { [_hH]: _xatc }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }]]\n];\nexport var HeadObjectRequest$ = [3, n0, _HOR,\n 0,\n [_B, _K, _IM, _IMSf, _INM, _IUS, _Ra, _RCC, _RCD, _RCE, _RCL, _RCT, _RE, _VI, _SSECA, _SSECK, _SSECKMD, _RP, _PN, _EBO, _CMh],\n [[0, 1], [0, 1], [0, { [_hH]: _IM_ }], [4, { [_hH]: _IMS_ }], [0, { [_hH]: _INM_ }], [4, { [_hH]: _IUS_ }], [0, { [_hH]: _Ra }], [0, { [_hQ]: _rcc }], [0, { [_hQ]: _rcd }], [0, { [_hQ]: _rce }], [0, { [_hQ]: _rcl }], [0, { [_hQ]: _rct }], [6, { [_hQ]: _re }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [1, { [_hQ]: _pN }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xacm }]], 2\n];\nexport var IndexDocument$ = [3, n0, _IDn,\n 0,\n [_Su],\n [0], 1\n];\nexport var Initiator$ = [3, n0, _In,\n 0,\n [_ID, _DN],\n [0, 0]\n];\nexport var InputSerialization$ = [3, n0, _IS,\n 0,\n [_CSV, _CTom, _JSON, _Parq],\n [() => CSVInput$, 0, () => JSONInput$, () => ParquetInput$]\n];\nexport var IntelligentTieringAndOperator$ = [3, n0, _ITAO,\n 0,\n [_P, _T],\n [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }]]\n];\nexport var IntelligentTieringConfiguration$ = [3, n0, _ITC,\n 0,\n [_I, _S, _Tie, _F],\n [0, 0, [() => TieringList, { [_xF]: 1, [_xN]: _Tier }], [() => IntelligentTieringFilter$, 0]], 3\n];\nexport var IntelligentTieringFilter$ = [3, n0, _ITF,\n 0,\n [_P, _Ta, _An],\n [0, () => Tag$, [() => IntelligentTieringAndOperator$, 0]]\n];\nexport var InventoryConfiguration$ = [3, n0, _IC,\n 0,\n [_Des, _IE, _I, _IOV, _Sc, _F, _OF],\n [[() => InventoryDestination$, 0], 2, 0, 0, () => InventorySchedule$, () => InventoryFilter$, [() => InventoryOptionalFields, 0]], 5\n];\nexport var InventoryDestination$ = [3, n0, _IDnv,\n 0,\n [_SBD],\n [[() => InventoryS3BucketDestination$, 0]], 1\n];\nexport var InventoryEncryption$ = [3, n0, _IEn,\n 0,\n [_SSES, _SSEKMS],\n [[() => SSES3$, { [_xN]: _SS }], [() => SSEKMS$, { [_xN]: _SK }]]\n];\nexport var InventoryFilter$ = [3, n0, _IF,\n 0,\n [_P],\n [0], 1\n];\nexport var InventoryS3BucketDestination$ = [3, n0, _ISBD,\n 0,\n [_B, _Fo, _AI, _P, _En],\n [0, 0, 0, 0, [() => InventoryEncryption$, 0]], 2\n];\nexport var InventorySchedule$ = [3, n0, _ISn,\n 0,\n [_Fr],\n [0], 1\n];\nexport var InventoryTableConfiguration$ = [3, n0, _ITCn,\n 0,\n [_CSo, _EC],\n [0, () => MetadataTableEncryptionConfiguration$], 1\n];\nexport var InventoryTableConfigurationResult$ = [3, n0, _ITCR,\n 0,\n [_CSo, _TSa, _Err, _TNa, _TA],\n [0, 0, () => ErrorDetails$, 0, 0], 1\n];\nexport var InventoryTableConfigurationUpdates$ = [3, n0, _ITCU,\n 0,\n [_CSo, _EC],\n [0, () => MetadataTableEncryptionConfiguration$], 1\n];\nexport var JournalTableConfiguration$ = [3, n0, _JTC,\n 0,\n [_REe, _EC],\n [() => RecordExpiration$, () => MetadataTableEncryptionConfiguration$], 1\n];\nexport var JournalTableConfigurationResult$ = [3, n0, _JTCR,\n 0,\n [_TSa, _TNa, _REe, _Err, _TA],\n [0, 0, () => RecordExpiration$, () => ErrorDetails$, 0], 3\n];\nexport var JournalTableConfigurationUpdates$ = [3, n0, _JTCU,\n 0,\n [_REe],\n [() => RecordExpiration$], 1\n];\nexport var JSONInput$ = [3, n0, _JSONI,\n 0,\n [_Ty],\n [0]\n];\nexport var JSONOutput$ = [3, n0, _JSONO,\n 0,\n [_RD],\n [0]\n];\nexport var LambdaFunctionConfiguration$ = [3, n0, _LFC,\n 0,\n [_LFA, _Ev, _I, _F],\n [[0, { [_xN]: _CF }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => NotificationConfigurationFilter$, 0]], 2\n];\nexport var LifecycleExpiration$ = [3, n0, _LEi,\n 0,\n [_Da, _D, _EODM],\n [5, 1, 2]\n];\nexport var LifecycleRule$ = [3, n0, _LR,\n 0,\n [_S, _E, _ID, _P, _F, _Tr, _NVT, _NVE, _AIMU],\n [0, () => LifecycleExpiration$, 0, 0, [() => LifecycleRuleFilter$, 0], [() => TransitionList, { [_xF]: 1, [_xN]: _Tra }], [() => NoncurrentVersionTransitionList, { [_xF]: 1, [_xN]: _NVTo }], () => NoncurrentVersionExpiration$, () => AbortIncompleteMultipartUpload$], 1\n];\nexport var LifecycleRuleAndOperator$ = [3, n0, _LRAO,\n 0,\n [_P, _T, _OSGT, _OSLT],\n [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }], 1, 1]\n];\nexport var LifecycleRuleFilter$ = [3, n0, _LRF,\n 0,\n [_P, _Ta, _OSGT, _OSLT, _An],\n [0, () => Tag$, 1, 1, [() => LifecycleRuleAndOperator$, 0]]\n];\nexport var ListBucketAnalyticsConfigurationsOutput$ = [3, n0, _LBACO,\n { [_xN]: _LBACR },\n [_IT, _CTon, _NCT, _ACLn],\n [2, 0, 0, [() => AnalyticsConfigurationList, { [_xF]: 1, [_xN]: _ACn }]]\n];\nexport var ListBucketAnalyticsConfigurationsRequest$ = [3, n0, _LBACRi,\n 0,\n [_B, _CTon, _EBO],\n [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1\n];\nexport var ListBucketIntelligentTieringConfigurationsOutput$ = [3, n0, _LBITCO,\n 0,\n [_IT, _CTon, _NCT, _ITCL],\n [2, 0, 0, [() => IntelligentTieringConfigurationList, { [_xF]: 1, [_xN]: _ITC }]]\n];\nexport var ListBucketIntelligentTieringConfigurationsRequest$ = [3, n0, _LBITCR,\n 0,\n [_B, _CTon, _EBO],\n [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1\n];\nexport var ListBucketInventoryConfigurationsOutput$ = [3, n0, _LBICO,\n { [_xN]: _LICR },\n [_CTon, _ICL, _IT, _NCT],\n [0, [() => InventoryConfigurationList, { [_xF]: 1, [_xN]: _IC }], 2, 0]\n];\nexport var ListBucketInventoryConfigurationsRequest$ = [3, n0, _LBICR,\n 0,\n [_B, _CTon, _EBO],\n [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1\n];\nexport var ListBucketMetricsConfigurationsOutput$ = [3, n0, _LBMCO,\n { [_xN]: _LMCR },\n [_IT, _CTon, _NCT, _MCL],\n [2, 0, 0, [() => MetricsConfigurationList, { [_xF]: 1, [_xN]: _MCe }]]\n];\nexport var ListBucketMetricsConfigurationsRequest$ = [3, n0, _LBMCR,\n 0,\n [_B, _CTon, _EBO],\n [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1\n];\nexport var ListBucketsOutput$ = [3, n0, _LBO,\n { [_xN]: _LAMBR },\n [_Bu, _O, _CTon, _P],\n [[() => Buckets, 0], () => Owner$, 0, 0]\n];\nexport var ListBucketsRequest$ = [3, n0, _LBR,\n 0,\n [_MB, _CTon, _P, _BR],\n [[1, { [_hQ]: _mb }], [0, { [_hQ]: _ct }], [0, { [_hQ]: _p }], [0, { [_hQ]: _br }]]\n];\nexport var ListDirectoryBucketsOutput$ = [3, n0, _LDBO,\n { [_xN]: _LAMDBR },\n [_Bu, _CTon],\n [[() => Buckets, 0], 0]\n];\nexport var ListDirectoryBucketsRequest$ = [3, n0, _LDBR,\n 0,\n [_CTon, _MDB],\n [[0, { [_hQ]: _ct }], [1, { [_hQ]: _mdb }]]\n];\nexport var ListMultipartUploadsOutput$ = [3, n0, _LMUO,\n { [_xN]: _LMUR },\n [_B, _KM, _UIM, _NKM, _P, _Deli, _NUIM, _MUa, _IT, _U, _CPom, _ETn, _RC],\n [0, 0, 0, 0, 0, 0, 0, 1, 2, [() => MultipartUploadList, { [_xF]: 1, [_xN]: _Up }], [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH]: _xarc }]]\n];\nexport var ListMultipartUploadsRequest$ = [3, n0, _LMURi,\n 0,\n [_B, _Deli, _ETn, _KM, _MUa, _P, _UIM, _EBO, _RP],\n [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [0, { [_hQ]: _km }], [1, { [_hQ]: _mu }], [0, { [_hQ]: _p }], [0, { [_hQ]: _uim }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 1\n];\nexport var ListObjectsOutput$ = [3, n0, _LOO,\n { [_xN]: _LBRi },\n [_IT, _Ma, _NM, _Con, _N, _P, _Deli, _MK, _CPom, _ETn, _RC],\n [2, 0, 0, [() => ObjectList, { [_xF]: 1 }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH]: _xarc }]]\n];\nexport var ListObjectsRequest$ = [3, n0, _LOR,\n 0,\n [_B, _Deli, _ETn, _Ma, _MK, _P, _RP, _EBO, _OOA],\n [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [0, { [_hQ]: _m }], [1, { [_hQ]: _mk }], [0, { [_hQ]: _p }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [64 | 0, { [_hH]: _xaooa }]], 1\n];\nexport var ListObjectsV2Output$ = [3, n0, _LOVO,\n { [_xN]: _LBRi },\n [_IT, _Con, _N, _P, _Deli, _MK, _CPom, _ETn, _KC, _CTon, _NCT, _SA, _RC],\n [2, [() => ObjectList, { [_xF]: 1 }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, 1, 0, 0, 0, [0, { [_hH]: _xarc }]]\n];\nexport var ListObjectsV2Request$ = [3, n0, _LOVR,\n 0,\n [_B, _Deli, _ETn, _MK, _P, _CTon, _FO, _SA, _RP, _EBO, _OOA],\n [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [1, { [_hQ]: _mk }], [0, { [_hQ]: _p }], [0, { [_hQ]: _ct }], [2, { [_hQ]: _fo }], [0, { [_hQ]: _sa }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [64 | 0, { [_hH]: _xaooa }]], 1\n];\nexport var ListObjectVersionsOutput$ = [3, n0, _LOVOi,\n { [_xN]: _LVR },\n [_IT, _KM, _VIM, _NKM, _NVIM, _Ve, _DMe, _N, _P, _Deli, _MK, _CPom, _ETn, _RC],\n [2, 0, 0, 0, 0, [() => ObjectVersionList, { [_xF]: 1, [_xN]: _Ver }], [() => DeleteMarkers, { [_xF]: 1, [_xN]: _DM }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH]: _xarc }]]\n];\nexport var ListObjectVersionsRequest$ = [3, n0, _LOVRi,\n 0,\n [_B, _Deli, _ETn, _KM, _MK, _P, _VIM, _EBO, _RP, _OOA],\n [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [0, { [_hQ]: _km }], [1, { [_hQ]: _mk }], [0, { [_hQ]: _p }], [0, { [_hQ]: _vim }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }], [64 | 0, { [_hH]: _xaooa }]], 1\n];\nexport var ListPartsOutput$ = [3, n0, _LPO,\n { [_xN]: _LPR },\n [_ADb, _ARI, _B, _K, _UI, _PNM, _NPNM, _MP, _IT, _Pa, _In, _O, _SC, _RC, _CA, _CT],\n [[4, { [_hH]: _xaad }], [0, { [_hH]: _xaari }], 0, 0, 0, 0, 0, 1, 2, [() => Parts, { [_xF]: 1, [_xN]: _Par }], () => Initiator$, () => Owner$, 0, [0, { [_hH]: _xarc }], 0, 0]\n];\nexport var ListPartsRequest$ = [3, n0, _LPRi,\n 0,\n [_B, _K, _UI, _MP, _PNM, _RP, _EBO, _SSECA, _SSECK, _SSECKMD],\n [[0, 1], [0, 1], [0, { [_hQ]: _uI }], [1, { [_hQ]: _mp }], [0, { [_hQ]: _pnm }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }]], 3\n];\nexport var LocationInfo$ = [3, n0, _LI,\n 0,\n [_Ty, _N],\n [0, 0]\n];\nexport var LoggingEnabled$ = [3, n0, _LE,\n 0,\n [_TB, _TP, _TG, _TOKF],\n [0, 0, [() => TargetGrants, 0], [() => TargetObjectKeyFormat$, 0]], 2\n];\nexport var MetadataConfiguration$ = [3, n0, _MC,\n 0,\n [_JTC, _ITCn],\n [() => JournalTableConfiguration$, () => InventoryTableConfiguration$], 1\n];\nexport var MetadataConfigurationResult$ = [3, n0, _MCR,\n 0,\n [_DRes, _JTCR, _ITCR],\n [() => DestinationResult$, () => JournalTableConfigurationResult$, () => InventoryTableConfigurationResult$], 1\n];\nexport var MetadataEntry$ = [3, n0, _ME,\n 0,\n [_N, _V],\n [0, 0]\n];\nexport var MetadataTableConfiguration$ = [3, n0, _MTC,\n 0,\n [_STD],\n [() => S3TablesDestination$], 1\n];\nexport var MetadataTableConfigurationResult$ = [3, n0, _MTCR,\n 0,\n [_STDR],\n [() => S3TablesDestinationResult$], 1\n];\nexport var MetadataTableEncryptionConfiguration$ = [3, n0, _MTEC,\n 0,\n [_SAs, _KKA],\n [0, 0], 1\n];\nexport var Metrics$ = [3, n0, _Me,\n 0,\n [_S, _ETv],\n [0, () => ReplicationTimeValue$], 1\n];\nexport var MetricsAndOperator$ = [3, n0, _MAO,\n 0,\n [_P, _T, _APAc],\n [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }], 0]\n];\nexport var MetricsConfiguration$ = [3, n0, _MCe,\n 0,\n [_I, _F],\n [0, [() => MetricsFilter$, 0]], 1\n];\nexport var MultipartUpload$ = [3, n0, _MU,\n 0,\n [_UI, _K, _Ini, _SC, _O, _In, _CA, _CT],\n [0, 0, 4, 0, () => Owner$, () => Initiator$, 0, 0]\n];\nexport var NoncurrentVersionExpiration$ = [3, n0, _NVE,\n 0,\n [_ND, _NNV],\n [1, 1]\n];\nexport var NoncurrentVersionTransition$ = [3, n0, _NVTo,\n 0,\n [_ND, _SC, _NNV],\n [1, 0, 1]\n];\nexport var NotificationConfiguration$ = [3, n0, _NC,\n 0,\n [_TCo, _QCu, _LFCa, _EBC],\n [[() => TopicConfigurationList, { [_xF]: 1, [_xN]: _TCop }], [() => QueueConfigurationList, { [_xF]: 1, [_xN]: _QCue }], [() => LambdaFunctionConfigurationList, { [_xF]: 1, [_xN]: _CFC }], () => EventBridgeConfiguration$]\n];\nexport var NotificationConfigurationFilter$ = [3, n0, _NCF,\n 0,\n [_K],\n [[() => S3KeyFilter$, { [_xN]: _SKe }]]\n];\nexport var _Object$ = [3, n0, _Obj,\n 0,\n [_K, _LM, _ETa, _CA, _CT, _Si, _SC, _O, _RSe],\n [0, 4, 0, [64 | 0, { [_xF]: 1 }], 0, 1, 0, () => Owner$, () => RestoreStatus$]\n];\nexport var ObjectIdentifier$ = [3, n0, _OI,\n 0,\n [_K, _VI, _ETa, _LMT, _Si],\n [0, 0, 0, 6, 1], 1\n];\nexport var ObjectLockConfiguration$ = [3, n0, _OLC,\n 0,\n [_OLE, _Ru],\n [0, () => ObjectLockRule$]\n];\nexport var ObjectLockLegalHold$ = [3, n0, _OLLH,\n 0,\n [_S],\n [0]\n];\nexport var ObjectLockRetention$ = [3, n0, _OLR,\n 0,\n [_Mo, _RUD],\n [0, 5]\n];\nexport var ObjectLockRule$ = [3, n0, _OLRb,\n 0,\n [_DRe],\n [() => DefaultRetention$]\n];\nexport var ObjectPart$ = [3, n0, _OPb,\n 0,\n [_PN, _Si, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh],\n [1, 1, 0, 0, 0, 0, 0]\n];\nexport var ObjectVersion$ = [3, n0, _OV,\n 0,\n [_ETa, _CA, _CT, _Si, _SC, _K, _VI, _IL, _LM, _O, _RSe],\n [0, [64 | 0, { [_xF]: 1 }], 0, 1, 0, 0, 0, 2, 4, () => Owner$, () => RestoreStatus$]\n];\nexport var OutputLocation$ = [3, n0, _OL,\n 0,\n [_S_],\n [[() => S3Location$, 0]]\n];\nexport var OutputSerialization$ = [3, n0, _OSu,\n 0,\n [_CSV, _JSON],\n [() => CSVOutput$, () => JSONOutput$]\n];\nexport var Owner$ = [3, n0, _O,\n 0,\n [_DN, _ID],\n [0, 0]\n];\nexport var OwnershipControls$ = [3, n0, _OC,\n 0,\n [_R],\n [[() => OwnershipControlsRules, { [_xF]: 1, [_xN]: _Ru }]], 1\n];\nexport var OwnershipControlsRule$ = [3, n0, _OCR,\n 0,\n [_OO],\n [0], 1\n];\nexport var ParquetInput$ = [3, n0, _PI,\n 0,\n [],\n []\n];\nexport var Part$ = [3, n0, _Par,\n 0,\n [_PN, _LM, _ETa, _Si, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh],\n [1, 4, 0, 1, 0, 0, 0, 0, 0]\n];\nexport var PartitionedPrefix$ = [3, n0, _PP,\n { [_xN]: _PP },\n [_PDS],\n [0]\n];\nexport var PolicyStatus$ = [3, n0, _PS,\n 0,\n [_IP],\n [[2, { [_xN]: _IP }]]\n];\nexport var Progress$ = [3, n0, _Pr,\n 0,\n [_BS, _BP, _BRy],\n [1, 1, 1]\n];\nexport var ProgressEvent$ = [3, n0, _PE,\n 0,\n [_Det],\n [[() => Progress$, { [_eP]: 1 }]]\n];\nexport var PublicAccessBlockConfiguration$ = [3, n0, _PABC,\n 0,\n [_BPA, _IPA, _BPP, _RPB],\n [[2, { [_xN]: _BPA }], [2, { [_xN]: _IPA }], [2, { [_xN]: _BPP }], [2, { [_xN]: _RPB }]]\n];\nexport var PutBucketAbacRequest$ = [3, n0, _PBAR,\n 0,\n [_B, _AS, _CMD, _CA, _EBO],\n [[0, 1], [() => AbacStatus$, { [_hP]: 1, [_xN]: _AS }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutBucketAccelerateConfigurationRequest$ = [3, n0, _PBACR,\n 0,\n [_B, _AC, _EBO, _CA],\n [[0, 1], [() => AccelerateConfiguration$, { [_hP]: 1, [_xN]: _AC }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasca }]], 2\n];\nexport var PutBucketAclRequest$ = [3, n0, _PBARu,\n 0,\n [_B, _ACL_, _ACP, _CMD, _CA, _GFC, _GR, _GRACP, _GW, _GWACP, _EBO],\n [[0, 1], [0, { [_hH]: _xaa }], [() => AccessControlPolicy$, { [_hP]: 1, [_xN]: _ACP }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagw }], [0, { [_hH]: _xagwa }], [0, { [_hH]: _xaebo }]], 1\n];\nexport var PutBucketAnalyticsConfigurationRequest$ = [3, n0, _PBACRu,\n 0,\n [_B, _I, _ACn, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [() => AnalyticsConfiguration$, { [_hP]: 1, [_xN]: _ACn }], [0, { [_hH]: _xaebo }]], 3\n];\nexport var PutBucketCorsRequest$ = [3, n0, _PBCR,\n 0,\n [_B, _CORSC, _CMD, _CA, _EBO],\n [[0, 1], [() => CORSConfiguration$, { [_hP]: 1, [_xN]: _CORSC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutBucketEncryptionRequest$ = [3, n0, _PBER,\n 0,\n [_B, _SSEC, _CMD, _CA, _EBO],\n [[0, 1], [() => ServerSideEncryptionConfiguration$, { [_hP]: 1, [_xN]: _SSEC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutBucketIntelligentTieringConfigurationRequest$ = [3, n0, _PBITCR,\n 0,\n [_B, _I, _ITC, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [() => IntelligentTieringConfiguration$, { [_hP]: 1, [_xN]: _ITC }], [0, { [_hH]: _xaebo }]], 3\n];\nexport var PutBucketInventoryConfigurationRequest$ = [3, n0, _PBICR,\n 0,\n [_B, _I, _IC, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [() => InventoryConfiguration$, { [_hP]: 1, [_xN]: _IC }], [0, { [_hH]: _xaebo }]], 3\n];\nexport var PutBucketLifecycleConfigurationOutput$ = [3, n0, _PBLCO,\n 0,\n [_TDMOS],\n [[0, { [_hH]: _xatdmos }]]\n];\nexport var PutBucketLifecycleConfigurationRequest$ = [3, n0, _PBLCR,\n 0,\n [_B, _CA, _LCi, _EBO, _TDMOS],\n [[0, 1], [0, { [_hH]: _xasca }], [() => BucketLifecycleConfiguration$, { [_hP]: 1, [_xN]: _LCi }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xatdmos }]], 1\n];\nexport var PutBucketLoggingRequest$ = [3, n0, _PBLR,\n 0,\n [_B, _BLS, _CMD, _CA, _EBO],\n [[0, 1], [() => BucketLoggingStatus$, { [_hP]: 1, [_xN]: _BLS }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutBucketMetricsConfigurationRequest$ = [3, n0, _PBMCR,\n 0,\n [_B, _I, _MCe, _EBO],\n [[0, 1], [0, { [_hQ]: _i }], [() => MetricsConfiguration$, { [_hP]: 1, [_xN]: _MCe }], [0, { [_hH]: _xaebo }]], 3\n];\nexport var PutBucketNotificationConfigurationRequest$ = [3, n0, _PBNCR,\n 0,\n [_B, _NC, _EBO, _SDV],\n [[0, 1], [() => NotificationConfiguration$, { [_hP]: 1, [_xN]: _NC }], [0, { [_hH]: _xaebo }], [2, { [_hH]: _xasdv }]], 2\n];\nexport var PutBucketOwnershipControlsRequest$ = [3, n0, _PBOCR,\n 0,\n [_B, _OC, _CMD, _EBO, _CA],\n [[0, 1], [() => OwnershipControls$, { [_hP]: 1, [_xN]: _OC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasca }]], 2\n];\nexport var PutBucketPolicyRequest$ = [3, n0, _PBPR,\n 0,\n [_B, _Po, _CMD, _CA, _CRSBA, _EBO],\n [[0, 1], [0, 16], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [2, { [_hH]: _xacrsba }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutBucketReplicationRequest$ = [3, n0, _PBRR,\n 0,\n [_B, _RCe, _CMD, _CA, _To, _EBO],\n [[0, 1], [() => ReplicationConfiguration$, { [_hP]: 1, [_xN]: _RCe }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xabolt }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutBucketRequestPaymentRequest$ = [3, n0, _PBRPR,\n 0,\n [_B, _RPC, _CMD, _CA, _EBO],\n [[0, 1], [() => RequestPaymentConfiguration$, { [_hP]: 1, [_xN]: _RPC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutBucketTaggingRequest$ = [3, n0, _PBTR,\n 0,\n [_B, _Tag, _CMD, _CA, _EBO],\n [[0, 1], [() => Tagging$, { [_hP]: 1, [_xN]: _Tag }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutBucketVersioningRequest$ = [3, n0, _PBVR,\n 0,\n [_B, _VC, _CMD, _CA, _MFA, _EBO],\n [[0, 1], [() => VersioningConfiguration$, { [_hP]: 1, [_xN]: _VC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xam_ }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutBucketWebsiteRequest$ = [3, n0, _PBWR,\n 0,\n [_B, _WC, _CMD, _CA, _EBO],\n [[0, 1], [() => WebsiteConfiguration$, { [_hP]: 1, [_xN]: _WC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutObjectAclOutput$ = [3, n0, _POAO,\n 0,\n [_RC],\n [[0, { [_hH]: _xarc }]]\n];\nexport var PutObjectAclRequest$ = [3, n0, _POAR,\n 0,\n [_B, _K, _ACL_, _ACP, _CMD, _CA, _GFC, _GR, _GRACP, _GW, _GWACP, _RP, _VI, _EBO],\n [[0, 1], [0, 1], [0, { [_hH]: _xaa }], [() => AccessControlPolicy$, { [_hP]: 1, [_xN]: _ACP }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagw }], [0, { [_hH]: _xagwa }], [0, { [_hH]: _xarp }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutObjectLegalHoldOutput$ = [3, n0, _POLHO,\n 0,\n [_RC],\n [[0, { [_hH]: _xarc }]]\n];\nexport var PutObjectLegalHoldRequest$ = [3, n0, _POLHR,\n 0,\n [_B, _K, _LH, _RP, _VI, _CMD, _CA, _EBO],\n [[0, 1], [0, 1], [() => ObjectLockLegalHold$, { [_hP]: 1, [_xN]: _LH }], [0, { [_hH]: _xarp }], [0, { [_hQ]: _vI }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutObjectLockConfigurationOutput$ = [3, n0, _POLCO,\n 0,\n [_RC],\n [[0, { [_hH]: _xarc }]]\n];\nexport var PutObjectLockConfigurationRequest$ = [3, n0, _POLCR,\n 0,\n [_B, _OLC, _RP, _To, _CMD, _CA, _EBO],\n [[0, 1], [() => ObjectLockConfiguration$, { [_hP]: 1, [_xN]: _OLC }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xabolt }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 1\n];\nexport var PutObjectOutput$ = [3, n0, _POO,\n 0,\n [_E, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _SSE, _VI, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _Si, _RC],\n [[0, { [_hH]: _xae }], [0, { [_hH]: _ETa }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [1, { [_hH]: _xaos }], [0, { [_hH]: _xarc }]]\n];\nexport var PutObjectRequest$ = [3, n0, _POR,\n 0,\n [_B, _K, _ACL_, _Bo, _CC, _CDo, _CEo, _CL, _CLo, _CMD, _CTo, _CA, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _Ex, _IM, _INM, _GFC, _GR, _GRACP, _GWACP, _WOB, _M, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _EBO],\n [[0, 1], [0, 1], [0, { [_hH]: _xaa }], [() => StreamingBlob, 16], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _CM }], [0, { [_hH]: _CT_ }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagwa }], [1, { [_hH]: _xawob }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xat }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutObjectRetentionOutput$ = [3, n0, _PORO,\n 0,\n [_RC],\n [[0, { [_hH]: _xarc }]]\n];\nexport var PutObjectRetentionRequest$ = [3, n0, _PORR,\n 0,\n [_B, _K, _Ret, _RP, _VI, _BGR, _CMD, _CA, _EBO],\n [[0, 1], [0, 1], [() => ObjectLockRetention$, { [_hP]: 1, [_xN]: _Ret }], [0, { [_hH]: _xarp }], [0, { [_hQ]: _vI }], [2, { [_hH]: _xabgr }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var PutObjectTaggingOutput$ = [3, n0, _POTO,\n 0,\n [_VI],\n [[0, { [_hH]: _xavi }]]\n];\nexport var PutObjectTaggingRequest$ = [3, n0, _POTR,\n 0,\n [_B, _K, _Tag, _VI, _CMD, _CA, _EBO, _RP],\n [[0, 1], [0, 1], [() => Tagging$, { [_hP]: 1, [_xN]: _Tag }], [0, { [_hQ]: _vI }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 3\n];\nexport var PutPublicAccessBlockRequest$ = [3, n0, _PPABR,\n 0,\n [_B, _PABC, _CMD, _CA, _EBO],\n [[0, 1], [() => PublicAccessBlockConfiguration$, { [_hP]: 1, [_xN]: _PABC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var QueueConfiguration$ = [3, n0, _QCue,\n 0,\n [_QA, _Ev, _I, _F],\n [[0, { [_xN]: _Qu }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => NotificationConfigurationFilter$, 0]], 2\n];\nexport var RecordExpiration$ = [3, n0, _REe,\n 0,\n [_E, _D],\n [0, 1], 1\n];\nexport var RecordsEvent$ = [3, n0, _REec,\n 0,\n [_Payl],\n [[21, { [_eP]: 1 }]]\n];\nexport var Redirect$ = [3, n0, _Red,\n 0,\n [_HN, _HRC, _Pro, _RKPW, _RKW],\n [0, 0, 0, 0, 0]\n];\nexport var RedirectAllRequestsTo$ = [3, n0, _RART,\n 0,\n [_HN, _Pro],\n [0, 0], 1\n];\nexport var RenameObjectOutput$ = [3, n0, _ROO,\n 0,\n [],\n []\n];\nexport var RenameObjectRequest$ = [3, n0, _ROR,\n 0,\n [_B, _K, _RSen, _DIM, _DINM, _DIMS, _DIUS, _SIM, _SINM, _SIMS, _SIUS, _CTl],\n [[0, 1], [0, 1], [0, { [_hH]: _xars_ }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [4, { [_hH]: _IMS_ }], [4, { [_hH]: _IUS_ }], [0, { [_hH]: _xarsim }], [0, { [_hH]: _xarsinm }], [6, { [_hH]: _xarsims }], [6, { [_hH]: _xarsius }], [0, { [_hH]: _xact_, [_iT]: 1 }]], 3\n];\nexport var ReplicaModifications$ = [3, n0, _RM,\n 0,\n [_S],\n [0], 1\n];\nexport var ReplicationConfiguration$ = [3, n0, _RCe,\n 0,\n [_Ro, _R],\n [0, [() => ReplicationRules, { [_xF]: 1, [_xN]: _Ru }]], 2\n];\nexport var ReplicationRule$ = [3, n0, _RRe,\n 0,\n [_S, _Des, _ID, _Pri, _P, _F, _SSC, _EOR, _DMR],\n [0, () => Destination$, 0, 1, 0, [() => ReplicationRuleFilter$, 0], () => SourceSelectionCriteria$, () => ExistingObjectReplication$, () => DeleteMarkerReplication$], 2\n];\nexport var ReplicationRuleAndOperator$ = [3, n0, _RRAO,\n 0,\n [_P, _T],\n [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }]]\n];\nexport var ReplicationRuleFilter$ = [3, n0, _RRF,\n 0,\n [_P, _Ta, _An],\n [0, () => Tag$, [() => ReplicationRuleAndOperator$, 0]]\n];\nexport var ReplicationTime$ = [3, n0, _RT,\n 0,\n [_S, _Tim],\n [0, () => ReplicationTimeValue$], 2\n];\nexport var ReplicationTimeValue$ = [3, n0, _RTV,\n 0,\n [_Mi],\n [1]\n];\nexport var RequestPaymentConfiguration$ = [3, n0, _RPC,\n 0,\n [_Pay],\n [0], 1\n];\nexport var RequestProgress$ = [3, n0, _RPe,\n 0,\n [_Ena],\n [2]\n];\nexport var RestoreObjectOutput$ = [3, n0, _ROOe,\n 0,\n [_RC, _ROP],\n [[0, { [_hH]: _xarc }], [0, { [_hH]: _xarop }]]\n];\nexport var RestoreObjectRequest$ = [3, n0, _RORe,\n 0,\n [_B, _K, _VI, _RRes, _RP, _CA, _EBO],\n [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [() => RestoreRequest$, { [_hP]: 1, [_xN]: _RRes }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var RestoreRequest$ = [3, n0, _RRes,\n 0,\n [_D, _GJP, _Ty, _Ti, _Desc, _SP, _OL],\n [1, () => GlacierJobParameters$, 0, 0, 0, () => SelectParameters$, [() => OutputLocation$, 0]]\n];\nexport var RestoreStatus$ = [3, n0, _RSe,\n 0,\n [_IRIP, _RED],\n [2, 4]\n];\nexport var RoutingRule$ = [3, n0, _RRo,\n 0,\n [_Red, _Co],\n [() => Redirect$, () => Condition$], 1\n];\nexport var S3KeyFilter$ = [3, n0, _SKF,\n 0,\n [_FRi],\n [[() => FilterRuleList, { [_xF]: 1, [_xN]: _FR }]]\n];\nexport var S3Location$ = [3, n0, _SL,\n 0,\n [_BNu, _P, _En, _CACL, _ACL, _Tag, _UM, _SC],\n [0, 0, [() => Encryption$, 0], 0, [() => Grants, 0], [() => Tagging$, 0], [() => UserMetadata, 0], 0], 2\n];\nexport var S3TablesDestination$ = [3, n0, _STD,\n 0,\n [_TBA, _TNa],\n [0, 0], 2\n];\nexport var S3TablesDestinationResult$ = [3, n0, _STDR,\n 0,\n [_TBA, _TNa, _TA, _TN],\n [0, 0, 0, 0], 4\n];\nexport var ScanRange$ = [3, n0, _SR,\n 0,\n [_St, _End],\n [1, 1]\n];\nexport var SelectObjectContentOutput$ = [3, n0, _SOCO,\n 0,\n [_Payl],\n [[() => SelectObjectContentEventStream$, 16]]\n];\nexport var SelectObjectContentRequest$ = [3, n0, _SOCR,\n 0,\n [_B, _K, _Exp, _ETx, _IS, _OSu, _SSECA, _SSECK, _SSECKMD, _RPe, _SR, _EBO],\n [[0, 1], [0, 1], 0, 0, () => InputSerialization$, () => OutputSerialization$, [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], () => RequestProgress$, () => ScanRange$, [0, { [_hH]: _xaebo }]], 6\n];\nexport var SelectParameters$ = [3, n0, _SP,\n 0,\n [_IS, _ETx, _Exp, _OSu],\n [() => InputSerialization$, 0, 0, () => OutputSerialization$], 4\n];\nexport var ServerSideEncryptionByDefault$ = [3, n0, _SSEBD,\n 0,\n [_SSEA, _KMSMKID],\n [0, [() => SSEKMSKeyId, 0]], 1\n];\nexport var ServerSideEncryptionConfiguration$ = [3, n0, _SSEC,\n 0,\n [_R],\n [[() => ServerSideEncryptionRules, { [_xF]: 1, [_xN]: _Ru }]], 1\n];\nexport var ServerSideEncryptionRule$ = [3, n0, _SSER,\n 0,\n [_ASSEBD, _BKE, _BET],\n [[() => ServerSideEncryptionByDefault$, 0], 2, [() => BlockedEncryptionTypes$, 0]]\n];\nexport var SessionCredentials$ = [3, n0, _SCe,\n 0,\n [_AKI, _SAK, _ST, _E],\n [[0, { [_xN]: _AKI }], [() => SessionCredentialValue, { [_xN]: _SAK }], [() => SessionCredentialValue, { [_xN]: _ST }], [4, { [_xN]: _E }]], 4\n];\nexport var SimplePrefix$ = [3, n0, _SPi,\n { [_xN]: _SPi },\n [],\n []\n];\nexport var SourceSelectionCriteria$ = [3, n0, _SSC,\n 0,\n [_SKEO, _RM],\n [() => SseKmsEncryptedObjects$, () => ReplicaModifications$]\n];\nexport var SSEKMS$ = [3, n0, _SSEKMS,\n { [_xN]: _SK },\n [_KI],\n [[() => SSEKMSKeyId, 0]], 1\n];\nexport var SseKmsEncryptedObjects$ = [3, n0, _SKEO,\n 0,\n [_S],\n [0], 1\n];\nexport var SSEKMSEncryption$ = [3, n0, _SSEKMSE,\n { [_xN]: _SK },\n [_KMSKA, _BKE],\n [[() => NonEmptyKmsKeyArnString, 0], 2], 1\n];\nexport var SSES3$ = [3, n0, _SSES,\n { [_xN]: _SS },\n [],\n []\n];\nexport var Stats$ = [3, n0, _Sta,\n 0,\n [_BS, _BP, _BRy],\n [1, 1, 1]\n];\nexport var StatsEvent$ = [3, n0, _SE,\n 0,\n [_Det],\n [[() => Stats$, { [_eP]: 1 }]]\n];\nexport var StorageClassAnalysis$ = [3, n0, _SCA,\n 0,\n [_DE],\n [() => StorageClassAnalysisDataExport$]\n];\nexport var StorageClassAnalysisDataExport$ = [3, n0, _SCADE,\n 0,\n [_OSV, _Des],\n [0, () => AnalyticsExportDestination$], 2\n];\nexport var Tag$ = [3, n0, _Ta,\n 0,\n [_K, _V],\n [0, 0], 2\n];\nexport var Tagging$ = [3, n0, _Tag,\n 0,\n [_TS],\n [[() => TagSet, 0]], 1\n];\nexport var TargetGrant$ = [3, n0, _TGa,\n 0,\n [_Gra, _Pe],\n [[() => Grantee$, { [_xNm]: [_x, _hi] }], 0]\n];\nexport var TargetObjectKeyFormat$ = [3, n0, _TOKF,\n 0,\n [_SPi, _PP],\n [[() => SimplePrefix$, { [_xN]: _SPi }], [() => PartitionedPrefix$, { [_xN]: _PP }]]\n];\nexport var Tiering$ = [3, n0, _Tier,\n 0,\n [_D, _AT],\n [1, 0], 2\n];\nexport var TopicConfiguration$ = [3, n0, _TCop,\n 0,\n [_TAo, _Ev, _I, _F],\n [[0, { [_xN]: _Top }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => NotificationConfigurationFilter$, 0]], 2\n];\nexport var Transition$ = [3, n0, _Tra,\n 0,\n [_Da, _D, _SC],\n [5, 1, 0]\n];\nexport var UpdateBucketMetadataInventoryTableConfigurationRequest$ = [3, n0, _UBMITCR,\n 0,\n [_B, _ITCn, _CMD, _CA, _EBO],\n [[0, 1], [() => InventoryTableConfigurationUpdates$, { [_hP]: 1, [_xN]: _ITCn }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var UpdateBucketMetadataJournalTableConfigurationRequest$ = [3, n0, _UBMJTCR,\n 0,\n [_B, _JTC, _CMD, _CA, _EBO],\n [[0, 1], [() => JournalTableConfigurationUpdates$, { [_hP]: 1, [_xN]: _JTC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2\n];\nexport var UpdateObjectEncryptionRequest$ = [3, n0, _UOER,\n 0,\n [_B, _K, _OE, _VI, _RP, _EBO, _CMD, _CA],\n [[0, 1], [0, 1], [() => ObjectEncryption$, 16], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }]], 3\n];\nexport var UpdateObjectEncryptionResponse$ = [3, n0, _UOERp,\n 0,\n [_RC],\n [[0, { [_hH]: _xarc }]]\n];\nexport var UploadPartCopyOutput$ = [3, n0, _UPCO,\n 0,\n [_CSVI, _CPR, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _RC],\n [[0, { [_hH]: _xacsvi }], [() => CopyPartResult$, 16], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]]\n];\nexport var UploadPartCopyRequest$ = [3, n0, _UPCR,\n 0,\n [_B, _CS, _K, _PN, _UI, _CSIM, _CSIMS, _CSINM, _CSIUS, _CSRo, _SSECA, _SSECK, _SSECKMD, _CSSSECA, _CSSSECK, _CSSSECKMD, _RP, _EBO, _ESBO],\n [[0, 1], [0, { [_hH]: _xacs__ }], [0, 1], [1, { [_hQ]: _pN }], [0, { [_hQ]: _uI }], [0, { [_hH]: _xacsim }], [4, { [_hH]: _xacsims }], [0, { [_hH]: _xacsinm }], [4, { [_hH]: _xacsius }], [0, { [_hH]: _xacsr }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xacssseca }], [() => CopySourceSSECustomerKey, { [_hH]: _xacssseck }], [0, { [_hH]: _xacssseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasebo }]], 5\n];\nexport var UploadPartOutput$ = [3, n0, _UPO,\n 0,\n [_SSE, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _RC],\n [[0, { [_hH]: _xasse }], [0, { [_hH]: _ETa }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]]\n];\nexport var UploadPartRequest$ = [3, n0, _UPR,\n 0,\n [_B, _K, _PN, _UI, _Bo, _CLo, _CMD, _CA, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _SSECA, _SSECK, _SSECKMD, _RP, _EBO],\n [[0, 1], [0, 1], [1, { [_hQ]: _pN }], [0, { [_hQ]: _uI }], [() => StreamingBlob, 16], [1, { [_hH]: _CL__ }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 4\n];\nexport var VersioningConfiguration$ = [3, n0, _VC,\n 0,\n [_MFAD, _S],\n [[0, { [_xN]: _MDf }], 0]\n];\nexport var WebsiteConfiguration$ = [3, n0, _WC,\n 0,\n [_EDr, _IDn, _RART, _RR],\n [() => ErrorDocument$, () => IndexDocument$, () => RedirectAllRequestsTo$, [() => RoutingRules, 0]]\n];\nexport var WriteGetObjectResponseRequest$ = [3, n0, _WGORR,\n 0,\n [_RReq, _RTe, _Bo, _SCt, _ECr, _EM, _AR, _CC, _CDo, _CEo, _CL, _CLo, _CR, _CTo, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _DM, _ETa, _Ex, _E, _LM, _MM, _M, _OLM, _OLLHS, _OLRUD, _PC, _RS, _RC, _Re, _SSE, _SSECA, _SSEKMSKI, _SSECKMD, _SC, _TC, _VI, _BKE],\n [[0, { [_hL]: 1, [_hH]: _xarr }], [0, { [_hH]: _xart }], [() => StreamingBlob, 16], [1, { [_hH]: _xafs }], [0, { [_hH]: _xafec }], [0, { [_hH]: _xafem }], [0, { [_hH]: _xafhar }], [0, { [_hH]: _xafhCC }], [0, { [_hH]: _xafhCD }], [0, { [_hH]: _xafhCE }], [0, { [_hH]: _xafhCL }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _xafhCR }], [0, { [_hH]: _xafhCT }], [0, { [_hH]: _xafhxacc }], [0, { [_hH]: _xafhxacc_ }], [0, { [_hH]: _xafhxacc__ }], [0, { [_hH]: _xafhxacs }], [0, { [_hH]: _xafhxacs_ }], [2, { [_hH]: _xafhxadm }], [0, { [_hH]: _xafhE }], [4, { [_hH]: _xafhE_ }], [0, { [_hH]: _xafhxae }], [4, { [_hH]: _xafhLM }], [1, { [_hH]: _xafhxamm }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xafhxaolm }], [0, { [_hH]: _xafhxaollh }], [5, { [_hH]: _xafhxaolrud }], [1, { [_hH]: _xafhxampc }], [0, { [_hH]: _xafhxars }], [0, { [_hH]: _xafhxarc }], [0, { [_hH]: _xafhxar }], [0, { [_hH]: _xafhxasse }], [0, { [_hH]: _xafhxasseca }], [() => SSEKMSKeyId, { [_hH]: _xafhxasseakki }], [0, { [_hH]: _xafhxasseckM }], [0, { [_hH]: _xafhxasc }], [1, { [_hH]: _xafhxatc }], [0, { [_hH]: _xafhxavi }], [2, { [_hH]: _xafhxassebke }]], 2\n];\nvar __Unit = \"unit\";\nvar AllowedHeaders = 64 | 0;\nvar AllowedMethods = 64 | 0;\nvar AllowedOrigins = 64 | 0;\nvar AnalyticsConfigurationList = [1, n0, _ACLn,\n 0, [() => AnalyticsConfiguration$,\n 0]\n];\nvar Buckets = [1, n0, _Bu,\n 0, [() => Bucket$,\n { [_xN]: _B }]\n];\nvar ChecksumAlgorithmList = 64 | 0;\nvar CommonPrefixList = [1, n0, _CPL,\n 0, () => CommonPrefix$\n];\nvar CompletedPartList = [1, n0, _CPLo,\n 0, () => CompletedPart$\n];\nvar CORSRules = [1, n0, _CORSR,\n 0, [() => CORSRule$,\n 0]\n];\nvar DeletedObjects = [1, n0, _DOe,\n 0, () => DeletedObject$\n];\nvar DeleteMarkers = [1, n0, _DMe,\n 0, () => DeleteMarkerEntry$\n];\nvar EncryptionTypeList = [1, n0, _ETL,\n 0, [0,\n { [_xN]: _ET }]\n];\nvar Errors = [1, n0, _Er,\n 0, () => _Error$\n];\nvar EventList = 64 | 0;\nvar ExposeHeaders = 64 | 0;\nvar FilterRuleList = [1, n0, _FRL,\n 0, () => FilterRule$\n];\nvar Grants = [1, n0, _G,\n 0, [() => Grant$,\n { [_xN]: _Gr }]\n];\nvar IntelligentTieringConfigurationList = [1, n0, _ITCL,\n 0, [() => IntelligentTieringConfiguration$,\n 0]\n];\nvar InventoryConfigurationList = [1, n0, _ICL,\n 0, [() => InventoryConfiguration$,\n 0]\n];\nvar InventoryOptionalFields = [1, n0, _IOF,\n 0, [0,\n { [_xN]: _Fi }]\n];\nvar LambdaFunctionConfigurationList = [1, n0, _LFCL,\n 0, [() => LambdaFunctionConfiguration$,\n 0]\n];\nvar LifecycleRules = [1, n0, _LRi,\n 0, [() => LifecycleRule$,\n 0]\n];\nvar MetricsConfigurationList = [1, n0, _MCL,\n 0, [() => MetricsConfiguration$,\n 0]\n];\nvar MultipartUploadList = [1, n0, _MUL,\n 0, () => MultipartUpload$\n];\nvar NoncurrentVersionTransitionList = [1, n0, _NVTL,\n 0, () => NoncurrentVersionTransition$\n];\nvar ObjectAttributesList = 64 | 0;\nvar ObjectIdentifierList = [1, n0, _OIL,\n 0, () => ObjectIdentifier$\n];\nvar ObjectList = [1, n0, _OLb,\n 0, [() => _Object$,\n 0]\n];\nvar ObjectVersionList = [1, n0, _OVL,\n 0, [() => ObjectVersion$,\n 0]\n];\nvar OptionalObjectAttributesList = 64 | 0;\nvar OwnershipControlsRules = [1, n0, _OCRw,\n 0, () => OwnershipControlsRule$\n];\nvar Parts = [1, n0, _Pa,\n 0, () => Part$\n];\nvar PartsList = [1, n0, _PL,\n 0, () => ObjectPart$\n];\nvar QueueConfigurationList = [1, n0, _QCL,\n 0, [() => QueueConfiguration$,\n 0]\n];\nvar ReplicationRules = [1, n0, _RRep,\n 0, [() => ReplicationRule$,\n 0]\n];\nvar RoutingRules = [1, n0, _RR,\n 0, [() => RoutingRule$,\n { [_xN]: _RRo }]\n];\nvar ServerSideEncryptionRules = [1, n0, _SSERe,\n 0, [() => ServerSideEncryptionRule$,\n 0]\n];\nvar TagSet = [1, n0, _TS,\n 0, [() => Tag$,\n { [_xN]: _Ta }]\n];\nvar TargetGrants = [1, n0, _TG,\n 0, [() => TargetGrant$,\n { [_xN]: _Gr }]\n];\nvar TieringList = [1, n0, _TL,\n 0, () => Tiering$\n];\nvar TopicConfigurationList = [1, n0, _TCL,\n 0, [() => TopicConfiguration$,\n 0]\n];\nvar TransitionList = [1, n0, _TLr,\n 0, () => Transition$\n];\nvar UserMetadata = [1, n0, _UM,\n 0, [() => MetadataEntry$,\n { [_xN]: _ME }]\n];\nvar Metadata = 128 | 0;\nexport var AnalyticsFilter$ = [4, n0, _AF,\n 0,\n [_P, _Ta, _An],\n [0, () => Tag$, [() => AnalyticsAndOperator$, 0]]\n];\nexport var MetricsFilter$ = [4, n0, _MF,\n 0,\n [_P, _Ta, _APAc, _An],\n [0, () => Tag$, 0, [() => MetricsAndOperator$, 0]]\n];\nexport var ObjectEncryption$ = [4, n0, _OE,\n 0,\n [_SSEKMS],\n [[() => SSEKMSEncryption$, { [_xN]: _SK }]]\n];\nexport var SelectObjectContentEventStream$ = [4, n0, _SOCES,\n { [_st]: 1 },\n [_Rec, _Sta, _Pr, _Cont, _End],\n [[() => RecordsEvent$, 0], [() => StatsEvent$, 0], [() => ProgressEvent$, 0], () => ContinuationEvent$, () => EndEvent$]\n];\nexport var AbortMultipartUpload$ = [9, n0, _AMU,\n { [_h]: [\"DELETE\", \"/{Key+}?x-id=AbortMultipartUpload\", 204] }, () => AbortMultipartUploadRequest$, () => AbortMultipartUploadOutput$\n];\nexport var CompleteMultipartUpload$ = [9, n0, _CMUo,\n { [_h]: [\"POST\", \"/{Key+}\", 200] }, () => CompleteMultipartUploadRequest$, () => CompleteMultipartUploadOutput$\n];\nexport var CopyObject$ = [9, n0, _CO,\n { [_h]: [\"PUT\", \"/{Key+}?x-id=CopyObject\", 200] }, () => CopyObjectRequest$, () => CopyObjectOutput$\n];\nexport var CreateBucket$ = [9, n0, _CB,\n { [_h]: [\"PUT\", \"/\", 200] }, () => CreateBucketRequest$, () => CreateBucketOutput$\n];\nexport var CreateBucketMetadataConfiguration$ = [9, n0, _CBMC,\n { [_hC]: \"-\", [_h]: [\"POST\", \"/?metadataConfiguration\", 200] }, () => CreateBucketMetadataConfigurationRequest$, () => __Unit\n];\nexport var CreateBucketMetadataTableConfiguration$ = [9, n0, _CBMTC,\n { [_hC]: \"-\", [_h]: [\"POST\", \"/?metadataTable\", 200] }, () => CreateBucketMetadataTableConfigurationRequest$, () => __Unit\n];\nexport var CreateMultipartUpload$ = [9, n0, _CMUr,\n { [_h]: [\"POST\", \"/{Key+}?uploads\", 200] }, () => CreateMultipartUploadRequest$, () => CreateMultipartUploadOutput$\n];\nexport var CreateSession$ = [9, n0, _CSr,\n { [_h]: [\"GET\", \"/?session\", 200] }, () => CreateSessionRequest$, () => CreateSessionOutput$\n];\nexport var DeleteBucket$ = [9, n0, _DB,\n { [_h]: [\"DELETE\", \"/\", 204] }, () => DeleteBucketRequest$, () => __Unit\n];\nexport var DeleteBucketAnalyticsConfiguration$ = [9, n0, _DBAC,\n { [_h]: [\"DELETE\", \"/?analytics\", 204] }, () => DeleteBucketAnalyticsConfigurationRequest$, () => __Unit\n];\nexport var DeleteBucketCors$ = [9, n0, _DBC,\n { [_h]: [\"DELETE\", \"/?cors\", 204] }, () => DeleteBucketCorsRequest$, () => __Unit\n];\nexport var DeleteBucketEncryption$ = [9, n0, _DBE,\n { [_h]: [\"DELETE\", \"/?encryption\", 204] }, () => DeleteBucketEncryptionRequest$, () => __Unit\n];\nexport var DeleteBucketIntelligentTieringConfiguration$ = [9, n0, _DBITC,\n { [_h]: [\"DELETE\", \"/?intelligent-tiering\", 204] }, () => DeleteBucketIntelligentTieringConfigurationRequest$, () => __Unit\n];\nexport var DeleteBucketInventoryConfiguration$ = [9, n0, _DBIC,\n { [_h]: [\"DELETE\", \"/?inventory\", 204] }, () => DeleteBucketInventoryConfigurationRequest$, () => __Unit\n];\nexport var DeleteBucketLifecycle$ = [9, n0, _DBL,\n { [_h]: [\"DELETE\", \"/?lifecycle\", 204] }, () => DeleteBucketLifecycleRequest$, () => __Unit\n];\nexport var DeleteBucketMetadataConfiguration$ = [9, n0, _DBMC,\n { [_h]: [\"DELETE\", \"/?metadataConfiguration\", 204] }, () => DeleteBucketMetadataConfigurationRequest$, () => __Unit\n];\nexport var DeleteBucketMetadataTableConfiguration$ = [9, n0, _DBMTC,\n { [_h]: [\"DELETE\", \"/?metadataTable\", 204] }, () => DeleteBucketMetadataTableConfigurationRequest$, () => __Unit\n];\nexport var DeleteBucketMetricsConfiguration$ = [9, n0, _DBMCe,\n { [_h]: [\"DELETE\", \"/?metrics\", 204] }, () => DeleteBucketMetricsConfigurationRequest$, () => __Unit\n];\nexport var DeleteBucketOwnershipControls$ = [9, n0, _DBOC,\n { [_h]: [\"DELETE\", \"/?ownershipControls\", 204] }, () => DeleteBucketOwnershipControlsRequest$, () => __Unit\n];\nexport var DeleteBucketPolicy$ = [9, n0, _DBP,\n { [_h]: [\"DELETE\", \"/?policy\", 204] }, () => DeleteBucketPolicyRequest$, () => __Unit\n];\nexport var DeleteBucketReplication$ = [9, n0, _DBRe,\n { [_h]: [\"DELETE\", \"/?replication\", 204] }, () => DeleteBucketReplicationRequest$, () => __Unit\n];\nexport var DeleteBucketTagging$ = [9, n0, _DBT,\n { [_h]: [\"DELETE\", \"/?tagging\", 204] }, () => DeleteBucketTaggingRequest$, () => __Unit\n];\nexport var DeleteBucketWebsite$ = [9, n0, _DBW,\n { [_h]: [\"DELETE\", \"/?website\", 204] }, () => DeleteBucketWebsiteRequest$, () => __Unit\n];\nexport var DeleteObject$ = [9, n0, _DOel,\n { [_h]: [\"DELETE\", \"/{Key+}?x-id=DeleteObject\", 204] }, () => DeleteObjectRequest$, () => DeleteObjectOutput$\n];\nexport var DeleteObjects$ = [9, n0, _DOele,\n { [_hC]: \"-\", [_h]: [\"POST\", \"/?delete\", 200] }, () => DeleteObjectsRequest$, () => DeleteObjectsOutput$\n];\nexport var DeleteObjectTagging$ = [9, n0, _DOT,\n { [_h]: [\"DELETE\", \"/{Key+}?tagging\", 204] }, () => DeleteObjectTaggingRequest$, () => DeleteObjectTaggingOutput$\n];\nexport var DeletePublicAccessBlock$ = [9, n0, _DPAB,\n { [_h]: [\"DELETE\", \"/?publicAccessBlock\", 204] }, () => DeletePublicAccessBlockRequest$, () => __Unit\n];\nexport var GetBucketAbac$ = [9, n0, _GBA,\n { [_h]: [\"GET\", \"/?abac\", 200] }, () => GetBucketAbacRequest$, () => GetBucketAbacOutput$\n];\nexport var GetBucketAccelerateConfiguration$ = [9, n0, _GBAC,\n { [_h]: [\"GET\", \"/?accelerate\", 200] }, () => GetBucketAccelerateConfigurationRequest$, () => GetBucketAccelerateConfigurationOutput$\n];\nexport var GetBucketAcl$ = [9, n0, _GBAe,\n { [_h]: [\"GET\", \"/?acl\", 200] }, () => GetBucketAclRequest$, () => GetBucketAclOutput$\n];\nexport var GetBucketAnalyticsConfiguration$ = [9, n0, _GBACe,\n { [_h]: [\"GET\", \"/?analytics&x-id=GetBucketAnalyticsConfiguration\", 200] }, () => GetBucketAnalyticsConfigurationRequest$, () => GetBucketAnalyticsConfigurationOutput$\n];\nexport var GetBucketCors$ = [9, n0, _GBC,\n { [_h]: [\"GET\", \"/?cors\", 200] }, () => GetBucketCorsRequest$, () => GetBucketCorsOutput$\n];\nexport var GetBucketEncryption$ = [9, n0, _GBE,\n { [_h]: [\"GET\", \"/?encryption\", 200] }, () => GetBucketEncryptionRequest$, () => GetBucketEncryptionOutput$\n];\nexport var GetBucketIntelligentTieringConfiguration$ = [9, n0, _GBITC,\n { [_h]: [\"GET\", \"/?intelligent-tiering&x-id=GetBucketIntelligentTieringConfiguration\", 200] }, () => GetBucketIntelligentTieringConfigurationRequest$, () => GetBucketIntelligentTieringConfigurationOutput$\n];\nexport var GetBucketInventoryConfiguration$ = [9, n0, _GBIC,\n { [_h]: [\"GET\", \"/?inventory&x-id=GetBucketInventoryConfiguration\", 200] }, () => GetBucketInventoryConfigurationRequest$, () => GetBucketInventoryConfigurationOutput$\n];\nexport var GetBucketLifecycleConfiguration$ = [9, n0, _GBLC,\n { [_h]: [\"GET\", \"/?lifecycle\", 200] }, () => GetBucketLifecycleConfigurationRequest$, () => GetBucketLifecycleConfigurationOutput$\n];\nexport var GetBucketLocation$ = [9, n0, _GBL,\n { [_h]: [\"GET\", \"/?location\", 200] }, () => GetBucketLocationRequest$, () => GetBucketLocationOutput$\n];\nexport var GetBucketLogging$ = [9, n0, _GBLe,\n { [_h]: [\"GET\", \"/?logging\", 200] }, () => GetBucketLoggingRequest$, () => GetBucketLoggingOutput$\n];\nexport var GetBucketMetadataConfiguration$ = [9, n0, _GBMC,\n { [_h]: [\"GET\", \"/?metadataConfiguration\", 200] }, () => GetBucketMetadataConfigurationRequest$, () => GetBucketMetadataConfigurationOutput$\n];\nexport var GetBucketMetadataTableConfiguration$ = [9, n0, _GBMTC,\n { [_h]: [\"GET\", \"/?metadataTable\", 200] }, () => GetBucketMetadataTableConfigurationRequest$, () => GetBucketMetadataTableConfigurationOutput$\n];\nexport var GetBucketMetricsConfiguration$ = [9, n0, _GBMCe,\n { [_h]: [\"GET\", \"/?metrics&x-id=GetBucketMetricsConfiguration\", 200] }, () => GetBucketMetricsConfigurationRequest$, () => GetBucketMetricsConfigurationOutput$\n];\nexport var GetBucketNotificationConfiguration$ = [9, n0, _GBNC,\n { [_h]: [\"GET\", \"/?notification\", 200] }, () => GetBucketNotificationConfigurationRequest$, () => NotificationConfiguration$\n];\nexport var GetBucketOwnershipControls$ = [9, n0, _GBOC,\n { [_h]: [\"GET\", \"/?ownershipControls\", 200] }, () => GetBucketOwnershipControlsRequest$, () => GetBucketOwnershipControlsOutput$\n];\nexport var GetBucketPolicy$ = [9, n0, _GBP,\n { [_h]: [\"GET\", \"/?policy\", 200] }, () => GetBucketPolicyRequest$, () => GetBucketPolicyOutput$\n];\nexport var GetBucketPolicyStatus$ = [9, n0, _GBPS,\n { [_h]: [\"GET\", \"/?policyStatus\", 200] }, () => GetBucketPolicyStatusRequest$, () => GetBucketPolicyStatusOutput$\n];\nexport var GetBucketReplication$ = [9, n0, _GBR,\n { [_h]: [\"GET\", \"/?replication\", 200] }, () => GetBucketReplicationRequest$, () => GetBucketReplicationOutput$\n];\nexport var GetBucketRequestPayment$ = [9, n0, _GBRP,\n { [_h]: [\"GET\", \"/?requestPayment\", 200] }, () => GetBucketRequestPaymentRequest$, () => GetBucketRequestPaymentOutput$\n];\nexport var GetBucketTagging$ = [9, n0, _GBT,\n { [_h]: [\"GET\", \"/?tagging\", 200] }, () => GetBucketTaggingRequest$, () => GetBucketTaggingOutput$\n];\nexport var GetBucketVersioning$ = [9, n0, _GBV,\n { [_h]: [\"GET\", \"/?versioning\", 200] }, () => GetBucketVersioningRequest$, () => GetBucketVersioningOutput$\n];\nexport var GetBucketWebsite$ = [9, n0, _GBW,\n { [_h]: [\"GET\", \"/?website\", 200] }, () => GetBucketWebsiteRequest$, () => GetBucketWebsiteOutput$\n];\nexport var GetObject$ = [9, n0, _GO,\n { [_hC]: \"-\", [_h]: [\"GET\", \"/{Key+}?x-id=GetObject\", 200] }, () => GetObjectRequest$, () => GetObjectOutput$\n];\nexport var GetObjectAcl$ = [9, n0, _GOA,\n { [_h]: [\"GET\", \"/{Key+}?acl\", 200] }, () => GetObjectAclRequest$, () => GetObjectAclOutput$\n];\nexport var GetObjectAttributes$ = [9, n0, _GOAe,\n { [_h]: [\"GET\", \"/{Key+}?attributes\", 200] }, () => GetObjectAttributesRequest$, () => GetObjectAttributesOutput$\n];\nexport var GetObjectLegalHold$ = [9, n0, _GOLH,\n { [_h]: [\"GET\", \"/{Key+}?legal-hold\", 200] }, () => GetObjectLegalHoldRequest$, () => GetObjectLegalHoldOutput$\n];\nexport var GetObjectLockConfiguration$ = [9, n0, _GOLC,\n { [_h]: [\"GET\", \"/?object-lock\", 200] }, () => GetObjectLockConfigurationRequest$, () => GetObjectLockConfigurationOutput$\n];\nexport var GetObjectRetention$ = [9, n0, _GORe,\n { [_h]: [\"GET\", \"/{Key+}?retention\", 200] }, () => GetObjectRetentionRequest$, () => GetObjectRetentionOutput$\n];\nexport var GetObjectTagging$ = [9, n0, _GOT,\n { [_h]: [\"GET\", \"/{Key+}?tagging\", 200] }, () => GetObjectTaggingRequest$, () => GetObjectTaggingOutput$\n];\nexport var GetObjectTorrent$ = [9, n0, _GOTe,\n { [_h]: [\"GET\", \"/{Key+}?torrent\", 200] }, () => GetObjectTorrentRequest$, () => GetObjectTorrentOutput$\n];\nexport var GetPublicAccessBlock$ = [9, n0, _GPAB,\n { [_h]: [\"GET\", \"/?publicAccessBlock\", 200] }, () => GetPublicAccessBlockRequest$, () => GetPublicAccessBlockOutput$\n];\nexport var HeadBucket$ = [9, n0, _HB,\n { [_h]: [\"HEAD\", \"/\", 200] }, () => HeadBucketRequest$, () => HeadBucketOutput$\n];\nexport var HeadObject$ = [9, n0, _HO,\n { [_h]: [\"HEAD\", \"/{Key+}\", 200] }, () => HeadObjectRequest$, () => HeadObjectOutput$\n];\nexport var ListBucketAnalyticsConfigurations$ = [9, n0, _LBAC,\n { [_h]: [\"GET\", \"/?analytics&x-id=ListBucketAnalyticsConfigurations\", 200] }, () => ListBucketAnalyticsConfigurationsRequest$, () => ListBucketAnalyticsConfigurationsOutput$\n];\nexport var ListBucketIntelligentTieringConfigurations$ = [9, n0, _LBITC,\n { [_h]: [\"GET\", \"/?intelligent-tiering&x-id=ListBucketIntelligentTieringConfigurations\", 200] }, () => ListBucketIntelligentTieringConfigurationsRequest$, () => ListBucketIntelligentTieringConfigurationsOutput$\n];\nexport var ListBucketInventoryConfigurations$ = [9, n0, _LBIC,\n { [_h]: [\"GET\", \"/?inventory&x-id=ListBucketInventoryConfigurations\", 200] }, () => ListBucketInventoryConfigurationsRequest$, () => ListBucketInventoryConfigurationsOutput$\n];\nexport var ListBucketMetricsConfigurations$ = [9, n0, _LBMC,\n { [_h]: [\"GET\", \"/?metrics&x-id=ListBucketMetricsConfigurations\", 200] }, () => ListBucketMetricsConfigurationsRequest$, () => ListBucketMetricsConfigurationsOutput$\n];\nexport var ListBuckets$ = [9, n0, _LB,\n { [_h]: [\"GET\", \"/?x-id=ListBuckets\", 200] }, () => ListBucketsRequest$, () => ListBucketsOutput$\n];\nexport var ListDirectoryBuckets$ = [9, n0, _LDB,\n { [_h]: [\"GET\", \"/?x-id=ListDirectoryBuckets\", 200] }, () => ListDirectoryBucketsRequest$, () => ListDirectoryBucketsOutput$\n];\nexport var ListMultipartUploads$ = [9, n0, _LMU,\n { [_h]: [\"GET\", \"/?uploads\", 200] }, () => ListMultipartUploadsRequest$, () => ListMultipartUploadsOutput$\n];\nexport var ListObjects$ = [9, n0, _LO,\n { [_h]: [\"GET\", \"/\", 200] }, () => ListObjectsRequest$, () => ListObjectsOutput$\n];\nexport var ListObjectsV2$ = [9, n0, _LOV,\n { [_h]: [\"GET\", \"/?list-type=2\", 200] }, () => ListObjectsV2Request$, () => ListObjectsV2Output$\n];\nexport var ListObjectVersions$ = [9, n0, _LOVi,\n { [_h]: [\"GET\", \"/?versions\", 200] }, () => ListObjectVersionsRequest$, () => ListObjectVersionsOutput$\n];\nexport var ListParts$ = [9, n0, _LP,\n { [_h]: [\"GET\", \"/{Key+}?x-id=ListParts\", 200] }, () => ListPartsRequest$, () => ListPartsOutput$\n];\nexport var PutBucketAbac$ = [9, n0, _PBA,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?abac\", 200] }, () => PutBucketAbacRequest$, () => __Unit\n];\nexport var PutBucketAccelerateConfiguration$ = [9, n0, _PBAC,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?accelerate\", 200] }, () => PutBucketAccelerateConfigurationRequest$, () => __Unit\n];\nexport var PutBucketAcl$ = [9, n0, _PBAu,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?acl\", 200] }, () => PutBucketAclRequest$, () => __Unit\n];\nexport var PutBucketAnalyticsConfiguration$ = [9, n0, _PBACu,\n { [_h]: [\"PUT\", \"/?analytics\", 200] }, () => PutBucketAnalyticsConfigurationRequest$, () => __Unit\n];\nexport var PutBucketCors$ = [9, n0, _PBC,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?cors\", 200] }, () => PutBucketCorsRequest$, () => __Unit\n];\nexport var PutBucketEncryption$ = [9, n0, _PBE,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?encryption\", 200] }, () => PutBucketEncryptionRequest$, () => __Unit\n];\nexport var PutBucketIntelligentTieringConfiguration$ = [9, n0, _PBITC,\n { [_h]: [\"PUT\", \"/?intelligent-tiering\", 200] }, () => PutBucketIntelligentTieringConfigurationRequest$, () => __Unit\n];\nexport var PutBucketInventoryConfiguration$ = [9, n0, _PBIC,\n { [_h]: [\"PUT\", \"/?inventory\", 200] }, () => PutBucketInventoryConfigurationRequest$, () => __Unit\n];\nexport var PutBucketLifecycleConfiguration$ = [9, n0, _PBLC,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?lifecycle\", 200] }, () => PutBucketLifecycleConfigurationRequest$, () => PutBucketLifecycleConfigurationOutput$\n];\nexport var PutBucketLogging$ = [9, n0, _PBL,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?logging\", 200] }, () => PutBucketLoggingRequest$, () => __Unit\n];\nexport var PutBucketMetricsConfiguration$ = [9, n0, _PBMC,\n { [_h]: [\"PUT\", \"/?metrics\", 200] }, () => PutBucketMetricsConfigurationRequest$, () => __Unit\n];\nexport var PutBucketNotificationConfiguration$ = [9, n0, _PBNC,\n { [_h]: [\"PUT\", \"/?notification\", 200] }, () => PutBucketNotificationConfigurationRequest$, () => __Unit\n];\nexport var PutBucketOwnershipControls$ = [9, n0, _PBOC,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?ownershipControls\", 200] }, () => PutBucketOwnershipControlsRequest$, () => __Unit\n];\nexport var PutBucketPolicy$ = [9, n0, _PBP,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?policy\", 200] }, () => PutBucketPolicyRequest$, () => __Unit\n];\nexport var PutBucketReplication$ = [9, n0, _PBR,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?replication\", 200] }, () => PutBucketReplicationRequest$, () => __Unit\n];\nexport var PutBucketRequestPayment$ = [9, n0, _PBRP,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?requestPayment\", 200] }, () => PutBucketRequestPaymentRequest$, () => __Unit\n];\nexport var PutBucketTagging$ = [9, n0, _PBT,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?tagging\", 200] }, () => PutBucketTaggingRequest$, () => __Unit\n];\nexport var PutBucketVersioning$ = [9, n0, _PBV,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?versioning\", 200] }, () => PutBucketVersioningRequest$, () => __Unit\n];\nexport var PutBucketWebsite$ = [9, n0, _PBW,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?website\", 200] }, () => PutBucketWebsiteRequest$, () => __Unit\n];\nexport var PutObject$ = [9, n0, _PO,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/{Key+}?x-id=PutObject\", 200] }, () => PutObjectRequest$, () => PutObjectOutput$\n];\nexport var PutObjectAcl$ = [9, n0, _POA,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/{Key+}?acl\", 200] }, () => PutObjectAclRequest$, () => PutObjectAclOutput$\n];\nexport var PutObjectLegalHold$ = [9, n0, _POLH,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/{Key+}?legal-hold\", 200] }, () => PutObjectLegalHoldRequest$, () => PutObjectLegalHoldOutput$\n];\nexport var PutObjectLockConfiguration$ = [9, n0, _POLC,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?object-lock\", 200] }, () => PutObjectLockConfigurationRequest$, () => PutObjectLockConfigurationOutput$\n];\nexport var PutObjectRetention$ = [9, n0, _PORu,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/{Key+}?retention\", 200] }, () => PutObjectRetentionRequest$, () => PutObjectRetentionOutput$\n];\nexport var PutObjectTagging$ = [9, n0, _POT,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/{Key+}?tagging\", 200] }, () => PutObjectTaggingRequest$, () => PutObjectTaggingOutput$\n];\nexport var PutPublicAccessBlock$ = [9, n0, _PPAB,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?publicAccessBlock\", 200] }, () => PutPublicAccessBlockRequest$, () => __Unit\n];\nexport var RenameObject$ = [9, n0, _RO,\n { [_h]: [\"PUT\", \"/{Key+}?renameObject\", 200] }, () => RenameObjectRequest$, () => RenameObjectOutput$\n];\nexport var RestoreObject$ = [9, n0, _ROe,\n { [_hC]: \"-\", [_h]: [\"POST\", \"/{Key+}?restore\", 200] }, () => RestoreObjectRequest$, () => RestoreObjectOutput$\n];\nexport var SelectObjectContent$ = [9, n0, _SOC,\n { [_h]: [\"POST\", \"/{Key+}?select&select-type=2\", 200] }, () => SelectObjectContentRequest$, () => SelectObjectContentOutput$\n];\nexport var UpdateBucketMetadataInventoryTableConfiguration$ = [9, n0, _UBMITC,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?metadataInventoryTable\", 200] }, () => UpdateBucketMetadataInventoryTableConfigurationRequest$, () => __Unit\n];\nexport var UpdateBucketMetadataJournalTableConfiguration$ = [9, n0, _UBMJTC,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/?metadataJournalTable\", 200] }, () => UpdateBucketMetadataJournalTableConfigurationRequest$, () => __Unit\n];\nexport var UpdateObjectEncryption$ = [9, n0, _UOE,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/{Key+}?encryption\", 200] }, () => UpdateObjectEncryptionRequest$, () => UpdateObjectEncryptionResponse$\n];\nexport var UploadPart$ = [9, n0, _UP,\n { [_hC]: \"-\", [_h]: [\"PUT\", \"/{Key+}?x-id=UploadPart\", 200] }, () => UploadPartRequest$, () => UploadPartOutput$\n];\nexport var UploadPartCopy$ = [9, n0, _UPC,\n { [_h]: [\"PUT\", \"/{Key+}?x-id=UploadPartCopy\", 200] }, () => UploadPartCopyRequest$, () => UploadPartCopyOutput$\n];\nexport var WriteGetObjectResponse$ = [9, n0, _WGOR,\n { [_en]: [\"{RequestRoute}.\"], [_h]: [\"POST\", \"/WriteGetObjectResponse\", 200] }, () => WriteGetObjectResponseRequest$, () => __Unit\n];\n",
96
- "import { ServiceException as __ServiceException, } from \"@smithy/smithy-client\";\nexport { __ServiceException };\nexport class S3ServiceException extends __ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, S3ServiceException.prototype);\n }\n}\n",
97
- "import { S3ServiceException as __BaseException } from \"./S3ServiceException\";\nexport class NoSuchUpload extends __BaseException {\n name = \"NoSuchUpload\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"NoSuchUpload\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, NoSuchUpload.prototype);\n }\n}\nexport class AccessDenied extends __BaseException {\n name = \"AccessDenied\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"AccessDenied\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, AccessDenied.prototype);\n }\n}\nexport class ObjectNotInActiveTierError extends __BaseException {\n name = \"ObjectNotInActiveTierError\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"ObjectNotInActiveTierError\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ObjectNotInActiveTierError.prototype);\n }\n}\nexport class BucketAlreadyExists extends __BaseException {\n name = \"BucketAlreadyExists\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"BucketAlreadyExists\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, BucketAlreadyExists.prototype);\n }\n}\nexport class BucketAlreadyOwnedByYou extends __BaseException {\n name = \"BucketAlreadyOwnedByYou\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"BucketAlreadyOwnedByYou\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, BucketAlreadyOwnedByYou.prototype);\n }\n}\nexport class NoSuchBucket extends __BaseException {\n name = \"NoSuchBucket\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"NoSuchBucket\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, NoSuchBucket.prototype);\n }\n}\nexport class InvalidObjectState extends __BaseException {\n name = \"InvalidObjectState\";\n $fault = \"client\";\n StorageClass;\n AccessTier;\n constructor(opts) {\n super({\n name: \"InvalidObjectState\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidObjectState.prototype);\n this.StorageClass = opts.StorageClass;\n this.AccessTier = opts.AccessTier;\n }\n}\nexport class NoSuchKey extends __BaseException {\n name = \"NoSuchKey\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"NoSuchKey\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, NoSuchKey.prototype);\n }\n}\nexport class NotFound extends __BaseException {\n name = \"NotFound\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"NotFound\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, NotFound.prototype);\n }\n}\nexport class EncryptionTypeMismatch extends __BaseException {\n name = \"EncryptionTypeMismatch\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"EncryptionTypeMismatch\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, EncryptionTypeMismatch.prototype);\n }\n}\nexport class InvalidRequest extends __BaseException {\n name = \"InvalidRequest\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"InvalidRequest\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidRequest.prototype);\n }\n}\nexport class InvalidWriteOffset extends __BaseException {\n name = \"InvalidWriteOffset\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"InvalidWriteOffset\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, InvalidWriteOffset.prototype);\n }\n}\nexport class TooManyParts extends __BaseException {\n name = \"TooManyParts\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"TooManyParts\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, TooManyParts.prototype);\n }\n}\nexport class IdempotencyParameterMismatch extends __BaseException {\n name = \"IdempotencyParameterMismatch\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"IdempotencyParameterMismatch\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, IdempotencyParameterMismatch.prototype);\n }\n}\nexport class ObjectAlreadyInActiveTierError extends __BaseException {\n name = \"ObjectAlreadyInActiveTierError\";\n $fault = \"client\";\n constructor(opts) {\n super({\n name: \"ObjectAlreadyInActiveTierError\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ObjectAlreadyInActiveTierError.prototype);\n }\n}\n",
98
- "import packageInfo from \"../package.json\";\nimport { emitWarningIfUnsupportedVersion as awsCheckVersion, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, NODE_SIGV4A_CONFIG_OPTIONS, } from \"@aws-sdk/core\";\nimport { defaultProvider as credentialDefaultProvider } from \"@aws-sdk/credential-provider-node\";\nimport { NODE_USE_ARN_REGION_CONFIG_OPTIONS } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS, NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS, } from \"@aws-sdk/middleware-flexible-checksums\";\nimport { NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS } from \"@aws-sdk/middleware-sdk-s3\";\nimport { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from \"@aws-sdk/util-user-agent-node\";\nimport { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from \"@smithy/config-resolver\";\nimport { eventStreamSerdeProvider } from \"@smithy/eventstream-serde-node\";\nimport { Hash } from \"@smithy/hash-node\";\nimport { readableStreamHasher as streamHasher } from \"@smithy/hash-stream-node\";\nimport { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from \"@smithy/middleware-retry\";\nimport { loadConfig as loadNodeConfig } from \"@smithy/node-config-provider\";\nimport { NodeHttpHandler as RequestHandler, streamCollector } from \"@smithy/node-http-handler\";\nimport { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from \"@smithy/smithy-client\";\nimport { calculateBodyLength } from \"@smithy/util-body-length-node\";\nimport { resolveDefaultsModeConfig } from \"@smithy/util-defaults-mode-node\";\nimport { DEFAULT_RETRY_MODE } from \"@smithy/util-retry\";\nimport { getRuntimeConfig as getSharedRuntimeConfig } from \"./runtimeConfig.shared\";\nexport const getRuntimeConfig = (config) => {\n emitWarningIfUnsupportedVersion(process.version);\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getSharedRuntimeConfig(config);\n awsCheckVersion(process.version);\n const loaderConfig = {\n profile: config?.profile,\n logger: clientSharedValues.logger,\n };\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig),\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credentialDefaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n disableS3ExpressSessionAuth: config?.disableS3ExpressSessionAuth ?? loadNodeConfig(NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS, loaderConfig),\n eventStreamSerdeProvider: config?.eventStreamSerdeProvider ?? eventStreamSerdeProvider,\n maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config),\n md5: config?.md5 ?? Hash.bind(null, \"md5\"),\n region: config?.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }),\n requestChecksumCalculation: config?.requestChecksumCalculation ?? loadNodeConfig(NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS, loaderConfig),\n requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider),\n responseChecksumValidation: config?.responseChecksumValidation ?? loadNodeConfig(NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS, loaderConfig),\n retryMode: config?.retryMode ??\n loadNodeConfig({\n ...NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE,\n }, config),\n sha1: config?.sha1 ?? Hash.bind(null, \"sha1\"),\n sha256: config?.sha256 ?? Hash.bind(null, \"sha256\"),\n sigv4aSigningRegionSet: config?.sigv4aSigningRegionSet ?? loadNodeConfig(NODE_SIGV4A_CONFIG_OPTIONS, loaderConfig),\n streamCollector: config?.streamCollector ?? streamCollector,\n streamHasher: config?.streamHasher ?? streamHasher,\n useArnRegion: config?.useArnRegion ?? loadNodeConfig(NODE_USE_ARN_REGION_CONFIG_OPTIONS, loaderConfig),\n useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig),\n userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig),\n };\n};\n",
99
- "import { ENV_KEY, ENV_SECRET, fromEnv } from \"@aws-sdk/credential-provider-env\";\nimport { CredentialsProviderError } from \"@smithy/property-provider\";\nimport { ENV_PROFILE } from \"@smithy/shared-ini-file-loader\";\nimport { remoteProvider } from \"./remoteProvider\";\nimport { memoizeChain } from \"./runtime/memoize-chain\";\nlet multipleCredentialSourceWarningEmitted = false;\nexport const defaultProvider = (init = {}) => memoizeChain([\n async () => {\n const profile = init.profile ?? process.env[ENV_PROFILE];\n if (profile) {\n const envStaticCredentialsAreSet = process.env[ENV_KEY] && process.env[ENV_SECRET];\n if (envStaticCredentialsAreSet) {\n if (!multipleCredentialSourceWarningEmitted) {\n const warnFn = init.logger?.warn && init.logger?.constructor?.name !== \"NoOpLogger\"\n ? init.logger.warn.bind(init.logger)\n : console.warn;\n warnFn(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING:\n Multiple credential sources detected: \n Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.\n This SDK will proceed with the AWS_PROFILE value.\n \n However, a future version may change this behavior to prefer the ENV static credentials.\n Please ensure that your environment only sets either the AWS_PROFILE or the\n AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.\n`);\n multipleCredentialSourceWarningEmitted = true;\n }\n }\n throw new CredentialsProviderError(\"AWS_PROFILE is set, skipping fromEnv provider.\", {\n logger: init.logger,\n tryNextLink: true,\n });\n }\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromEnv\");\n return fromEnv(init)();\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n throw new CredentialsProviderError(\"Skipping SSO provider in default chain (inputs do not include SSO fields).\", { logger: init.logger });\n }\n const { fromSSO } = await import(\"@aws-sdk/credential-provider-sso\");\n return fromSSO(init)(awsIdentityProperties);\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromIni\");\n const { fromIni } = await import(\"@aws-sdk/credential-provider-ini\");\n return fromIni(init)(awsIdentityProperties);\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromProcess\");\n const { fromProcess } = await import(\"@aws-sdk/credential-provider-process\");\n return fromProcess(init)(awsIdentityProperties);\n },\n async (awsIdentityProperties) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile\");\n const { fromTokenFile } = await import(\"@aws-sdk/credential-provider-web-identity\");\n return fromTokenFile(init)(awsIdentityProperties);\n },\n async () => {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - defaultProvider::remoteProvider\");\n return (await remoteProvider(init))();\n },\n async () => {\n throw new CredentialsProviderError(\"Could not load credentials from any providers\", {\n tryNextLink: false,\n logger: init.logger,\n });\n },\n], credentialsTreatedAsExpired);\nexport const credentialsWillNeedRefresh = (credentials) => credentials?.expiration !== undefined;\nexport const credentialsTreatedAsExpired = (credentials) => credentials?.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000;\n",
100
- "import { chain, CredentialsProviderError } from \"@smithy/property-provider\";\nexport const ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nexport const remoteProvider = async (init) => {\n const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await import(\"@smithy/credential-provider-imds\");\n if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) {\n init.logger?.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata\");\n const { fromHttp } = await import(\"@aws-sdk/credential-provider-http\");\n return chain(fromHttp(init), fromContainerMetadata(init));\n }\n if (process.env[ENV_IMDS_DISABLED] && process.env[ENV_IMDS_DISABLED] !== \"false\") {\n return async () => {\n throw new CredentialsProviderError(\"EC2 Instance Metadata Service access disabled\", { logger: init.logger });\n };\n }\n init.logger?.debug(\"@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata\");\n return fromInstanceMetadata(init);\n};\n",
101
- "export function memoizeChain(providers, treatAsExpired) {\n const chain = internalCreateChain(providers);\n let activeLock;\n let passiveLock;\n let credentials;\n const provider = async (options) => {\n if (options?.forceRefresh) {\n return await chain(options);\n }\n if (credentials?.expiration) {\n if (credentials?.expiration?.getTime() < Date.now()) {\n credentials = undefined;\n }\n }\n if (activeLock) {\n await activeLock;\n }\n else if (!credentials || treatAsExpired?.(credentials)) {\n if (credentials) {\n if (!passiveLock) {\n passiveLock = chain(options)\n .then((c) => {\n credentials = c;\n })\n .finally(() => {\n passiveLock = undefined;\n });\n }\n }\n else {\n activeLock = chain(options)\n .then((c) => {\n credentials = c;\n })\n .finally(() => {\n activeLock = undefined;\n });\n return provider(options);\n }\n }\n return credentials;\n };\n return provider;\n}\nexport const internalCreateChain = (providers) => async (awsIdentityProperties) => {\n let lastProviderError;\n for (const provider of providers) {\n try {\n return await provider(awsIdentityProperties);\n }\n catch (err) {\n lastProviderError = err;\n if (err?.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n};\n",
102
- "import { booleanSelector, SelectorType } from \"@smithy/util-config-provider\";\nexport const NODE_USE_ARN_REGION_ENV_NAME = \"AWS_S3_USE_ARN_REGION\";\nexport const NODE_USE_ARN_REGION_INI_NAME = \"s3_use_arn_region\";\nexport const NODE_USE_ARN_REGION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => booleanSelector(env, NODE_USE_ARN_REGION_ENV_NAME, SelectorType.ENV),\n configFileSelector: (profile) => booleanSelector(profile, NODE_USE_ARN_REGION_INI_NAME, SelectorType.CONFIG),\n default: undefined,\n};\n",
103
- "import { fromHex, toHex } from \"@smithy/util-hex-encoding\";\nimport { Int64 } from \"./Int64\";\nexport class HeaderMarshaller {\n toUtf8;\n fromUtf8;\n constructor(toUtf8, fromUtf8) {\n this.toUtf8 = toUtf8;\n this.fromUtf8 = fromUtf8;\n }\n format(headers) {\n const chunks = [];\n for (const headerName of Object.keys(headers)) {\n const bytes = this.fromUtf8(headerName);\n chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n }\n const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n let position = 0;\n for (const chunk of chunks) {\n out.set(chunk, position);\n position += chunk.byteLength;\n }\n return out;\n }\n formatHeaderValue(header) {\n switch (header.type) {\n case \"boolean\":\n return Uint8Array.from([header.value ? 0 : 1]);\n case \"byte\":\n return Uint8Array.from([2, header.value]);\n case \"short\":\n const shortView = new DataView(new ArrayBuffer(3));\n shortView.setUint8(0, 3);\n shortView.setInt16(1, header.value, false);\n return new Uint8Array(shortView.buffer);\n case \"integer\":\n const intView = new DataView(new ArrayBuffer(5));\n intView.setUint8(0, 4);\n intView.setInt32(1, header.value, false);\n return new Uint8Array(intView.buffer);\n case \"long\":\n const longBytes = new Uint8Array(9);\n longBytes[0] = 5;\n longBytes.set(header.value.bytes, 1);\n return longBytes;\n case \"binary\":\n const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n binView.setUint8(0, 6);\n binView.setUint16(1, header.value.byteLength, false);\n const binBytes = new Uint8Array(binView.buffer);\n binBytes.set(header.value, 3);\n return binBytes;\n case \"string\":\n const utf8Bytes = this.fromUtf8(header.value);\n const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n strView.setUint8(0, 7);\n strView.setUint16(1, utf8Bytes.byteLength, false);\n const strBytes = new Uint8Array(strView.buffer);\n strBytes.set(utf8Bytes, 3);\n return strBytes;\n case \"timestamp\":\n const tsBytes = new Uint8Array(9);\n tsBytes[0] = 8;\n tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n return tsBytes;\n case \"uuid\":\n if (!UUID_PATTERN.test(header.value)) {\n throw new Error(`Invalid UUID received: ${header.value}`);\n }\n const uuidBytes = new Uint8Array(17);\n uuidBytes[0] = 9;\n uuidBytes.set(fromHex(header.value.replace(/\\-/g, \"\")), 1);\n return uuidBytes;\n }\n }\n parse(headers) {\n const out = {};\n let position = 0;\n while (position < headers.byteLength) {\n const nameLength = headers.getUint8(position++);\n const name = this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, nameLength));\n position += nameLength;\n switch (headers.getUint8(position++)) {\n case 0:\n out[name] = {\n type: BOOLEAN_TAG,\n value: true,\n };\n break;\n case 1:\n out[name] = {\n type: BOOLEAN_TAG,\n value: false,\n };\n break;\n case 2:\n out[name] = {\n type: BYTE_TAG,\n value: headers.getInt8(position++),\n };\n break;\n case 3:\n out[name] = {\n type: SHORT_TAG,\n value: headers.getInt16(position, false),\n };\n position += 2;\n break;\n case 4:\n out[name] = {\n type: INT_TAG,\n value: headers.getInt32(position, false),\n };\n position += 4;\n break;\n case 5:\n out[name] = {\n type: LONG_TAG,\n value: new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)),\n };\n position += 8;\n break;\n case 6:\n const binaryLength = headers.getUint16(position, false);\n position += 2;\n out[name] = {\n type: BINARY_TAG,\n value: new Uint8Array(headers.buffer, headers.byteOffset + position, binaryLength),\n };\n position += binaryLength;\n break;\n case 7:\n const stringLength = headers.getUint16(position, false);\n position += 2;\n out[name] = {\n type: STRING_TAG,\n value: this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, stringLength)),\n };\n position += stringLength;\n break;\n case 8:\n out[name] = {\n type: TIMESTAMP_TAG,\n value: new Date(new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)).valueOf()),\n };\n position += 8;\n break;\n case 9:\n const uuidBytes = new Uint8Array(headers.buffer, headers.byteOffset + position, 16);\n position += 16;\n out[name] = {\n type: UUID_TAG,\n value: `${toHex(uuidBytes.subarray(0, 4))}-${toHex(uuidBytes.subarray(4, 6))}-${toHex(uuidBytes.subarray(6, 8))}-${toHex(uuidBytes.subarray(8, 10))}-${toHex(uuidBytes.subarray(10))}`,\n };\n break;\n default:\n throw new Error(`Unrecognized header type tag`);\n }\n }\n return out;\n }\n}\nvar HEADER_VALUE_TYPE;\n(function (HEADER_VALUE_TYPE) {\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolTrue\"] = 0] = \"boolTrue\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolFalse\"] = 1] = \"boolFalse\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byte\"] = 2] = \"byte\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"short\"] = 3] = \"short\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"integer\"] = 4] = \"integer\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"long\"] = 5] = \"long\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byteArray\"] = 6] = \"byteArray\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"string\"] = 7] = \"string\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"timestamp\"] = 8] = \"timestamp\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"uuid\"] = 9] = \"uuid\";\n})(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {}));\nconst BOOLEAN_TAG = \"boolean\";\nconst BYTE_TAG = \"byte\";\nconst SHORT_TAG = \"short\";\nconst INT_TAG = \"integer\";\nconst LONG_TAG = \"long\";\nconst BINARY_TAG = \"binary\";\nconst STRING_TAG = \"string\";\nconst TIMESTAMP_TAG = \"timestamp\";\nconst UUID_TAG = \"uuid\";\nconst UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\n",
104
- "import { toHex } from \"@smithy/util-hex-encoding\";\nexport class Int64 {\n bytes;\n constructor(bytes) {\n this.bytes = bytes;\n if (bytes.byteLength !== 8) {\n throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n }\n }\n static fromNumber(number) {\n if (number > 9_223_372_036_854_775_807 || number < -9_223_372_036_854_775_808) {\n throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n }\n const bytes = new Uint8Array(8);\n for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n bytes[i] = remaining;\n }\n if (number < 0) {\n negate(bytes);\n }\n return new Int64(bytes);\n }\n valueOf() {\n const bytes = this.bytes.slice(0);\n const negative = bytes[0] & 0b10000000;\n if (negative) {\n negate(bytes);\n }\n return parseInt(toHex(bytes), 16) * (negative ? -1 : 1);\n }\n toString() {\n return String(this.valueOf());\n }\n}\nfunction negate(bytes) {\n for (let i = 0; i < 8; i++) {\n bytes[i] ^= 0xff;\n }\n for (let i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0)\n break;\n }\n}\n",
105
- "import { Crc32 } from \"@aws-crypto/crc32\";\nconst PRELUDE_MEMBER_LENGTH = 4;\nconst PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2;\nconst CHECKSUM_LENGTH = 4;\nconst MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2;\nexport function splitMessage({ byteLength, byteOffset, buffer }) {\n if (byteLength < MINIMUM_MESSAGE_LENGTH) {\n throw new Error(\"Provided message too short to accommodate event stream message overhead\");\n }\n const view = new DataView(buffer, byteOffset, byteLength);\n const messageLength = view.getUint32(0, false);\n if (byteLength !== messageLength) {\n throw new Error(\"Reported message length does not match received message length\");\n }\n const headerLength = view.getUint32(PRELUDE_MEMBER_LENGTH, false);\n const expectedPreludeChecksum = view.getUint32(PRELUDE_LENGTH, false);\n const expectedMessageChecksum = view.getUint32(byteLength - CHECKSUM_LENGTH, false);\n const checksummer = new Crc32().update(new Uint8Array(buffer, byteOffset, PRELUDE_LENGTH));\n if (expectedPreludeChecksum !== checksummer.digest()) {\n throw new Error(`The prelude checksum specified in the message (${expectedPreludeChecksum}) does not match the calculated CRC32 checksum (${checksummer.digest()})`);\n }\n checksummer.update(new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH, byteLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH)));\n if (expectedMessageChecksum !== checksummer.digest()) {\n throw new Error(`The message checksum (${checksummer.digest()}) did not match the expected value of ${expectedMessageChecksum}`);\n }\n return {\n headers: new DataView(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH, headerLength),\n body: new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH + headerLength, messageLength - headerLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH + CHECKSUM_LENGTH)),\n };\n}\n",
106
- "import { Crc32 } from \"@aws-crypto/crc32\";\nimport { HeaderMarshaller } from \"./HeaderMarshaller\";\nimport { splitMessage } from \"./splitMessage\";\nexport class EventStreamCodec {\n headerMarshaller;\n messageBuffer;\n isEndOfStream;\n constructor(toUtf8, fromUtf8) {\n this.headerMarshaller = new HeaderMarshaller(toUtf8, fromUtf8);\n this.messageBuffer = [];\n this.isEndOfStream = false;\n }\n feed(message) {\n this.messageBuffer.push(this.decode(message));\n }\n endOfStream() {\n this.isEndOfStream = true;\n }\n getMessage() {\n const message = this.messageBuffer.pop();\n const isEndOfStream = this.isEndOfStream;\n return {\n getMessage() {\n return message;\n },\n isEndOfStream() {\n return isEndOfStream;\n },\n };\n }\n getAvailableMessages() {\n const messages = this.messageBuffer;\n this.messageBuffer = [];\n const isEndOfStream = this.isEndOfStream;\n return {\n getMessages() {\n return messages;\n },\n isEndOfStream() {\n return isEndOfStream;\n },\n };\n }\n encode({ headers: rawHeaders, body }) {\n const headers = this.headerMarshaller.format(rawHeaders);\n const length = headers.byteLength + body.byteLength + 16;\n const out = new Uint8Array(length);\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n const checksum = new Crc32();\n view.setUint32(0, length, false);\n view.setUint32(4, headers.byteLength, false);\n view.setUint32(8, checksum.update(out.subarray(0, 8)).digest(), false);\n out.set(headers, 12);\n out.set(body, headers.byteLength + 12);\n view.setUint32(length - 4, checksum.update(out.subarray(8, length - 4)).digest(), false);\n return out;\n }\n decode(message) {\n const { headers, body } = splitMessage(message);\n return { headers: this.headerMarshaller.parse(headers), body };\n }\n formatHeaders(rawHeaders) {\n return this.headerMarshaller.format(rawHeaders);\n }\n}\n",
107
- "export class MessageDecoderStream {\n options;\n constructor(options) {\n this.options = options;\n }\n [Symbol.asyncIterator]() {\n return this.asyncIterator();\n }\n async *asyncIterator() {\n for await (const bytes of this.options.inputStream) {\n const decoded = this.options.decoder.decode(bytes);\n yield decoded;\n }\n }\n}\n",
108
- "export class MessageEncoderStream {\n options;\n constructor(options) {\n this.options = options;\n }\n [Symbol.asyncIterator]() {\n return this.asyncIterator();\n }\n async *asyncIterator() {\n for await (const msg of this.options.messageStream) {\n const encoded = this.options.encoder.encode(msg);\n yield encoded;\n }\n if (this.options.includeEndFrame) {\n yield new Uint8Array(0);\n }\n }\n}\n",
109
- "export class SmithyMessageDecoderStream {\n options;\n constructor(options) {\n this.options = options;\n }\n [Symbol.asyncIterator]() {\n return this.asyncIterator();\n }\n async *asyncIterator() {\n for await (const message of this.options.messageStream) {\n const deserialized = await this.options.deserializer(message);\n if (deserialized === undefined)\n continue;\n yield deserialized;\n }\n }\n}\n",
110
- "export class SmithyMessageEncoderStream {\n options;\n constructor(options) {\n this.options = options;\n }\n [Symbol.asyncIterator]() {\n return this.asyncIterator();\n }\n async *asyncIterator() {\n for await (const chunk of this.options.inputStream) {\n const payloadBuf = this.options.serializer(chunk);\n yield payloadBuf;\n }\n }\n}\n",
111
- "export function getChunkedStream(source) {\n let currentMessageTotalLength = 0;\n let currentMessagePendingLength = 0;\n let currentMessage = null;\n let messageLengthBuffer = null;\n const allocateMessage = (size) => {\n if (typeof size !== \"number\") {\n throw new Error(\"Attempted to allocate an event message where size was not a number: \" + size);\n }\n currentMessageTotalLength = size;\n currentMessagePendingLength = 4;\n currentMessage = new Uint8Array(size);\n const currentMessageView = new DataView(currentMessage.buffer);\n currentMessageView.setUint32(0, size, false);\n };\n const iterator = async function* () {\n const sourceIterator = source[Symbol.asyncIterator]();\n while (true) {\n const { value, done } = await sourceIterator.next();\n if (done) {\n if (!currentMessageTotalLength) {\n return;\n }\n else if (currentMessageTotalLength === currentMessagePendingLength) {\n yield currentMessage;\n }\n else {\n throw new Error(\"Truncated event message received.\");\n }\n return;\n }\n const chunkLength = value.length;\n let currentOffset = 0;\n while (currentOffset < chunkLength) {\n if (!currentMessage) {\n const bytesRemaining = chunkLength - currentOffset;\n if (!messageLengthBuffer) {\n messageLengthBuffer = new Uint8Array(4);\n }\n const numBytesForTotal = Math.min(4 - currentMessagePendingLength, bytesRemaining);\n messageLengthBuffer.set(value.slice(currentOffset, currentOffset + numBytesForTotal), currentMessagePendingLength);\n currentMessagePendingLength += numBytesForTotal;\n currentOffset += numBytesForTotal;\n if (currentMessagePendingLength < 4) {\n break;\n }\n allocateMessage(new DataView(messageLengthBuffer.buffer).getUint32(0, false));\n messageLengthBuffer = null;\n }\n const numBytesToWrite = Math.min(currentMessageTotalLength - currentMessagePendingLength, chunkLength - currentOffset);\n currentMessage.set(value.slice(currentOffset, currentOffset + numBytesToWrite), currentMessagePendingLength);\n currentMessagePendingLength += numBytesToWrite;\n currentOffset += numBytesToWrite;\n if (currentMessageTotalLength && currentMessageTotalLength === currentMessagePendingLength) {\n yield currentMessage;\n currentMessage = null;\n currentMessageTotalLength = 0;\n currentMessagePendingLength = 0;\n }\n }\n }\n };\n return {\n [Symbol.asyncIterator]: iterator,\n };\n}\n",
112
- "export function getUnmarshalledStream(source, options) {\n const messageUnmarshaller = getMessageUnmarshaller(options.deserializer, options.toUtf8);\n return {\n [Symbol.asyncIterator]: async function* () {\n for await (const chunk of source) {\n const message = options.eventStreamCodec.decode(chunk);\n const type = await messageUnmarshaller(message);\n if (type === undefined)\n continue;\n yield type;\n }\n },\n };\n}\nexport function getMessageUnmarshaller(deserializer, toUtf8) {\n return async function (message) {\n const { value: messageType } = message.headers[\":message-type\"];\n if (messageType === \"error\") {\n const unmodeledError = new Error(message.headers[\":error-message\"].value || \"UnknownError\");\n unmodeledError.name = message.headers[\":error-code\"].value;\n throw unmodeledError;\n }\n else if (messageType === \"exception\") {\n const code = message.headers[\":exception-type\"].value;\n const exception = { [code]: message };\n const deserializedException = await deserializer(exception);\n if (deserializedException.$unknown) {\n const error = new Error(toUtf8(message.body));\n error.name = code;\n throw error;\n }\n throw deserializedException[code];\n }\n else if (messageType === \"event\") {\n const event = {\n [message.headers[\":event-type\"].value]: message,\n };\n const deserialized = await deserializer(event);\n if (deserialized.$unknown)\n return;\n return deserialized;\n }\n else {\n throw Error(`Unrecognizable event type: ${message.headers[\":event-type\"].value}`);\n }\n };\n}\n",
113
- "import { EventStreamCodec, MessageDecoderStream, MessageEncoderStream, SmithyMessageDecoderStream, SmithyMessageEncoderStream, } from \"@smithy/eventstream-codec\";\nimport { getChunkedStream } from \"./getChunkedStream\";\nimport { getMessageUnmarshaller } from \"./getUnmarshalledStream\";\nexport class EventStreamMarshaller {\n eventStreamCodec;\n utfEncoder;\n constructor({ utf8Encoder, utf8Decoder }) {\n this.eventStreamCodec = new EventStreamCodec(utf8Encoder, utf8Decoder);\n this.utfEncoder = utf8Encoder;\n }\n deserialize(body, deserializer) {\n const inputStream = getChunkedStream(body);\n return new SmithyMessageDecoderStream({\n messageStream: new MessageDecoderStream({ inputStream, decoder: this.eventStreamCodec }),\n deserializer: getMessageUnmarshaller(deserializer, this.utfEncoder),\n });\n }\n serialize(inputStream, serializer) {\n return new MessageEncoderStream({\n messageStream: new SmithyMessageEncoderStream({ inputStream, serializer }),\n encoder: this.eventStreamCodec,\n includeEndFrame: true,\n });\n }\n}\n",
114
- "import { EventStreamMarshaller as UniversalEventStreamMarshaller } from \"@smithy/eventstream-serde-universal\";\nimport { Readable } from \"stream\";\nimport { readabletoIterable } from \"./utils\";\nexport class EventStreamMarshaller {\n universalMarshaller;\n constructor({ utf8Encoder, utf8Decoder }) {\n this.universalMarshaller = new UniversalEventStreamMarshaller({\n utf8Decoder,\n utf8Encoder,\n });\n }\n deserialize(body, deserializer) {\n const bodyIterable = typeof body[Symbol.asyncIterator] === \"function\" ? body : readabletoIterable(body);\n return this.universalMarshaller.deserialize(bodyIterable, deserializer);\n }\n serialize(input, serializer) {\n return Readable.from(this.universalMarshaller.serialize(input, serializer));\n }\n}\n",
115
- "export async function* readabletoIterable(readStream) {\n let streamEnded = false;\n let generationEnded = false;\n const records = new Array();\n readStream.on(\"error\", (err) => {\n if (!streamEnded) {\n streamEnded = true;\n }\n if (err) {\n throw err;\n }\n });\n readStream.on(\"data\", (data) => {\n records.push(data);\n });\n readStream.on(\"end\", () => {\n streamEnded = true;\n });\n while (!generationEnded) {\n const value = await new Promise((resolve) => setTimeout(() => resolve(records.shift()), 0));\n if (value) {\n yield value;\n }\n generationEnded = streamEnded && records.length === 0;\n }\n}\n",
116
- "import { EventStreamMarshaller } from \"./EventStreamMarshaller\";\nexport const eventStreamSerdeProvider = (options) => new EventStreamMarshaller(options);\n",
117
- "import { toUint8Array } from \"@smithy/util-utf8\";\nimport { Writable } from \"stream\";\nexport class HashCalculator extends Writable {\n hash;\n constructor(hash, options) {\n super(options);\n this.hash = hash;\n }\n _write(chunk, encoding, callback) {\n try {\n this.hash.update(toUint8Array(chunk));\n }\n catch (err) {\n return callback(err);\n }\n callback();\n }\n}\n",
118
- "import { HashCalculator } from \"./HashCalculator\";\nexport const readableStreamHasher = (hashCtor, readableStream) => {\n if (readableStream.readableFlowing !== null) {\n throw new Error(\"Unable to calculate hash for flowing readable stream\");\n }\n const hash = new hashCtor();\n const hashCalculator = new HashCalculator(hash);\n readableStream.pipe(hashCalculator);\n return new Promise((resolve, reject) => {\n readableStream.on(\"error\", (err) => {\n hashCalculator.end();\n reject(err);\n });\n hashCalculator.on(\"error\", reject);\n hashCalculator.on(\"finish\", () => {\n hash.digest().then(resolve).catch(reject);\n });\n });\n};\n",
119
- "import { AwsSdkSigV4ASigner, AwsSdkSigV4Signer } from \"@aws-sdk/core\";\nimport { AwsRestXmlProtocol } from \"@aws-sdk/core/protocols\";\nimport { SignatureV4MultiRegion } from \"@aws-sdk/signature-v4-multi-region\";\nimport { NoOpLogger } from \"@smithy/smithy-client\";\nimport { parseUrl } from \"@smithy/url-parser\";\nimport { fromBase64, toBase64 } from \"@smithy/util-base64\";\nimport { getAwsChunkedEncodingStream, sdkStreamMixin } from \"@smithy/util-stream\";\nimport { fromUtf8, toUtf8 } from \"@smithy/util-utf8\";\nimport { defaultS3HttpAuthSchemeProvider } from \"./auth/httpAuthSchemeProvider\";\nimport { defaultEndpointResolver } from \"./endpoint/endpointResolver\";\nimport { errorTypeRegistries } from \"./schemas/schemas_0\";\nexport const getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2006-03-01\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n getAwsChunkedEncodingStream: config?.getAwsChunkedEncodingStream ?? getAwsChunkedEncodingStream,\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultS3HttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"aws.auth#sigv4a\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4a\"),\n signer: new AwsSdkSigV4ASigner(),\n },\n ],\n logger: config?.logger ?? new NoOpLogger(),\n protocol: config?.protocol ?? AwsRestXmlProtocol,\n protocolSettings: config?.protocolSettings ?? {\n defaultNamespace: \"com.amazonaws.s3\",\n errorTypeRegistries,\n xmlNamespace: \"http://s3.amazonaws.com/doc/2006-03-01/\",\n version: \"2006-03-01\",\n serviceTarget: \"AmazonS3\",\n },\n sdkStreamMixin: config?.sdkStreamMixin ?? sdkStreamMixin,\n serviceId: config?.serviceId ?? \"S3\",\n signerConstructor: config?.signerConstructor ?? SignatureV4MultiRegion,\n signingEscapePath: config?.signingEscapePath ?? false,\n urlParser: config?.urlParser ?? parseUrl,\n useArnRegion: config?.useArnRegion ?? undefined,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n",
120
- "import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from \"@aws-sdk/region-config-resolver\";\nimport { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from \"@smithy/protocol-http\";\nimport { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from \"@smithy/smithy-client\";\nimport { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from \"./auth/httpAuthExtensionConfiguration\";\nexport const resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n",
121
- "export const getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nexport const resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\n",
122
- "export function ssecMiddleware(options) {\n return (next) => async (args) => {\n const input = { ...args.input };\n const properties = [\n {\n target: \"SSECustomerKey\",\n hash: \"SSECustomerKeyMD5\",\n },\n {\n target: \"CopySourceSSECustomerKey\",\n hash: \"CopySourceSSECustomerKeyMD5\",\n },\n ];\n for (const prop of properties) {\n const value = input[prop.target];\n if (value) {\n let valueForHash;\n if (typeof value === \"string\") {\n if (isValidBase64EncodedSSECustomerKey(value, options)) {\n valueForHash = options.base64Decoder(value);\n }\n else {\n valueForHash = options.utf8Decoder(value);\n input[prop.target] = options.base64Encoder(valueForHash);\n }\n }\n else {\n valueForHash = ArrayBuffer.isView(value)\n ? new Uint8Array(value.buffer, value.byteOffset, value.byteLength)\n : new Uint8Array(value);\n input[prop.target] = options.base64Encoder(valueForHash);\n }\n const hash = new options.md5();\n hash.update(valueForHash);\n input[prop.hash] = options.base64Encoder(await hash.digest());\n }\n }\n return next({\n ...args,\n input,\n });\n };\n}\nexport const ssecMiddlewareOptions = {\n name: \"ssecMiddleware\",\n step: \"initialize\",\n tags: [\"SSE\"],\n override: true,\n};\nexport const getSsecPlugin = (config) => ({\n applyToStack: (clientStack) => {\n clientStack.add(ssecMiddleware(config), ssecMiddlewareOptions);\n },\n});\nexport function isValidBase64EncodedSSECustomerKey(str, options) {\n const base64Regex = /^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n if (!base64Regex.test(str))\n return false;\n try {\n const decodedBytes = options.base64Decoder(str);\n return decodedBytes.length === 32;\n }\n catch {\n return false;\n }\n}\n",
123
- "import { getFlexibleChecksumsPlugin } from \"@aws-sdk/middleware-flexible-checksums\";\nimport { getS3ExpiresMiddlewarePlugin } from \"@aws-sdk/middleware-sdk-s3\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { GetObject$ } from \"../schemas/schemas_0\";\nexport { $Command };\nexport class GetObjectCommand extends $Command\n .classBuilder()\n .ep({\n ...commonParams,\n Bucket: { type: \"contextParams\", name: \"Bucket\" },\n Key: { type: \"contextParams\", name: \"Key\" },\n})\n .m(function (Command, cs, config, o) {\n return [\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n getFlexibleChecksumsPlugin(config, {\n requestChecksumRequired: false,\n requestValidationModeMember: 'ChecksumMode',\n 'responseAlgorithms': ['CRC64NVME', 'CRC32', 'CRC32C', 'SHA256', 'SHA1'],\n }),\n getSsecPlugin(config),\n getS3ExpiresMiddlewarePlugin(config),\n ];\n})\n .s(\"AmazonS3\", \"GetObject\", {})\n .n(\"S3Client\", \"GetObjectCommand\")\n .sc(GetObject$)\n .build() {\n}\n",
124
- "import { getThrow200ExceptionsPlugin } from \"@aws-sdk/middleware-sdk-s3\";\nimport { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListObjectsV2$ } from \"../schemas/schemas_0\";\nexport { $Command };\nexport class ListObjectsV2Command extends $Command\n .classBuilder()\n .ep({\n ...commonParams,\n Bucket: { type: \"contextParams\", name: \"Bucket\" },\n Prefix: { type: \"contextParams\", name: \"Prefix\" },\n})\n .m(function (Command, cs, config, o) {\n return [\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n getThrow200ExceptionsPlugin(config),\n ];\n})\n .s(\"AmazonS3\", \"ListObjectsV2\", {})\n .n(\"S3Client\", \"ListObjectsV2Command\")\n .sc(ListObjectsV2$)\n .build() {\n}\n",
125
- "import { getFlexibleChecksumsPlugin } from \"@aws-sdk/middleware-flexible-checksums\";\nimport { getCheckContentLengthHeaderPlugin, getThrow200ExceptionsPlugin } from \"@aws-sdk/middleware-sdk-s3\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { PutObject$ } from \"../schemas/schemas_0\";\nexport { $Command };\nexport class PutObjectCommand extends $Command\n .classBuilder()\n .ep({\n ...commonParams,\n Bucket: { type: \"contextParams\", name: \"Bucket\" },\n Key: { type: \"contextParams\", name: \"Key\" },\n})\n .m(function (Command, cs, config, o) {\n return [\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n getFlexibleChecksumsPlugin(config, {\n requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' },\n requestChecksumRequired: false,\n }),\n getCheckContentLengthHeaderPlugin(config),\n getThrow200ExceptionsPlugin(config),\n getSsecPlugin(config),\n ];\n})\n .s(\"AmazonS3\", \"PutObject\", {})\n .n(\"S3Client\", \"PutObjectCommand\")\n .sc(PutObject$)\n .build() {\n}\n",
126
- "import type { PutFileParams, ReadFileParams } from \"./types\";\n\nimport {\n GetObjectCommand,\n ListObjectsV2Command,\n PutObjectCommand,\n S3Client,\n} from \"@aws-sdk/client-s3\";\n\nimport { Buffer } from \"node:buffer\";\nimport { FileStorageDriver } from \"./FileStorageDriver\";\n\nexport class S3Driver extends FileStorageDriver {\n private client: S3Client;\n\n constructor(...config: ConstructorParameters<typeof S3Client>) {\n super();\n this.client = new S3Client(...config);\n }\n\n async put(params: PutFileParams | Blob) {\n let body: Blob | File | Buffer;\n let contentType: string;\n let name: string;\n let bucket = process.env.BUCKET_NAME;\n\n if (params instanceof Blob) {\n body = params;\n name = `${Bun.randomUUIDv7()}.${params.type.split(\"/\")[1].split(\";\")[0]}`;\n contentType = params.type;\n } else {\n body = params.body;\n name = params.name;\n bucket = params.bucket ?? bucket;\n contentType = params.contentType;\n }\n\n contentType =\n body instanceof Blob || body instanceof File ? body.type : undefined;\n\n const buffer =\n body instanceof Buffer\n ? body\n : body instanceof Blob || body instanceof File\n ? Buffer.from(await body.arrayBuffer())\n : \"\";\n\n await this.client.send(\n new PutObjectCommand({\n Bucket: bucket,\n Key: name,\n Body: buffer,\n ContentType: contentType,\n }),\n );\n\n return name;\n }\n\n async list(folder: string) {\n const result = await this.client.send(\n new ListObjectsV2Command({\n Bucket: process.env.BUCKET_NAME,\n Prefix: folder,\n }),\n );\n\n return result;\n }\n\n async fetch(params: ReadFileParams | string) {\n let bucket = process.env.BUCKET_NAME;\n let name: string | undefined;\n\n if (typeof params === \"string\") {\n name = params;\n } else {\n bucket = params.bucket ?? bucket;\n name = params.name;\n }\n\n if (!name) {\n throw new Error(\"Object name has to be specified\");\n }\n\n const result = await this.client.send(\n new GetObjectCommand({\n Bucket: bucket,\n Key: name,\n }),\n );\n\n return new Response(result.Body.transformToWebStream(), {\n headers: {\n \"Content-Type\": result.ContentType,\n \"Content-Length\": result.ContentLength.toString(),\n \"Cache-Control\": \"private, max-age=12000, must-revalidate\",\n \"Last-Modified\": result.LastModified?.toUTCString() || \"\",\n ETag: result.ETag || \"\",\n },\n });\n }\n}\n",
127
- "export abstract class RateLimiterDriver {\n abstract consume(userId: string, requestPath: string): number;\n}\n",
128
- "import { RateLimiterDriver } from \"./RateLimiterDriver\";\n\nexport class InMemoryRateLimiter extends RateLimiterDriver {\n requests: Map<string, { date: number; count: number }> = new Map();\n\n consume(id: string, path: string) {\n if (!this.requests.has(id)) {\n this.requests.set(id, { date: Date.now(), count: 1 });\n } else {\n const record = this.requests.get(id);\n const now = Date.now();\n if (now - record.date >= 1000 * 60) {\n this.requests.set(id, { date: now, count: 1 });\n } else {\n this.requests.set(id, { date: record.date, count: record.count + 1 });\n }\n }\n\n return this.requests.get(id).count;\n }\n}\n",
129
- "import { ServiceProvider } from \"../ServiceProvider\";\nimport { InMemoryRateLimiter } from \"./drivers/InMemoryRateLimiterDriver\";\nimport { RateLimiterDriver } from \"./drivers/RateLimiterDriver\";\n\nexport class RateLimiterServiceProvider extends ServiceProvider {\n driver: RateLimiterDriver = new InMemoryRateLimiter();\n\n boot() {}\n}\n",
130
- "var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\n\n// src/shared/render.ts\nimport * as ReactDomServer from \"react-dom/server\";\nimport { convert } from \"html-to-text\";\n\n// src/shared/utils/pretty.ts\nimport jsBeautify from \"js-beautify\";\nvar defaults = {\n unformatted: [\"code\", \"pre\", \"em\", \"strong\", \"span\"],\n indent_inner_html: true,\n indent_char: \" \",\n indent_size: 2,\n sep: \"\\n\"\n};\nvar pretty = (str, options = {}) => {\n return jsBeautify.html(str, __spreadValues(__spreadValues({}, defaults), options));\n};\n\n// src/shared/plain-text-selectors.ts\nvar plainTextSelectors = [\n { selector: \"img\", format: \"skip\" },\n { selector: \"#__react-email-preview\", format: \"skip\" },\n {\n selector: \"a\",\n options: { linkBrackets: false }\n }\n];\n\n// src/shared/render.ts\nvar render = (component, options) => {\n if (options == null ? void 0 : options.plainText) {\n return renderAsPlainText(component, options);\n }\n const doctype = '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">';\n const markup = ReactDomServer.renderToStaticMarkup(component);\n const document = `${doctype}${markup}`;\n if (options && options.pretty) {\n return pretty(document);\n }\n return document;\n};\nvar renderAsPlainText = (component, options) => {\n return convert(ReactDomServer.renderToStaticMarkup(component), __spreadValues({\n selectors: plainTextSelectors\n }, (options == null ? void 0 : options.plainText) === true ? options.htmlToTextOptions : {}));\n};\n\n// src/node/render-async.ts\nimport { Writable } from \"node:stream\";\nimport { convert as convert2 } from \"html-to-text\";\nvar decoder = new TextDecoder(\"utf-8\");\nvar readStream = (stream) => __async(void 0, null, function* () {\n let result = \"\";\n if (\"pipeTo\" in stream) {\n const writableStream = new WritableStream({\n write(chunk) {\n result += decoder.decode(chunk);\n }\n });\n yield stream.pipeTo(writableStream);\n } else {\n const writable = new Writable({\n write(chunk, _encoding, callback) {\n result += decoder.decode(chunk);\n callback();\n }\n });\n stream.pipe(writable);\n return new Promise((resolve, reject) => {\n writable.on(\"error\", reject);\n writable.on(\"close\", () => {\n resolve(result);\n });\n });\n }\n return result;\n});\nvar renderAsync = (component, options) => __async(void 0, null, function* () {\n const { default: reactDOMServer } = yield import(\"react-dom/server\");\n let html;\n if (Object.hasOwn(reactDOMServer, \"renderToReadableStream\")) {\n html = yield readStream(\n yield reactDOMServer.renderToReadableStream(component)\n );\n } else {\n yield new Promise((resolve, reject) => {\n const stream = reactDOMServer.renderToPipeableStream(component, {\n onAllReady() {\n return __async(this, null, function* () {\n html = yield readStream(stream);\n resolve();\n });\n },\n onError(error) {\n reject(error);\n }\n });\n });\n }\n if (options == null ? void 0 : options.plainText) {\n return convert2(html, __spreadValues({\n selectors: plainTextSelectors\n }, options.htmlToTextOptions));\n }\n const doctype = '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">';\n const document = `${doctype}${html.replace(/<!DOCTYPE.*?>/, \"\")}`;\n if (options == null ? void 0 : options.pretty) {\n return pretty(document);\n }\n return document;\n});\nexport {\n plainTextSelectors,\n render,\n renderAsync\n};\n",
131
- "/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n",
132
- "import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n",
133
- "import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n",
134
- "const e=/\\n/g;function n(n){const o=[...n.matchAll(e)].map((e=>e.index||0));o.unshift(-1);const s=t(o,0,o.length);return e=>r(s,e)}function t(e,n,r){if(r-n==1)return{offset:e[n],index:n+1};const o=Math.ceil((n+r)/2),s=t(e,n,o),l=t(e,o,r);return{offset:s.offset,low:s,high:l}}function r(e,n){return function(e){return Object.prototype.hasOwnProperty.call(e,\"index\")}(e)?{line:e.index,column:n-e.offset}:r(e.high.offset<n?e.high:e.low,n)}function o(e,t=\"\",r={}){const o=\"string\"!=typeof t?t:r,l=\"string\"==typeof t?t:\"\",c=e.map(s),f=!!o.lineNumbers;return function(e,t=0){const r=f?n(e):()=>({line:0,column:0});let o=t;const s=[];e:for(;o<e.length;){let n=!1;for(const t of c){t.regex.lastIndex=o;const c=t.regex.exec(e);if(c&&c[0].length>0){if(!t.discard){const e=r(o),n=\"string\"==typeof t.replace?c[0].replace(new RegExp(t.regex.source,t.regex.flags),t.replace):c[0];s.push({state:l,name:t.name,text:n,offset:o,len:c[0].length,line:e.line,column:e.column})}if(o=t.regex.lastIndex,n=!0,t.push){const n=t.push(e,o);s.push(...n.tokens),o=n.offset}if(t.pop)break e;break}}if(!n)break}return{tokens:s,offset:o,complete:e.length<=o}}}function s(e,n){return{...e,regex:l(e,n)}}function l(e,n){if(0===e.name.length)throw new Error(`Rule #${n} has empty name, which is not allowed.`);if(function(e){return Object.prototype.hasOwnProperty.call(e,\"regex\")}(e))return function(e){if(e.global)throw new Error(`Regular expression /${e.source}/${e.flags} contains the global flag, which is not allowed.`);return e.sticky?e:new RegExp(e.source,e.flags+\"y\")}(e.regex);if(function(e){return Object.prototype.hasOwnProperty.call(e,\"str\")}(e)){if(0===e.str.length)throw new Error(`Rule #${n} (\"${e.name}\") has empty \"str\" property, which is not allowed.`);return new RegExp(c(e.str),\"y\")}return new RegExp(c(e.name),\"y\")}function c(e){return e.replace(/[-[\\]{}()*+!<=:?./\\\\^$|#\\s,]/g,\"\\\\$&\")}export{o as createLexer};\n",
135
- "import { clamp, escapeWhitespace } from './util.mjs';\n\nfunction emit(value) {\n return (data, i) => ({\n matched: true,\n position: i,\n value: value\n });\n}\nfunction make(\nf) {\n return (data, i) => ({\n matched: true,\n position: i,\n value: f(data, i)\n });\n}\nfunction action(\nf) {\n return (data, i) => {\n f(data, i);\n return {\n matched: true,\n position: i,\n value: null\n };\n };\n}\nfunction fail(\ndata, i) {\n return { matched: false };\n}\nfunction error(message) {\n return (data, i) => {\n throw new Error((message instanceof Function) ? message(data, i) : message);\n };\n}\nfunction token(\nonToken,\nonEnd) {\n return (data, i) => {\n let position = i;\n let value = undefined;\n if (i < data.tokens.length) {\n value = onToken(data.tokens[i], data, i);\n if (value !== undefined) {\n position++;\n }\n }\n else {\n onEnd?.(data, i);\n }\n return (value === undefined)\n ? { matched: false }\n : {\n matched: true,\n position: position,\n value: value\n };\n };\n}\nfunction any(data, i) {\n return (i < data.tokens.length)\n ? {\n matched: true,\n position: i + 1,\n value: data.tokens[i]\n }\n : { matched: false };\n}\nfunction satisfy(\ntest) {\n return (data, i) => (i < data.tokens.length && test(data.tokens[i], data, i))\n ? {\n matched: true,\n position: i + 1,\n value: data.tokens[i]\n }\n : { matched: false };\n}\nfunction mapInner(r, f) {\n return (r.matched) ? ({\n matched: true,\n position: r.position,\n value: f(r.value, r.position)\n }) : r;\n}\nfunction mapOuter(r, f) {\n return (r.matched) ? f(r) : r;\n}\nfunction map(p, mapper) {\n return (data, i) => mapInner(p(data, i), (v, j) => mapper(v, data, i, j));\n}\nfunction map1(p,\nmapper) {\n return (data, i) => mapOuter(p(data, i), (m) => mapper(m, data, i));\n}\nfunction peek(p, f) {\n return (data, i) => {\n const r = p(data, i);\n f(r, data, i);\n return r;\n };\n}\nfunction option(p, def) {\n return (data, i) => {\n const r = p(data, i);\n return (r.matched)\n ? r\n : {\n matched: true,\n position: i,\n value: def\n };\n };\n}\nfunction not(p) {\n return (data, i) => {\n const r = p(data, i);\n return (r.matched)\n ? { matched: false }\n : {\n matched: true,\n position: i,\n value: true\n };\n };\n}\nfunction choice(...ps) {\n return (data, i) => {\n for (const p of ps) {\n const result = p(data, i);\n if (result.matched) {\n return result;\n }\n }\n return { matched: false };\n };\n}\nfunction otherwise(pa, pb) {\n return (data, i) => {\n const r1 = pa(data, i);\n return (r1.matched)\n ? r1\n : pb(data, i);\n };\n}\nfunction longest(...ps) {\n return (data, i) => {\n let match = undefined;\n for (const p of ps) {\n const result = p(data, i);\n if (result.matched && (!match || match.position < result.position)) {\n match = result;\n }\n }\n return match || { matched: false };\n };\n}\nfunction takeWhile(p,\ntest) {\n return (data, i) => {\n const values = [];\n let success = true;\n do {\n const r = p(data, i);\n if (r.matched && test(r.value, values.length + 1, data, i, r.position)) {\n values.push(r.value);\n i = r.position;\n }\n else {\n success = false;\n }\n } while (success);\n return {\n matched: true,\n position: i,\n value: values\n };\n };\n}\nfunction takeUntil(p,\ntest) {\n return takeWhile(p, (value, n, data, i, j) => !test(value, n, data, i, j));\n}\nfunction takeWhileP(pValue, pTest) {\n return takeWhile(pValue, (value, n, data, i) => pTest(data, i).matched);\n}\nfunction takeUntilP(pValue, pTest) {\n return takeWhile(pValue, (value, n, data, i) => !pTest(data, i).matched);\n}\nfunction many(p) {\n return takeWhile(p, () => true);\n}\nfunction many1(p) {\n return ab(p, many(p), (head, tail) => [head, ...tail]);\n}\nfunction ab(pa, pb, join) {\n return (data, i) => mapOuter(pa(data, i), (ma) => mapInner(pb(data, ma.position), (vb, j) => join(ma.value, vb, data, i, j)));\n}\nfunction left(pa, pb) {\n return ab(pa, pb, (va) => va);\n}\nfunction right(pa, pb) {\n return ab(pa, pb, (va, vb) => vb);\n}\nfunction abc(pa, pb, pc, join) {\n return (data, i) => mapOuter(pa(data, i), (ma) => mapOuter(pb(data, ma.position), (mb) => mapInner(pc(data, mb.position), (vc, j) => join(ma.value, mb.value, vc, data, i, j))));\n}\nfunction middle(pa, pb, pc) {\n return abc(pa, pb, pc, (ra, rb) => rb);\n}\nfunction all(...ps) {\n return (data, i) => {\n const result = [];\n let position = i;\n for (const p of ps) {\n const r1 = p(data, position);\n if (r1.matched) {\n result.push(r1.value);\n position = r1.position;\n }\n else {\n return { matched: false };\n }\n }\n return {\n matched: true,\n position: position,\n value: result\n };\n };\n}\nfunction skip(...ps) {\n return map(all(...ps), () => null);\n}\nfunction flatten(...ps) {\n return flatten1(all(...ps));\n}\nfunction flatten1(p) {\n return map(p, (vs) => vs.flatMap((v) => v));\n}\nfunction sepBy1(pValue, pSep) {\n return ab(pValue, many(right(pSep, pValue)), (head, tail) => [head, ...tail]);\n}\nfunction sepBy(pValue, pSep) {\n return otherwise(sepBy1(pValue, pSep), emit([]));\n}\nfunction chainReduce(acc,\nf) {\n return (data, i) => {\n let loop = true;\n let acc1 = acc;\n let pos = i;\n do {\n const r = f(acc1, data, pos)(data, pos);\n if (r.matched) {\n acc1 = r.value;\n pos = r.position;\n }\n else {\n loop = false;\n }\n } while (loop);\n return {\n matched: true,\n position: pos,\n value: acc1\n };\n };\n}\nfunction reduceLeft(acc, p,\nreducer) {\n return chainReduce(acc, (acc) => map(p, (v, data, i, j) => reducer(acc, v, data, i, j)));\n}\nfunction reduceRight(p, acc,\nreducer) {\n return map(many(p), (vs, data, i, j) => vs.reduceRight((acc, v) => reducer(v, acc, data, i, j), acc));\n}\nfunction leftAssoc1(pLeft, pOper) {\n return chain(pLeft, (v0) => reduceLeft(v0, pOper, (acc, f) => f(acc)));\n}\nfunction rightAssoc1(pOper, pRight) {\n return ab(reduceRight(pOper, (y) => y, (f, acc) => (y) => f(acc(y))), pRight, (f, v) => f(v));\n}\nfunction leftAssoc2(pLeft, pOper, pRight) {\n return chain(pLeft, (v0) => reduceLeft(v0, ab(pOper, pRight, (f, y) => [f, y]), (acc, [f, y]) => f(acc, y)));\n}\nfunction rightAssoc2(pLeft, pOper, pRight) {\n return ab(reduceRight(ab(pLeft, pOper, (x, f) => [x, f]), (y) => y, ([x, f], acc) => (y) => f(x, acc(y))), pRight, (f, v) => f(v));\n}\nfunction condition(cond, pTrue, pFalse) {\n return (data, i) => (cond(data, i))\n ? pTrue(data, i)\n : pFalse(data, i);\n}\nfunction decide(p) {\n return (data, i) => mapOuter(p(data, i), (m1) => m1.value(data, m1.position));\n}\nfunction chain(p,\nf) {\n return (data, i) => mapOuter(p(data, i), (m1) => f(m1.value, data, i, m1.position)(data, m1.position));\n}\nfunction ahead(p) {\n return (data, i) => mapOuter(p(data, i), (m1) => ({\n matched: true,\n position: i,\n value: m1.value\n }));\n}\nfunction recursive(f) {\n return function (data, i) {\n return f()(data, i);\n };\n}\nfunction start(data, i) {\n return (i !== 0)\n ? { matched: false }\n : {\n matched: true,\n position: i,\n value: true\n };\n}\nfunction end(data, i) {\n return (i < data.tokens.length)\n ? { matched: false }\n : {\n matched: true,\n position: i,\n value: true\n };\n}\nfunction remainingTokensNumber(data, i) {\n return data.tokens.length - i;\n}\nfunction parserPosition(data, i, formatToken, contextTokens = 3) {\n const len = data.tokens.length;\n const lowIndex = clamp(0, i - contextTokens, len - contextTokens);\n const highIndex = clamp(contextTokens, i + 1 + contextTokens, len);\n const tokensSlice = data.tokens.slice(lowIndex, highIndex);\n const lines = [];\n const indexWidth = String(highIndex - 1).length + 1;\n if (i < 0) {\n lines.push(`${String(i).padStart(indexWidth)} >>`);\n }\n if (0 < lowIndex) {\n lines.push('...'.padStart(indexWidth + 6));\n }\n for (let j = 0; j < tokensSlice.length; j++) {\n const index = lowIndex + j;\n lines.push(`${String(index).padStart(indexWidth)} ${(index === i ? '>' : ' ')} ${escapeWhitespace(formatToken(tokensSlice[j]))}`);\n }\n if (highIndex < len) {\n lines.push('...'.padStart(indexWidth + 6));\n }\n if (len <= i) {\n lines.push(`${String(i).padStart(indexWidth)} >>`);\n }\n return lines.join('\\n');\n}\nfunction parse(parser, tokens, options, formatToken = JSON.stringify) {\n const data = { tokens: tokens, options: options };\n const result = parser(data, 0);\n if (!result.matched) {\n throw new Error('No match');\n }\n if (result.position < data.tokens.length) {\n throw new Error(`Partial match. Parsing stopped at:\\n${parserPosition(data, result.position, formatToken)}`);\n }\n return result.value;\n}\nfunction tryParse(parser, tokens, options) {\n const result = parser({ tokens: tokens, options: options }, 0);\n return (result.matched)\n ? result.value\n : undefined;\n}\nfunction match(matcher, tokens, options) {\n const result = matcher({ tokens: tokens, options: options }, 0);\n return result.value;\n}\n\nexport { ab, abc, action, ahead, all, all as and, any, chain, chainReduce, choice, condition, decide, skip as discard, otherwise as eitherOr, emit, end, end as eof, error, fail, flatten, flatten1, left, leftAssoc1, leftAssoc2, longest, ahead as lookAhead, make, many, many1, map, map1, match, middle, not, emit as of, option, choice as or, otherwise, parse, parserPosition, peek, recursive, reduceLeft, reduceRight, remainingTokensNumber, right, rightAssoc1, rightAssoc2, satisfy, sepBy, sepBy1, skip, many1 as some, start, takeUntil, takeUntilP, takeWhile, takeWhileP, token, tryParse };\n",
136
- "import { createLexer } from 'leac';\nimport * as p from 'peberminta';\n\nvar ast = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst ws = `(?:[ \\\\t\\\\r\\\\n\\\\f]*)`;\nconst nl = `(?:\\\\n|\\\\r\\\\n|\\\\r|\\\\f)`;\nconst nonascii = `[^\\\\x00-\\\\x7F]`;\nconst unicode = `(?:\\\\\\\\[0-9a-f]{1,6}(?:\\\\r\\\\n|[ \\\\n\\\\r\\\\t\\\\f])?)`;\nconst escape = `(?:\\\\\\\\[^\\\\n\\\\r\\\\f0-9a-f])`;\nconst nmstart = `(?:[_a-z]|${nonascii}|${unicode}|${escape})`;\nconst nmchar = `(?:[_a-z0-9-]|${nonascii}|${unicode}|${escape})`;\nconst name = `(?:${nmchar}+)`;\nconst ident = `(?:[-]?${nmstart}${nmchar}*)`;\nconst string1 = `'([^\\\\n\\\\r\\\\f\\\\\\\\']|\\\\\\\\${nl}|${nonascii}|${unicode}|${escape})*'`;\nconst string2 = `\"([^\\\\n\\\\r\\\\f\\\\\\\\\"]|\\\\\\\\${nl}|${nonascii}|${unicode}|${escape})*\"`;\nconst lexSelector = createLexer([\n { name: 'ws', regex: new RegExp(ws) },\n { name: 'hash', regex: new RegExp(`#${name}`, 'i') },\n { name: 'ident', regex: new RegExp(ident, 'i') },\n { name: 'str1', regex: new RegExp(string1, 'i') },\n { name: 'str2', regex: new RegExp(string2, 'i') },\n { name: '*' },\n { name: '.' },\n { name: ',' },\n { name: '[' },\n { name: ']' },\n { name: '=' },\n { name: '>' },\n { name: '|' },\n { name: '+' },\n { name: '~' },\n { name: '^' },\n { name: '$' },\n]);\nconst lexEscapedString = createLexer([\n { name: 'unicode', regex: new RegExp(unicode, 'i') },\n { name: 'escape', regex: new RegExp(escape, 'i') },\n { name: 'any', regex: new RegExp('[\\\\s\\\\S]', 'i') }\n]);\nfunction sumSpec([a0, a1, a2], [b0, b1, b2]) {\n return [a0 + b0, a1 + b1, a2 + b2];\n}\nfunction sumAllSpec(ss) {\n return ss.reduce(sumSpec, [0, 0, 0]);\n}\nconst unicodeEscapedSequence_ = p.token((t) => t.name === 'unicode' ? String.fromCodePoint(parseInt(t.text.slice(1), 16)) : undefined);\nconst escapedSequence_ = p.token((t) => t.name === 'escape' ? t.text.slice(1) : undefined);\nconst anyChar_ = p.token((t) => t.name === 'any' ? t.text : undefined);\nconst escapedString_ = p.map(p.many(p.or(unicodeEscapedSequence_, escapedSequence_, anyChar_)), (cs) => cs.join(''));\nfunction unescape(escapedString) {\n const lexerResult = lexEscapedString(escapedString);\n const result = escapedString_({ tokens: lexerResult.tokens, options: undefined }, 0);\n return result.value;\n}\nfunction literal(name) {\n return p.token((t) => t.name === name ? true : undefined);\n}\nconst whitespace_ = p.token((t) => t.name === 'ws' ? null : undefined);\nconst optionalWhitespace_ = p.option(whitespace_, null);\nfunction optionallySpaced(parser) {\n return p.middle(optionalWhitespace_, parser, optionalWhitespace_);\n}\nconst identifier_ = p.token((t) => t.name === 'ident' ? unescape(t.text) : undefined);\nconst hashId_ = p.token((t) => t.name === 'hash' ? unescape(t.text.slice(1)) : undefined);\nconst string_ = p.token((t) => t.name.startsWith('str') ? unescape(t.text.slice(1, -1)) : undefined);\nconst namespace_ = p.left(p.option(identifier_, ''), literal('|'));\nconst qualifiedName_ = p.eitherOr(p.ab(namespace_, identifier_, (ns, name) => ({ name: name, namespace: ns })), p.map(identifier_, (name) => ({ name: name, namespace: null })));\nconst uniSelector_ = p.eitherOr(p.ab(namespace_, literal('*'), (ns) => ({ type: 'universal', namespace: ns, specificity: [0, 0, 0] })), p.map(literal('*'), () => ({ type: 'universal', namespace: null, specificity: [0, 0, 0] })));\nconst tagSelector_ = p.map(qualifiedName_, ({ name, namespace }) => ({\n type: 'tag',\n name: name,\n namespace: namespace,\n specificity: [0, 0, 1]\n}));\nconst classSelector_ = p.ab(literal('.'), identifier_, (fullstop, name) => ({\n type: 'class',\n name: name,\n specificity: [0, 1, 0]\n}));\nconst idSelector_ = p.map(hashId_, (name) => ({\n type: 'id',\n name: name,\n specificity: [1, 0, 0]\n}));\nconst attrModifier_ = p.token((t) => {\n if (t.name === 'ident') {\n if (t.text === 'i' || t.text === 'I') {\n return 'i';\n }\n if (t.text === 's' || t.text === 'S') {\n return 's';\n }\n }\n return undefined;\n});\nconst attrValue_ = p.eitherOr(p.ab(string_, p.option(p.right(optionalWhitespace_, attrModifier_), null), (v, mod) => ({ value: v, modifier: mod })), p.ab(identifier_, p.option(p.right(whitespace_, attrModifier_), null), (v, mod) => ({ value: v, modifier: mod })));\nconst attrMatcher_ = p.choice(p.map(literal('='), () => '='), p.ab(literal('~'), literal('='), () => '~='), p.ab(literal('|'), literal('='), () => '|='), p.ab(literal('^'), literal('='), () => '^='), p.ab(literal('$'), literal('='), () => '$='), p.ab(literal('*'), literal('='), () => '*='));\nconst attrPresenceSelector_ = p.abc(literal('['), optionallySpaced(qualifiedName_), literal(']'), (lbr, { name, namespace }) => ({\n type: 'attrPresence',\n name: name,\n namespace: namespace,\n specificity: [0, 1, 0]\n}));\nconst attrValueSelector_ = p.middle(literal('['), p.abc(optionallySpaced(qualifiedName_), attrMatcher_, optionallySpaced(attrValue_), ({ name, namespace }, matcher, { value, modifier }) => ({\n type: 'attrValue',\n name: name,\n namespace: namespace,\n matcher: matcher,\n value: value,\n modifier: modifier,\n specificity: [0, 1, 0]\n})), literal(']'));\nconst attrSelector_ = p.eitherOr(attrPresenceSelector_, attrValueSelector_);\nconst typeSelector_ = p.eitherOr(uniSelector_, tagSelector_);\nconst subclassSelector_ = p.choice(idSelector_, classSelector_, attrSelector_);\nconst compoundSelector_ = p.map(p.eitherOr(p.flatten(typeSelector_, p.many(subclassSelector_)), p.many1(subclassSelector_)), (ss) => {\n return {\n type: 'compound',\n list: ss,\n specificity: sumAllSpec(ss.map(s => s.specificity))\n };\n});\nconst combinator_ = p.choice(p.map(literal('>'), () => '>'), p.map(literal('+'), () => '+'), p.map(literal('~'), () => '~'), p.ab(literal('|'), literal('|'), () => '||'));\nconst combinatorSeparator_ = p.eitherOr(optionallySpaced(combinator_), p.map(whitespace_, () => ' '));\nconst complexSelector_ = p.leftAssoc2(compoundSelector_, p.map(combinatorSeparator_, (c) => (left, right) => ({\n type: 'compound',\n list: [...right.list, { type: 'combinator', combinator: c, left: left, specificity: left.specificity }],\n specificity: sumSpec(left.specificity, right.specificity)\n})), compoundSelector_);\nconst listSelector_ = p.leftAssoc2(p.map(complexSelector_, (s) => ({ type: 'list', list: [s] })), p.map(optionallySpaced(literal(',')), () => (acc, next) => ({ type: 'list', list: [...acc.list, next] })), complexSelector_);\nfunction parse_(parser, str) {\n if (!(typeof str === 'string' || str instanceof String)) {\n throw new Error('Expected a selector string. Actual input is not a string!');\n }\n const lexerResult = lexSelector(str);\n if (!lexerResult.complete) {\n throw new Error(`The input \"${str}\" was only partially tokenized, stopped at offset ${lexerResult.offset}!\\n` +\n prettyPrintPosition(str, lexerResult.offset));\n }\n const result = optionallySpaced(parser)({ tokens: lexerResult.tokens, options: undefined }, 0);\n if (!result.matched) {\n throw new Error(`No match for \"${str}\" input!`);\n }\n if (result.position < lexerResult.tokens.length) {\n const token = lexerResult.tokens[result.position];\n throw new Error(`The input \"${str}\" was only partially parsed, stopped at offset ${token.offset}!\\n` +\n prettyPrintPosition(str, token.offset, token.len));\n }\n return result.value;\n}\nfunction prettyPrintPosition(str, offset, len = 1) {\n return `${str.replace(/(\\t)|(\\r)|(\\n)/g, (m, t, r) => t ? '\\u2409' : r ? '\\u240d' : '\\u240a')}\\n${''.padEnd(offset)}${'^'.repeat(len)}`;\n}\nfunction parse(str) {\n return parse_(listSelector_, str);\n}\nfunction parse1(str) {\n return parse_(complexSelector_, str);\n}\n\nfunction serialize(selector) {\n if (!selector.type) {\n throw new Error('This is not an AST node.');\n }\n switch (selector.type) {\n case 'universal':\n return _serNs(selector.namespace) + '*';\n case 'tag':\n return _serNs(selector.namespace) + _serIdent(selector.name);\n case 'class':\n return '.' + _serIdent(selector.name);\n case 'id':\n return '#' + _serIdent(selector.name);\n case 'attrPresence':\n return `[${_serNs(selector.namespace)}${_serIdent(selector.name)}]`;\n case 'attrValue':\n return `[${_serNs(selector.namespace)}${_serIdent(selector.name)}${selector.matcher}\"${_serStr(selector.value)}\"${(selector.modifier ? selector.modifier : '')}]`;\n case 'combinator':\n return serialize(selector.left) + selector.combinator;\n case 'compound':\n return selector.list.reduce((acc, node) => {\n if (node.type === 'combinator') {\n return serialize(node) + acc;\n }\n else {\n return acc + serialize(node);\n }\n }, '');\n case 'list':\n return selector.list.map(serialize).join(',');\n }\n}\nfunction _serNs(ns) {\n return (ns || ns === '')\n ? _serIdent(ns) + '|'\n : '';\n}\nfunction _codePoint(char) {\n return `\\\\${char.codePointAt(0).toString(16)} `;\n}\nfunction _serIdent(str) {\n return str.replace(\n /(^[0-9])|(^-[0-9])|(^-$)|([-0-9a-zA-Z_]|[^\\x00-\\x7F])|(\\x00)|([\\x01-\\x1f]|\\x7f)|([\\s\\S])/g, (m, d1, d2, hy, safe, nl, ctrl, other) => d1 ? _codePoint(d1) :\n d2 ? '-' + _codePoint(d2.slice(1)) :\n hy ? '\\\\-' :\n safe ? safe :\n nl ? '\\ufffd' :\n ctrl ? _codePoint(ctrl) :\n '\\\\' + other);\n}\nfunction _serStr(str) {\n return str.replace(\n /(\")|(\\\\)|(\\x00)|([\\x01-\\x1f]|\\x7f)/g, (m, dq, bs, nl, ctrl) => dq ? '\\\\\"' :\n bs ? '\\\\\\\\' :\n nl ? '\\ufffd' :\n _codePoint(ctrl));\n}\nfunction normalize(selector) {\n if (!selector.type) {\n throw new Error('This is not an AST node.');\n }\n switch (selector.type) {\n case 'compound': {\n selector.list.forEach(normalize);\n selector.list.sort((a, b) => _compareArrays(_getSelectorPriority(a), _getSelectorPriority(b)));\n break;\n }\n case 'combinator': {\n normalize(selector.left);\n break;\n }\n case 'list': {\n selector.list.forEach(normalize);\n selector.list.sort((a, b) => (serialize(a) < serialize(b)) ? -1 : 1);\n break;\n }\n }\n return selector;\n}\nfunction _getSelectorPriority(selector) {\n switch (selector.type) {\n case 'universal':\n return [1];\n case 'tag':\n return [1];\n case 'id':\n return [2];\n case 'class':\n return [3, selector.name];\n case 'attrPresence':\n return [4, serialize(selector)];\n case 'attrValue':\n return [5, serialize(selector)];\n case 'combinator':\n return [15, serialize(selector)];\n }\n}\nfunction compareSelectors(a, b) {\n return _compareArrays(a.specificity, b.specificity);\n}\nfunction compareSpecificity(a, b) {\n return _compareArrays(a, b);\n}\nfunction _compareArrays(a, b) {\n if (!Array.isArray(a) || !Array.isArray(b)) {\n throw new Error('Arguments must be arrays.');\n }\n const shorter = (a.length < b.length) ? a.length : b.length;\n for (let i = 0; i < shorter; i++) {\n if (a[i] === b[i]) {\n continue;\n }\n return (a[i] < b[i]) ? -1 : 1;\n }\n return a.length - b.length;\n}\n\nexport { ast as Ast, compareSelectors, compareSpecificity, normalize, parse, parse1, serialize };\n",
137
- "import * as parseley from 'parseley';\nimport { compareSpecificity } from 'parseley';\n\nvar Ast = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nvar Types = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\nconst treeify = (nodes) => '▽\\n' + treeifyArray(nodes, thinLines);\nconst thinLines = [['├─', '│ '], ['└─', ' ']];\nconst heavyLines = [['┠─', '┃ '], ['┖─', ' ']];\nconst doubleLines = [['╟─', '║ '], ['╙─', ' ']];\nfunction treeifyArray(nodes, tpl = heavyLines) {\n return prefixItems(tpl, nodes.map(n => treeifyNode(n)));\n}\nfunction treeifyNode(node) {\n switch (node.type) {\n case 'terminal': {\n const vctr = node.valueContainer;\n return `◁ #${vctr.index} ${JSON.stringify(vctr.specificity)} ${vctr.value}`;\n }\n case 'tagName':\n return `◻ Tag name\\n${treeifyArray(node.variants, doubleLines)}`;\n case 'attrValue':\n return `▣ Attr value: ${node.name}\\n${treeifyArray(node.matchers, doubleLines)}`;\n case 'attrPresence':\n return `◨ Attr presence: ${node.name}\\n${treeifyArray(node.cont)}`;\n case 'pushElement':\n return `◉ Push element: ${node.combinator}\\n${treeifyArray(node.cont, thinLines)}`;\n case 'popElement':\n return `◌ Pop element\\n${treeifyArray(node.cont, thinLines)}`;\n case 'variant':\n return `◇ = ${node.value}\\n${treeifyArray(node.cont)}`;\n case 'matcher':\n return `◈ ${node.matcher} \"${node.value}\"${node.modifier || ''}\\n${treeifyArray(node.cont)}`;\n }\n}\nfunction prefixItems(tpl, items) {\n return items\n .map((item, i, { length }) => prefixItem(tpl, item, i === length - 1))\n .join('\\n');\n}\nfunction prefixItem(tpl, item, tail = true) {\n const tpl1 = tpl[tail ? 1 : 0];\n return tpl1[0] + item.split('\\n').join('\\n' + tpl1[1]);\n}\n\nvar TreeifyBuilder = /*#__PURE__*/Object.freeze({\n __proto__: null,\n treeify: treeify\n});\n\nclass DecisionTree {\n constructor(input) {\n this.branches = weave(toAstTerminalPairs(input));\n }\n build(builder) {\n return builder(this.branches);\n }\n}\nfunction toAstTerminalPairs(array) {\n const len = array.length;\n const results = new Array(len);\n for (let i = 0; i < len; i++) {\n const [selectorString, val] = array[i];\n const ast = preprocess(parseley.parse1(selectorString));\n results[i] = {\n ast: ast,\n terminal: {\n type: 'terminal',\n valueContainer: { index: i, value: val, specificity: ast.specificity }\n }\n };\n }\n return results;\n}\nfunction preprocess(ast) {\n reduceSelectorVariants(ast);\n parseley.normalize(ast);\n return ast;\n}\nfunction reduceSelectorVariants(ast) {\n const newList = [];\n ast.list.forEach(sel => {\n switch (sel.type) {\n case 'class':\n newList.push({\n matcher: '~=',\n modifier: null,\n name: 'class',\n namespace: null,\n specificity: sel.specificity,\n type: 'attrValue',\n value: sel.name,\n });\n break;\n case 'id':\n newList.push({\n matcher: '=',\n modifier: null,\n name: 'id',\n namespace: null,\n specificity: sel.specificity,\n type: 'attrValue',\n value: sel.name,\n });\n break;\n case 'combinator':\n reduceSelectorVariants(sel.left);\n newList.push(sel);\n break;\n case 'universal':\n break;\n default:\n newList.push(sel);\n break;\n }\n });\n ast.list = newList;\n}\nfunction weave(items) {\n const branches = [];\n while (items.length) {\n const topKind = findTopKey(items, (sel) => true, getSelectorKind);\n const { matches, nonmatches, empty } = breakByKind(items, topKind);\n items = nonmatches;\n if (matches.length) {\n branches.push(branchOfKind(topKind, matches));\n }\n if (empty.length) {\n branches.push(...terminate(empty));\n }\n }\n return branches;\n}\nfunction terminate(items) {\n const results = [];\n for (const item of items) {\n const terminal = item.terminal;\n if (terminal.type === 'terminal') {\n results.push(terminal);\n }\n else {\n const { matches, rest } = partition(terminal.cont, (node) => node.type === 'terminal');\n matches.forEach((node) => results.push(node));\n if (rest.length) {\n terminal.cont = rest;\n results.push(terminal);\n }\n }\n }\n return results;\n}\nfunction breakByKind(items, selectedKind) {\n const matches = [];\n const nonmatches = [];\n const empty = [];\n for (const item of items) {\n const simpsels = item.ast.list;\n if (simpsels.length) {\n const isMatch = simpsels.some(node => getSelectorKind(node) === selectedKind);\n (isMatch ? matches : nonmatches).push(item);\n }\n else {\n empty.push(item);\n }\n }\n return { matches, nonmatches, empty };\n}\nfunction getSelectorKind(sel) {\n switch (sel.type) {\n case 'attrPresence':\n return `attrPresence ${sel.name}`;\n case 'attrValue':\n return `attrValue ${sel.name}`;\n case 'combinator':\n return `combinator ${sel.combinator}`;\n default:\n return sel.type;\n }\n}\nfunction branchOfKind(kind, items) {\n if (kind === 'tag') {\n return tagNameBranch(items);\n }\n if (kind.startsWith('attrValue ')) {\n return attrValueBranch(kind.substring(10), items);\n }\n if (kind.startsWith('attrPresence ')) {\n return attrPresenceBranch(kind.substring(13), items);\n }\n if (kind === 'combinator >') {\n return combinatorBranch('>', items);\n }\n if (kind === 'combinator +') {\n return combinatorBranch('+', items);\n }\n throw new Error(`Unsupported selector kind: ${kind}`);\n}\nfunction tagNameBranch(items) {\n const groups = spliceAndGroup(items, (x) => x.type === 'tag', (x) => x.name);\n const variants = Object.entries(groups).map(([name, group]) => ({\n type: 'variant',\n value: name,\n cont: weave(group.items)\n }));\n return {\n type: 'tagName',\n variants: variants\n };\n}\nfunction attrPresenceBranch(name, items) {\n for (const item of items) {\n spliceSimpleSelector(item, (x) => (x.type === 'attrPresence') && (x.name === name));\n }\n return {\n type: 'attrPresence',\n name: name,\n cont: weave(items)\n };\n}\nfunction attrValueBranch(name, items) {\n const groups = spliceAndGroup(items, (x) => (x.type === 'attrValue') && (x.name === name), (x) => `${x.matcher} ${x.modifier || ''} ${x.value}`);\n const matchers = [];\n for (const group of Object.values(groups)) {\n const sel = group.oneSimpleSelector;\n const predicate = getAttrPredicate(sel);\n const continuation = weave(group.items);\n matchers.push({\n type: 'matcher',\n matcher: sel.matcher,\n modifier: sel.modifier,\n value: sel.value,\n predicate: predicate,\n cont: continuation\n });\n }\n return {\n type: 'attrValue',\n name: name,\n matchers: matchers\n };\n}\nfunction getAttrPredicate(sel) {\n if (sel.modifier === 'i') {\n const expected = sel.value.toLowerCase();\n switch (sel.matcher) {\n case '=':\n return (actual) => expected === actual.toLowerCase();\n case '~=':\n return (actual) => actual.toLowerCase().split(/[ \\t]+/).includes(expected);\n case '^=':\n return (actual) => actual.toLowerCase().startsWith(expected);\n case '$=':\n return (actual) => actual.toLowerCase().endsWith(expected);\n case '*=':\n return (actual) => actual.toLowerCase().includes(expected);\n case '|=':\n return (actual) => {\n const lower = actual.toLowerCase();\n return (expected === lower) || (lower.startsWith(expected) && lower[expected.length] === '-');\n };\n }\n }\n else {\n const expected = sel.value;\n switch (sel.matcher) {\n case '=':\n return (actual) => expected === actual;\n case '~=':\n return (actual) => actual.split(/[ \\t]+/).includes(expected);\n case '^=':\n return (actual) => actual.startsWith(expected);\n case '$=':\n return (actual) => actual.endsWith(expected);\n case '*=':\n return (actual) => actual.includes(expected);\n case '|=':\n return (actual) => (expected === actual) || (actual.startsWith(expected) && actual[expected.length] === '-');\n }\n }\n}\nfunction combinatorBranch(combinator, items) {\n const groups = spliceAndGroup(items, (x) => (x.type === 'combinator') && (x.combinator === combinator), (x) => parseley.serialize(x.left));\n const leftItems = [];\n for (const group of Object.values(groups)) {\n const rightCont = weave(group.items);\n const leftAst = group.oneSimpleSelector.left;\n leftItems.push({\n ast: leftAst,\n terminal: { type: 'popElement', cont: rightCont }\n });\n }\n return {\n type: 'pushElement',\n combinator: combinator,\n cont: weave(leftItems)\n };\n}\nfunction spliceAndGroup(items, predicate, keyCallback) {\n const groups = {};\n while (items.length) {\n const bestKey = findTopKey(items, predicate, keyCallback);\n const bestKeyPredicate = (sel) => predicate(sel) && keyCallback(sel) === bestKey;\n const hasBestKeyPredicate = (item) => item.ast.list.some(bestKeyPredicate);\n const { matches, rest } = partition1(items, hasBestKeyPredicate);\n let oneSimpleSelector = null;\n for (const item of matches) {\n const splicedNode = spliceSimpleSelector(item, bestKeyPredicate);\n if (!oneSimpleSelector) {\n oneSimpleSelector = splicedNode;\n }\n }\n if (oneSimpleSelector == null) {\n throw new Error('No simple selector is found.');\n }\n groups[bestKey] = { oneSimpleSelector: oneSimpleSelector, items: matches };\n items = rest;\n }\n return groups;\n}\nfunction spliceSimpleSelector(item, predicate) {\n const simpsels = item.ast.list;\n const matches = new Array(simpsels.length);\n let firstIndex = -1;\n for (let i = simpsels.length; i-- > 0;) {\n if (predicate(simpsels[i])) {\n matches[i] = true;\n firstIndex = i;\n }\n }\n if (firstIndex == -1) {\n throw new Error(`Couldn't find the required simple selector.`);\n }\n const result = simpsels[firstIndex];\n item.ast.list = simpsels.filter((sel, i) => !matches[i]);\n return result;\n}\nfunction findTopKey(items, predicate, keyCallback) {\n const candidates = {};\n for (const item of items) {\n const candidates1 = {};\n for (const node of item.ast.list.filter(predicate)) {\n candidates1[keyCallback(node)] = true;\n }\n for (const key of Object.keys(candidates1)) {\n if (candidates[key]) {\n candidates[key]++;\n }\n else {\n candidates[key] = 1;\n }\n }\n }\n let topKind = '';\n let topCounter = 0;\n for (const entry of Object.entries(candidates)) {\n if (entry[1] > topCounter) {\n topKind = entry[0];\n topCounter = entry[1];\n }\n }\n return topKind;\n}\nfunction partition(src, predicate) {\n const matches = [];\n const rest = [];\n for (const x of src) {\n if (predicate(x)) {\n matches.push(x);\n }\n else {\n rest.push(x);\n }\n }\n return { matches, rest };\n}\nfunction partition1(src, predicate) {\n const matches = [];\n const rest = [];\n for (const x of src) {\n if (predicate(x)) {\n matches.push(x);\n }\n else {\n rest.push(x);\n }\n }\n return { matches, rest };\n}\n\nclass Picker {\n constructor(f) {\n this.f = f;\n }\n pickAll(el) {\n return this.f(el);\n }\n pick1(el, preferFirst = false) {\n const results = this.f(el);\n const len = results.length;\n if (len === 0) {\n return null;\n }\n if (len === 1) {\n return results[0].value;\n }\n const comparator = (preferFirst)\n ? comparatorPreferFirst\n : comparatorPreferLast;\n let result = results[0];\n for (let i = 1; i < len; i++) {\n const next = results[i];\n if (comparator(result, next)) {\n result = next;\n }\n }\n return result.value;\n }\n}\nfunction comparatorPreferFirst(acc, next) {\n const diff = compareSpecificity(next.specificity, acc.specificity);\n return diff > 0 || (diff === 0 && next.index < acc.index);\n}\nfunction comparatorPreferLast(acc, next) {\n const diff = compareSpecificity(next.specificity, acc.specificity);\n return diff > 0 || (diff === 0 && next.index > acc.index);\n}\n\nexport { Ast, DecisionTree, Picker, TreeifyBuilder as Treeify, Types };\n",
138
- "import { isTag } from 'domhandler';\nimport { Picker } from 'selderee';\n\nfunction hp2Builder(nodes) {\n return new Picker(handleArray(nodes));\n}\nfunction handleArray(nodes) {\n const matchers = nodes.map(handleNode);\n return (el, ...tail) => matchers.flatMap(m => m(el, ...tail));\n}\nfunction handleNode(node) {\n switch (node.type) {\n case 'terminal': {\n const result = [node.valueContainer];\n return (el, ...tail) => result;\n }\n case 'tagName':\n return handleTagName(node);\n case 'attrValue':\n return handleAttrValueName(node);\n case 'attrPresence':\n return handleAttrPresenceName(node);\n case 'pushElement':\n return handlePushElementNode(node);\n case 'popElement':\n return handlePopElementNode(node);\n }\n}\nfunction handleTagName(node) {\n const variants = {};\n for (const variant of node.variants) {\n variants[variant.value] = handleArray(variant.cont);\n }\n return (el, ...tail) => {\n const continuation = variants[el.name];\n return (continuation) ? continuation(el, ...tail) : [];\n };\n}\nfunction handleAttrPresenceName(node) {\n const attrName = node.name;\n const continuation = handleArray(node.cont);\n return (el, ...tail) => (Object.prototype.hasOwnProperty.call(el.attribs, attrName))\n ? continuation(el, ...tail)\n : [];\n}\nfunction handleAttrValueName(node) {\n const callbacks = [];\n for (const matcher of node.matchers) {\n const predicate = matcher.predicate;\n const continuation = handleArray(matcher.cont);\n callbacks.push((attr, el, ...tail) => (predicate(attr) ? continuation(el, ...tail) : []));\n }\n const attrName = node.name;\n return (el, ...tail) => {\n const attr = el.attribs[attrName];\n return (attr || attr === '')\n ? callbacks.flatMap(cb => cb(attr, el, ...tail))\n : [];\n };\n}\nfunction handlePushElementNode(node) {\n const continuation = handleArray(node.cont);\n const leftElementGetter = (node.combinator === '+')\n ? getPrecedingElement\n : getParentElement;\n return (el, ...tail) => {\n const next = leftElementGetter(el);\n if (next === null) {\n return [];\n }\n return continuation(next, el, ...tail);\n };\n}\nconst getPrecedingElement = (el) => {\n const prev = el.prev;\n if (prev === null) {\n return null;\n }\n return (isTag(prev)) ? prev : getPrecedingElement(prev);\n};\nconst getParentElement = (el) => {\n const parent = el.parent;\n return (parent && isTag(parent)) ? parent : null;\n};\nfunction handlePopElementNode(node) {\n const continuation = handleArray(node.cont);\n return (el, next, ...tail) => continuation(next, ...tail);\n}\n\nexport { hp2Builder };\n",
139
- "// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map",
140
- "// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map",
141
- "// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map",
142
- "import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map",
143
- "import { htmlDecodeTree, xmlDecodeTree, BinTrieFlags, determineBranch, replaceCodePoint, } from \"entities/lib/decode.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"SpecialStartSequence\"] = 23] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 24] = \"InSpecialTag\";\n State[State[\"BeforeEntity\"] = 25] = \"BeforeEntity\";\n State[State[\"BeforeNumericEntity\"] = 26] = \"BeforeNumericEntity\";\n State[State[\"InNamedEntity\"] = 27] = \"InNamedEntity\";\n State[State[\"InNumericEntity\"] = 28] = \"InNumericEntity\";\n State[State[\"InHexEntity\"] = 29] = \"InHexEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isNumber(c) {\n return c >= CharCodes.Zero && c <= CharCodes.Nine;\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nfunction isHexDigit(c) {\n return ((c >= CharCodes.UpperA && c <= CharCodes.UpperF) ||\n (c >= CharCodes.LowerA && c <= CharCodes.LowerF));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]),\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]),\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]),\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]),\n StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]),\n TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`\n};\nexport default class Tokenizer {\n constructor({ xmlMode = false, decodeEntities = true, }, cbs) {\n this.cbs = cbs;\n /** The current state the tokenizer is in. */\n this.state = State.Text;\n /** The read buffer. */\n this.buffer = \"\";\n /** The beginning of the section that is currently being read. */\n this.sectionStart = 0;\n /** The index within the buffer that we are currently looking at. */\n this.index = 0;\n /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n this.baseState = State.Text;\n /** For special parsing behavior inside of script and style tags. */\n this.isSpecial = false;\n /** Indicates whether the tokenizer has been paused. */\n this.running = true;\n /** The offset of the current buffer. */\n this.offset = 0;\n this.currentSequence = undefined;\n this.sequenceIndex = 0;\n this.trieIndex = 0;\n this.trieCurrent = 0;\n /** For named entities, the index of the value. For numeric entities, the code point. */\n this.entityResult = 0;\n this.entityExcess = 0;\n this.xmlMode = xmlMode;\n this.decodeEntities = decodeEntities;\n this.entityTrie = xmlMode ? xmlDecodeTree : htmlDecodeTree;\n }\n reset() {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined;\n this.running = true;\n this.offset = 0;\n }\n write(chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n end() {\n if (this.running)\n this.finish();\n }\n pause() {\n this.running = false;\n }\n resume() {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n /**\n * The current index within all of the written data.\n */\n getIndex() {\n return this.index;\n }\n /**\n * The start of the current section.\n */\n getSectionStart() {\n return this.sectionStart;\n }\n stateText(c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.state = State.BeforeEntity;\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For <title> tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.state = State.BeforeEntity;\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this.state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? State.BeforeSpecialS\n : State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeEntity(c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === CharCodes.Number) {\n this.state = State.BeforeNumericEntity;\n }\n else if (c === CharCodes.Amp) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n }\n stateInNamedEntity(c) {\n this.entityExcess += 1;\n this.trieIndex = determineBranch(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n const masked = this.trieCurrent & BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {\n this.trieIndex += valueLength;\n }\n else {\n // Add 1 as we have already incremented the excess\n const entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) {\n this.emitNamedEntity();\n }\n }\n }\n }\n emitNamedEntity() {\n this.state = this.baseState;\n if (this.entityResult === 0) {\n return;\n }\n const valueLength = (this.entityTrie[this.entityResult] & BinTrieFlags.VALUE_LENGTH) >>\n 14;\n switch (valueLength) {\n case 1: {\n this.emitCodePoint(this.entityTrie[this.entityResult] &\n ~BinTrieFlags.VALUE_LENGTH);\n break;\n }\n case 2: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n }\n case 3: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n }\n stateBeforeNumericEntity(c) {\n if ((c | 0x20) === CharCodes.LowerX) {\n this.entityExcess++;\n this.state = State.InHexEntity;\n }\n else {\n this.state = State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n }\n emitNumericEntity(strict) {\n const entityStart = this.index - this.entityExcess - 1;\n const numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint(replaceCodePoint(this.entityResult));\n }\n this.state = this.baseState;\n }\n stateInNumericEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n stateInHexEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else if (isHexDigit(c)) {\n this.entityResult =\n this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n allowLegacyEntity() {\n return (!this.xmlMode &&\n (this.baseState === State.Text ||\n this.baseState === State.InSpecialTag));\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InNamedEntity: {\n this.stateInNamedEntity(c);\n break;\n }\n case State.BeforeEntity: {\n this.stateBeforeEntity(c);\n break;\n }\n case State.InHexEntity: {\n this.stateInHexEntity(c);\n break;\n }\n case State.InNumericEntity: {\n this.stateInNumericEntity(c);\n break;\n }\n default: {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InNamedEntity) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InNumericEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InHexEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitPartial(start, endIndex) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribdata(start, endIndex);\n }\n else {\n this.cbs.ontext(start, endIndex);\n }\n }\n emitCodePoint(cp) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribentity(cp);\n }\n else {\n this.cbs.ontextentity(cp);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map",
144
- "import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.foreignContext = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;\n this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer)(this.options, this);\n (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp) {\n var _a, _b;\n /*\n * Entities can be emitted on the character, or directly after.\n * We use the section start here to get accurate indices.\n */\n const index = this.tokenizer.getSectionStart();\n this.endIndex = index - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = index;\n }\n isVoidElement(name) {\n return !this.options.xmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = !this.options.xmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 &&\n impliesClose.has(this.stack[this.stack.length - 1])) {\n const element = this.stack.pop();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.push(name);\n if (foreignContextElements.has(name)) {\n this.foreignContext.push(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.push(false);\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name)) {\n this.foreignContext.pop();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this.cbs.onclosetag) {\n let count = this.stack.length - pos;\n while (count--) {\n // We know the stack has sufficient elements.\n this.cbs.onclosetag(this.stack.pop(), count !== 0);\n }\n }\n else\n this.stack.length = pos;\n }\n else if (!this.options.xmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (!this.options.xmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, \"br\");\n (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\", {}, true);\n (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.options.xmlMode ||\n this.options.recognizeSelfClosing ||\n this.foreignContext[this.foreignContext.length - 1]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[this.stack.length - 1] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.pop();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (this.options.xmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = this.stack.length; index > 0; this.cbs.onclosetag(this.stack[--index], true))\n ;\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map",
145
- "export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \"&quot;\"],\n [38, \"&amp;\"],\n [39, \"&apos;\"],\n [60, \"&lt;\"],\n [62, \"&gt;\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \"&quot;\"],\n [38, \"&amp;\"],\n [160, \"&nbsp;\"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&amp;\"],\n [60, \"&lt;\"],\n [62, \"&gt;\"],\n [160, \"&nbsp;\"],\n]));\n//# sourceMappingURL=escape.js.map",
146
- "import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(data, mode);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n var _a;\n const opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict);\n return decode(data, opts);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map",
147
- "export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n",
148
- "/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \"&quot;\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n",
149
- "import { Parser } from \"./Parser.js\";\nexport { Parser } from \"./Parser.js\";\nimport { DomHandler, } from \"domhandler\";\nexport { DomHandler, \n// Old name for DomHandler\nDomHandler as DefaultHandler, } from \"domhandler\";\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n */\nexport function parseDocument(data, options) {\n const handler = new DomHandler(undefined, options);\n new Parser(handler, options).end(data);\n return handler.root;\n}\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n * @deprecated Use `parseDocument` instead.\n */\nexport function parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed.\n * @param options Optional options for the parser and DOM builder.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDomStream(callback, options, elementCallback) {\n const handler = new DomHandler(callback, options, elementCallback);\n return new Parser(handler, options);\n}\nexport { default as Tokenizer, } from \"./Tokenizer.js\";\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexport * as ElementType from \"domelementtype\";\nimport { getFeed } from \"domutils\";\nexport { getFeed } from \"domutils\";\nconst parseFeedDefaultOptions = { xmlMode: true };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nexport function parseFeed(feed, options = parseFeedDefaultOptions) {\n return getFeed(parseDOM(feed, options));\n}\nexport * as DomUtils from \"domutils\";\n//# sourceMappingURL=index.js.map",
150
- "import { hp2Builder } from '@selderee/plugin-htmlparser2';\nimport { parseDocument } from 'htmlparser2';\nimport { DecisionTree } from 'selderee';\nimport merge from 'deepmerge';\nimport { render } from 'dom-serializer';\n\n/**\n * Make a recursive function that will only run to a given depth\n * and switches to an alternative function at that depth. \\\n * No limitation if `n` is `undefined` (Just wraps `f` in that case).\n *\n * @param { number | undefined } n Allowed depth of recursion. `undefined` for no limitation.\n * @param { Function } f Function that accepts recursive callback as the first argument.\n * @param { Function } [g] Function to run instead, when maximum depth was reached. Do nothing by default.\n * @returns { Function }\n */\nfunction limitedDepthRecursive (n, f, g = () => undefined) {\n if (n === undefined) {\n const f1 = function (...args) { return f(f1, ...args); };\n return f1;\n }\n if (n >= 0) {\n return function (...args) { return f(limitedDepthRecursive(n - 1, f, g), ...args); };\n }\n return g;\n}\n\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from each side.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */\nfunction trimCharacter (str, char) {\n let start = 0;\n let end = str.length;\n while (start < end && str[start] === char) { ++start; }\n while (end > start && str[end - 1] === char) { --end; }\n return (start > 0 || end < str.length)\n ? str.substring(start, end)\n : str;\n}\n\n/**\n * Return the same string or a substring with\n * the given character occurrences removed from the end only.\n *\n * @param { string } str A string to trim.\n * @param { string } char A character to be trimmed.\n * @returns { string }\n */\nfunction trimCharacterEnd (str, char) {\n let end = str.length;\n while (end > 0 && str[end - 1] === char) { --end; }\n return (end < str.length)\n ? str.substring(0, end)\n : str;\n}\n\n/**\n * Return a new string will all characters replaced with unicode escape sequences.\n * This extreme kind of escaping can used to be safely compose regular expressions.\n *\n * @param { string } str A string to escape.\n * @returns { string } A string of unicode escape sequences.\n */\nfunction unicodeEscape (str) {\n return str.replace(/[\\s\\S]/g, c => '\\\\u' + c.charCodeAt().toString(16).padStart(4, '0'));\n}\n\n/**\n * Deduplicate an array by a given key callback.\n * Item properties are merged recursively and with the preference for last defined values.\n * Of items with the same key, merged item takes the place of the last item,\n * others are omitted.\n *\n * @param { any[] } items An array to deduplicate.\n * @param { (x: any) => string } getKey Callback to get a value that distinguishes unique items.\n * @returns { any[] }\n */\nfunction mergeDuplicatesPreferLast (items, getKey) {\n const map = new Map();\n for (let i = items.length; i-- > 0;) {\n const item = items[i];\n const key = getKey(item);\n map.set(\n key,\n (map.has(key))\n ? merge(item, map.get(key), { arrayMerge: overwriteMerge$1 })\n : item\n );\n }\n return [...map.values()].reverse();\n}\n\nconst overwriteMerge$1 = (acc, src, options) => [...src];\n\n/**\n * Get a nested property from an object.\n *\n * @param { object } obj The object to query for the value.\n * @param { string[] } path The path to the property.\n * @returns { any }\n */\nfunction get (obj, path) {\n for (const key of path) {\n if (!obj) { return undefined; }\n obj = obj[key];\n }\n return obj;\n}\n\n/**\n * Convert a number into alphabetic sequence representation (Sequence without zeroes).\n *\n * For example: `a, ..., z, aa, ..., zz, aaa, ...`.\n *\n * @param { number } num Number to convert. Must be >= 1.\n * @param { string } [baseChar = 'a'] Character for 1 in the sequence.\n * @param { number } [base = 26] Number of characters in the sequence.\n * @returns { string }\n */\nfunction numberToLetterSequence (num, baseChar = 'a', base = 26) {\n const digits = [];\n do {\n num -= 1;\n digits.push(num % base);\n num = (num / base) >> 0; // quick `floor`\n } while (num > 0);\n const baseCode = baseChar.charCodeAt(0);\n return digits\n .reverse()\n .map(n => String.fromCharCode(baseCode + n))\n .join('');\n}\n\nconst I = ['I', 'X', 'C', 'M'];\nconst V = ['V', 'L', 'D'];\n\n/**\n * Convert a number to it's Roman representation. No large numbers extension.\n *\n * @param { number } num Number to convert. `0 < num <= 3999`.\n * @returns { string }\n */\nfunction numberToRoman (num) {\n return [...(num) + '']\n .map(n => +n)\n .reverse()\n .map((v, i) => ((v % 5 < 4)\n ? (v < 5 ? '' : V[i]) + I[i].repeat(v % 5)\n : I[i] + (v < 5 ? V[i] : I[i + 1])))\n .reverse()\n .join('');\n}\n\n/**\n * Helps to build text from words.\n */\nclass InlineTextBuilder {\n /**\n * Creates an instance of InlineTextBuilder.\n *\n * If `maxLineLength` is not provided then it is either `options.wordwrap` or unlimited.\n *\n * @param { Options } options HtmlToText options.\n * @param { number } [ maxLineLength ] This builder will try to wrap text to fit this line length.\n */\n constructor (options, maxLineLength = undefined) {\n /** @type { string[][] } */\n this.lines = [];\n /** @type { string[] } */\n this.nextLineWords = [];\n this.maxLineLength = maxLineLength || options.wordwrap || Number.MAX_VALUE;\n this.nextLineAvailableChars = this.maxLineLength;\n this.wrapCharacters = get(options, ['longWordSplit', 'wrapCharacters']) || [];\n this.forceWrapOnLimit = get(options, ['longWordSplit', 'forceWrapOnLimit']) || false;\n\n this.stashedSpace = false;\n this.wordBreakOpportunity = false;\n }\n\n /**\n * Add a new word.\n *\n * @param { string } word A word to add.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n pushWord (word, noWrap = false) {\n if (this.nextLineAvailableChars <= 0 && !noWrap) {\n this.startNewLine();\n }\n const isLineStart = this.nextLineWords.length === 0;\n const cost = word.length + (isLineStart ? 0 : 1);\n if ((cost <= this.nextLineAvailableChars) || noWrap) { // Fits into available budget\n\n this.nextLineWords.push(word);\n this.nextLineAvailableChars -= cost;\n\n } else { // Does not fit - try to split the word\n\n // The word is moved to a new line - prefer to wrap between words.\n const [first, ...rest] = this.splitLongWord(word);\n if (!isLineStart) { this.startNewLine(); }\n this.nextLineWords.push(first);\n this.nextLineAvailableChars -= first.length;\n for (const part of rest) {\n this.startNewLine();\n this.nextLineWords.push(part);\n this.nextLineAvailableChars -= part.length;\n }\n\n }\n }\n\n /**\n * Pop a word from the currently built line.\n * This doesn't affect completed lines.\n *\n * @returns { string }\n */\n popWord () {\n const lastWord = this.nextLineWords.pop();\n if (lastWord !== undefined) {\n const isLineStart = this.nextLineWords.length === 0;\n const cost = lastWord.length + (isLineStart ? 0 : 1);\n this.nextLineAvailableChars += cost;\n }\n return lastWord;\n }\n\n /**\n * Concat a word to the last word already in the builder.\n * Adds a new word in case there are no words yet in the last line.\n *\n * @param { string } word A word to be concatenated.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n concatWord (word, noWrap = false) {\n if (this.wordBreakOpportunity && word.length > this.nextLineAvailableChars) {\n this.pushWord(word, noWrap);\n this.wordBreakOpportunity = false;\n } else {\n const lastWord = this.popWord();\n this.pushWord((lastWord) ? lastWord.concat(word) : word, noWrap);\n }\n }\n\n /**\n * Add current line (and more empty lines if provided argument > 1) to the list of complete lines and start a new one.\n *\n * @param { number } n Number of line breaks that will be added to the resulting string.\n */\n startNewLine (n = 1) {\n this.lines.push(this.nextLineWords);\n if (n > 1) {\n this.lines.push(...Array.from({ length: n - 1 }, () => []));\n }\n this.nextLineWords = [];\n this.nextLineAvailableChars = this.maxLineLength;\n }\n\n /**\n * No words in this builder.\n *\n * @returns { boolean }\n */\n isEmpty () {\n return this.lines.length === 0\n && this.nextLineWords.length === 0;\n }\n\n clear () {\n this.lines.length = 0;\n this.nextLineWords.length = 0;\n this.nextLineAvailableChars = this.maxLineLength;\n }\n\n /**\n * Join all lines of words inside the InlineTextBuilder into a complete string.\n *\n * @returns { string }\n */\n toString () {\n return [...this.lines, this.nextLineWords]\n .map(words => words.join(' '))\n .join('\\n');\n }\n\n /**\n * Split a long word up to fit within the word wrap limit.\n * Use either a character to split looking back from the word wrap limit,\n * or truncate to the word wrap limit.\n *\n * @param { string } word Input word.\n * @returns { string[] } Parts of the word.\n */\n splitLongWord (word) {\n const parts = [];\n let idx = 0;\n while (word.length > this.maxLineLength) {\n\n const firstLine = word.substring(0, this.maxLineLength);\n const remainingChars = word.substring(this.maxLineLength);\n\n const splitIndex = firstLine.lastIndexOf(this.wrapCharacters[idx]);\n\n if (splitIndex > -1) { // Found a character to split on\n\n word = firstLine.substring(splitIndex + 1) + remainingChars;\n parts.push(firstLine.substring(0, splitIndex + 1));\n\n } else { // Not found a character to split on\n\n idx++;\n if (idx < this.wrapCharacters.length) { // There is next character to try\n\n word = firstLine + remainingChars;\n\n } else { // No more characters to try\n\n if (this.forceWrapOnLimit) {\n parts.push(firstLine);\n word = remainingChars;\n if (word.length > this.maxLineLength) {\n continue;\n }\n } else {\n word = firstLine + remainingChars;\n }\n break;\n\n }\n\n }\n\n }\n parts.push(word); // Add remaining part to array\n return parts;\n }\n}\n\n/* eslint-disable max-classes-per-file */\n\n\nclass StackItem {\n constructor (next = null) { this.next = next; }\n\n getRoot () { return (this.next) ? this.next : this; }\n}\n\nclass BlockStackItem extends StackItem {\n constructor (options, next = null, leadingLineBreaks = 1, maxLineLength = undefined) {\n super(next);\n this.leadingLineBreaks = leadingLineBreaks;\n this.inlineTextBuilder = new InlineTextBuilder(options, maxLineLength);\n this.rawText = '';\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass ListStackItem extends BlockStackItem {\n constructor (\n options,\n next = null,\n {\n interRowLineBreaks = 1,\n leadingLineBreaks = 2,\n maxLineLength = undefined,\n maxPrefixLength = 0,\n prefixAlign = 'left',\n } = {}\n ) {\n super(options, next, leadingLineBreaks, maxLineLength);\n this.maxPrefixLength = maxPrefixLength;\n this.prefixAlign = prefixAlign;\n this.interRowLineBreaks = interRowLineBreaks;\n }\n}\n\nclass ListItemStackItem extends BlockStackItem {\n constructor (\n options,\n next = null,\n {\n leadingLineBreaks = 1,\n maxLineLength = undefined,\n prefix = '',\n } = {}\n ) {\n super(options, next, leadingLineBreaks, maxLineLength);\n this.prefix = prefix;\n }\n}\n\nclass TableStackItem extends StackItem {\n constructor (next = null) {\n super(next);\n this.rows = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TableRowStackItem extends StackItem {\n constructor (next = null) {\n super(next);\n this.cells = [];\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TableCellStackItem extends StackItem {\n constructor (options, next = null, maxColumnWidth = undefined) {\n super(next);\n this.inlineTextBuilder = new InlineTextBuilder(options, maxColumnWidth);\n this.rawText = '';\n this.stashedLineBreaks = 0;\n this.isPre = next && next.isPre;\n this.isNoWrap = next && next.isNoWrap;\n }\n}\n\nclass TransformerStackItem extends StackItem {\n constructor (next = null, transform) {\n super(next);\n this.transform = transform;\n }\n}\n\nfunction charactersToCodes (str) {\n return [...str]\n .map(c => '\\\\u' + c.charCodeAt(0).toString(16).padStart(4, '0'))\n .join('');\n}\n\n/**\n * Helps to handle HTML whitespaces.\n *\n * @class WhitespaceProcessor\n */\nclass WhitespaceProcessor {\n\n /**\n * Creates an instance of WhitespaceProcessor.\n *\n * @param { Options } options HtmlToText options.\n * @memberof WhitespaceProcessor\n */\n constructor (options) {\n this.whitespaceChars = (options.preserveNewlines)\n ? options.whitespaceCharacters.replace(/\\n/g, '')\n : options.whitespaceCharacters;\n const whitespaceCodes = charactersToCodes(this.whitespaceChars);\n this.leadingWhitespaceRe = new RegExp(`^[${whitespaceCodes}]`);\n this.trailingWhitespaceRe = new RegExp(`[${whitespaceCodes}]$`);\n this.allWhitespaceOrEmptyRe = new RegExp(`^[${whitespaceCodes}]*$`);\n this.newlineOrNonWhitespaceRe = new RegExp(`(\\\\n|[^\\\\n${whitespaceCodes}])`, 'g');\n this.newlineOrNonNewlineStringRe = new RegExp(`(\\\\n|[^\\\\n]+)`, 'g');\n\n if (options.preserveNewlines) {\n\n const wordOrNewlineRe = new RegExp(`\\\\n|[^\\\\n${whitespaceCodes}]+`, 'gm');\n\n /**\n * Shrink whitespaces and wrap text, add to the builder.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { (str: string) => string } [ transform ] A transform to be applied to words.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n this.shrinkWrapAdd = function (text, inlineTextBuilder, transform = (str => str), noWrap = false) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordOrNewlineRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else if (previouslyStashedSpace || this.testLeadingWhitespace(text)) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n } else {\n inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n }\n while ((m = wordOrNewlineRe.exec(text)) !== null) {\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch) || (this.testTrailingWhitespace(text));\n // No need to stash a space in case last added item was a new line,\n // but that won't affect anything later anyway.\n };\n\n } else {\n\n const wordRe = new RegExp(`[^${whitespaceCodes}]+`, 'g');\n\n this.shrinkWrapAdd = function (text, inlineTextBuilder, transform = (str => str), noWrap = false) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = wordRe.exec(text);\n if (m) {\n anyMatch = true;\n if (previouslyStashedSpace || this.testLeadingWhitespace(text)) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n } else {\n inlineTextBuilder.concatWord(transform(m[0]), noWrap);\n }\n while ((m = wordRe.exec(text)) !== null) {\n inlineTextBuilder.pushWord(transform(m[0]), noWrap);\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch) || this.testTrailingWhitespace(text);\n };\n\n }\n }\n\n /**\n * Add text with only minimal processing.\n * Everything between newlines considered a single word.\n * No whitespace is trimmed.\n * Not affected by preserveNewlines option - `\\n` always starts a new line.\n *\n * `noWrap` argument is `true` by default - this won't start a new line\n * even if there is not enough space left in the current line.\n *\n * @param { string } text Input text.\n * @param { InlineTextBuilder } inlineTextBuilder A builder to receive processed text.\n * @param { boolean } [noWrap] Don't wrap text even if the line is too long.\n */\n addLiteral (text, inlineTextBuilder, noWrap = true) {\n if (!text) { return; }\n const previouslyStashedSpace = inlineTextBuilder.stashedSpace;\n let anyMatch = false;\n let m = this.newlineOrNonNewlineStringRe.exec(text);\n if (m) {\n anyMatch = true;\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else if (previouslyStashedSpace) {\n inlineTextBuilder.pushWord(m[0], noWrap);\n } else {\n inlineTextBuilder.concatWord(m[0], noWrap);\n }\n while ((m = this.newlineOrNonNewlineStringRe.exec(text)) !== null) {\n if (m[0] === '\\n') {\n inlineTextBuilder.startNewLine();\n } else {\n inlineTextBuilder.pushWord(m[0], noWrap);\n }\n }\n }\n inlineTextBuilder.stashedSpace = (previouslyStashedSpace && !anyMatch);\n }\n\n /**\n * Test whether the given text starts with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testLeadingWhitespace (text) {\n return this.leadingWhitespaceRe.test(text);\n }\n\n /**\n * Test whether the given text ends with HTML whitespace character.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testTrailingWhitespace (text) {\n return this.trailingWhitespaceRe.test(text);\n }\n\n /**\n * Test whether the given text contains any non-whitespace characters.\n *\n * @param { string } text The string to test.\n * @returns { boolean }\n */\n testContainsWords (text) {\n return !this.allWhitespaceOrEmptyRe.test(text);\n }\n\n /**\n * Return the number of newlines if there are no words.\n *\n * If any word is found then return zero regardless of the actual number of newlines.\n *\n * @param { string } text Input string.\n * @returns { number }\n */\n countNewlinesNoWords (text) {\n this.newlineOrNonWhitespaceRe.lastIndex = 0;\n let counter = 0;\n let match;\n while ((match = this.newlineOrNonWhitespaceRe.exec(text)) !== null) {\n if (match[0] === '\\n') {\n counter++;\n } else {\n return 0;\n }\n }\n return counter;\n }\n\n}\n\n/**\n * Helps to build text from inline and block elements.\n *\n * @class BlockTextBuilder\n */\nclass BlockTextBuilder {\n\n /**\n * Creates an instance of BlockTextBuilder.\n *\n * @param { Options } options HtmlToText options.\n * @param { import('selderee').Picker<DomNode, TagDefinition> } picker Selectors decision tree picker.\n * @param { any} [metadata] Optional metadata for HTML document, for use in formatters.\n */\n constructor (options, picker, metadata = undefined) {\n this.options = options;\n this.picker = picker;\n this.metadata = metadata;\n this.whitespaceProcessor = new WhitespaceProcessor(options);\n /** @type { StackItem } */\n this._stackItem = new BlockStackItem(options);\n /** @type { TransformerStackItem } */\n this._wordTransformer = undefined;\n }\n\n /**\n * Put a word-by-word transform function onto the transformations stack.\n *\n * Mainly used for uppercasing. Can be bypassed to add unformatted text such as URLs.\n *\n * Word transformations applied before wrapping.\n *\n * @param { (str: string) => string } wordTransform Word transformation function.\n */\n pushWordTransform (wordTransform) {\n this._wordTransformer = new TransformerStackItem(this._wordTransformer, wordTransform);\n }\n\n /**\n * Remove a function from the word transformations stack.\n *\n * @returns { (str: string) => string } A function that was removed.\n */\n popWordTransform () {\n if (!this._wordTransformer) { return undefined; }\n const transform = this._wordTransformer.transform;\n this._wordTransformer = this._wordTransformer.next;\n return transform;\n }\n\n /**\n * Ignore wordwrap option in followup inline additions and disable automatic wrapping.\n */\n startNoWrap () {\n this._stackItem.isNoWrap = true;\n }\n\n /**\n * Return automatic wrapping to behavior defined by options.\n */\n stopNoWrap () {\n this._stackItem.isNoWrap = false;\n }\n\n /** @returns { (str: string) => string } */\n _getCombinedWordTransformer () {\n const wt = (this._wordTransformer)\n ? ((str) => applyTransformer(str, this._wordTransformer))\n : undefined;\n const ce = this.options.encodeCharacters;\n return (wt)\n ? ((ce) ? (str) => ce(wt(str)) : wt)\n : ce;\n }\n\n _popStackItem () {\n const item = this._stackItem;\n this._stackItem = item.next;\n return item;\n }\n\n /**\n * Add a line break into currently built block.\n */\n addLineBreak () {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n if (this._stackItem.isPre) {\n this._stackItem.rawText += '\\n';\n } else {\n this._stackItem.inlineTextBuilder.startNewLine();\n }\n }\n\n /**\n * Allow to break line in case directly following text will not fit.\n */\n addWordBreakOpportunity () {\n if (\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n ) {\n this._stackItem.inlineTextBuilder.wordBreakOpportunity = true;\n }\n }\n\n /**\n * Add a node inline into the currently built block.\n *\n * @param { string } str\n * Text content of a node to add.\n *\n * @param { object } [param1]\n * Object holding the parameters of the operation.\n *\n * @param { boolean } [param1.noWordTransform]\n * Ignore word transformers if there are any.\n * Don't encode characters as well.\n * (Use this for things like URL addresses).\n */\n addInline (str, { noWordTransform = false } = {}) {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n\n if (\n str.length === 0 || // empty string\n (\n this._stackItem.stashedLineBreaks && // stashed linebreaks make whitespace irrelevant\n !this.whitespaceProcessor.testContainsWords(str) // no words to add\n )\n ) { return; }\n\n if (this.options.preserveNewlines) {\n const newlinesNumber = this.whitespaceProcessor.countNewlinesNoWords(str);\n if (newlinesNumber > 0) {\n this._stackItem.inlineTextBuilder.startNewLine(newlinesNumber);\n // keep stashedLineBreaks unchanged\n return;\n }\n }\n\n if (this._stackItem.stashedLineBreaks) {\n this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n }\n this.whitespaceProcessor.shrinkWrapAdd(\n str,\n this._stackItem.inlineTextBuilder,\n (noWordTransform) ? undefined : this._getCombinedWordTransformer(),\n this._stackItem.isNoWrap\n );\n this._stackItem.stashedLineBreaks = 0; // inline text doesn't introduce line breaks\n }\n\n /**\n * Add a string inline into the currently built block.\n *\n * Use this for markup elements that don't have to adhere\n * to text layout rules.\n *\n * @param { string } str Text to add.\n */\n addLiteral (str) {\n if (!(\n this._stackItem instanceof BlockStackItem\n || this._stackItem instanceof ListItemStackItem\n || this._stackItem instanceof TableCellStackItem\n )) { return; }\n\n if (str.length === 0) { return; }\n\n if (this._stackItem.isPre) {\n this._stackItem.rawText += str;\n return;\n }\n\n if (this._stackItem.stashedLineBreaks) {\n this._stackItem.inlineTextBuilder.startNewLine(this._stackItem.stashedLineBreaks);\n }\n this.whitespaceProcessor.addLiteral(\n str,\n this._stackItem.inlineTextBuilder,\n this._stackItem.isNoWrap\n );\n this._stackItem.stashedLineBreaks = 0;\n }\n\n /**\n * Start building a new block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any preceding block.\n *\n * @param { number } [param0.reservedLineLength]\n * Reserve this number of characters on each line for block markup.\n *\n * @param { boolean } [param0.isPre]\n * Should HTML whitespace be preserved inside this block.\n */\n openBlock ({ leadingLineBreaks = 1, reservedLineLength = 0, isPre = false } = {}) {\n const maxLineLength = Math.max(20, this._stackItem.inlineTextBuilder.maxLineLength - reservedLineLength);\n this._stackItem = new BlockStackItem(\n this.options,\n this._stackItem,\n leadingLineBreaks,\n maxLineLength\n );\n if (isPre) { this._stackItem.isPre = true; }\n }\n\n /**\n * Finalize currently built block, add it's content to the parent block.\n *\n * @param { object } [param0]\n * Object holding the parameters of the block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This block should have at least this number of line breaks to separate it from any following block.\n *\n * @param { (str: string) => string } [param0.blockTransform]\n * A function to transform the block text before adding to the parent block.\n * This happens after word wrap and should be used in combination with reserved line length\n * in order to keep line lengths correct.\n * Used for whole block markup.\n */\n closeBlock ({ trailingLineBreaks = 1, blockTransform = undefined } = {}) {\n const block = this._popStackItem();\n const blockText = (blockTransform) ? blockTransform(getText(block)) : getText(block);\n addText(this._stackItem, blockText, block.leadingLineBreaks, Math.max(block.stashedLineBreaks, trailingLineBreaks));\n }\n\n /**\n * Start building a new list.\n *\n * @param { object } [param0]\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.maxPrefixLength]\n * Length of the longest list item prefix.\n * If not supplied or too small then list items won't be aligned properly.\n *\n * @param { 'left' | 'right' } [param0.prefixAlign]\n * Specify how prefixes of different lengths have to be aligned\n * within a column.\n *\n * @param { number } [param0.interRowLineBreaks]\n * Minimum number of line breaks between list items.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any preceding block.\n */\n openList ({ maxPrefixLength = 0, prefixAlign = 'left', interRowLineBreaks = 1, leadingLineBreaks = 2 } = {}) {\n this._stackItem = new ListStackItem(this.options, this._stackItem, {\n interRowLineBreaks: interRowLineBreaks,\n leadingLineBreaks: leadingLineBreaks,\n maxLineLength: this._stackItem.inlineTextBuilder.maxLineLength,\n maxPrefixLength: maxPrefixLength,\n prefixAlign: prefixAlign\n });\n }\n\n /**\n * Start building a new list item.\n *\n * @param {object} param0\n * Object holding the parameters of the list item.\n *\n * @param { string } [param0.prefix]\n * Prefix for this list item (item number, bullet point, etc).\n */\n openListItem ({ prefix = '' } = {}) {\n if (!(this._stackItem instanceof ListStackItem)) {\n throw new Error('Can\\'t add a list item to something that is not a list! Check the formatter.');\n }\n const list = this._stackItem;\n const prefixLength = Math.max(prefix.length, list.maxPrefixLength);\n const maxLineLength = Math.max(20, list.inlineTextBuilder.maxLineLength - prefixLength);\n this._stackItem = new ListItemStackItem(this.options, list, {\n prefix: prefix,\n maxLineLength: maxLineLength,\n leadingLineBreaks: list.interRowLineBreaks\n });\n }\n\n /**\n * Finalize currently built list item, add it's content to the parent list.\n */\n closeListItem () {\n const listItem = this._popStackItem();\n const list = listItem.next;\n\n const prefixLength = Math.max(listItem.prefix.length, list.maxPrefixLength);\n const spacing = '\\n' + ' '.repeat(prefixLength);\n const prefix = (list.prefixAlign === 'right')\n ? listItem.prefix.padStart(prefixLength)\n : listItem.prefix.padEnd(prefixLength);\n const text = prefix + getText(listItem).replace(/\\n/g, spacing);\n\n addText(\n list,\n text,\n listItem.leadingLineBreaks,\n Math.max(listItem.stashedLineBreaks, list.interRowLineBreaks)\n );\n }\n\n /**\n * Finalize currently built list, add it's content to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the list.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This list should have at least this number of line breaks to separate it from any following block.\n */\n closeList ({ trailingLineBreaks = 2 } = {}) {\n const list = this._popStackItem();\n const text = getText(list);\n if (text) {\n addText(this._stackItem, text, list.leadingLineBreaks, trailingLineBreaks);\n }\n }\n\n /**\n * Start building a table.\n */\n openTable () {\n this._stackItem = new TableStackItem(this._stackItem);\n }\n\n /**\n * Start building a table row.\n */\n openTableRow () {\n if (!(this._stackItem instanceof TableStackItem)) {\n throw new Error('Can\\'t add a table row to something that is not a table! Check the formatter.');\n }\n this._stackItem = new TableRowStackItem(this._stackItem);\n }\n\n /**\n * Start building a table cell.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.maxColumnWidth]\n * Wrap cell content to this width. Fall back to global wordwrap value if undefined.\n */\n openTableCell ({ maxColumnWidth = undefined } = {}) {\n if (!(this._stackItem instanceof TableRowStackItem)) {\n throw new Error('Can\\'t add a table cell to something that is not a table row! Check the formatter.');\n }\n this._stackItem = new TableCellStackItem(this.options, this._stackItem, maxColumnWidth);\n }\n\n /**\n * Finalize currently built table cell and add it to parent table row's cells.\n *\n * @param { object } [param0]\n * Object holding the parameters of the cell.\n *\n * @param { number } [param0.colspan] How many columns this cell should occupy.\n * @param { number } [param0.rowspan] How many rows this cell should occupy.\n */\n closeTableCell ({ colspan = 1, rowspan = 1 } = {}) {\n const cell = this._popStackItem();\n const text = trimCharacter(getText(cell), '\\n');\n cell.next.cells.push({ colspan: colspan, rowspan: rowspan, text: text });\n }\n\n /**\n * Finalize currently built table row and add it to parent table's rows.\n */\n closeTableRow () {\n const row = this._popStackItem();\n row.next.rows.push(row.cells);\n }\n\n /**\n * Finalize currently built table and add the rendered text to the parent block.\n *\n * @param { object } param0\n * Object holding the parameters of the table.\n *\n * @param { TablePrinter } param0.tableToString\n * A function to convert a table of stringified cells into a complete table.\n *\n * @param { number } [param0.leadingLineBreaks]\n * This table should have at least this number of line breaks to separate if from any preceding block.\n *\n * @param { number } [param0.trailingLineBreaks]\n * This table should have at least this number of line breaks to separate it from any following block.\n */\n closeTable ({ tableToString, leadingLineBreaks = 2, trailingLineBreaks = 2 }) {\n const table = this._popStackItem();\n const output = tableToString(table.rows);\n if (output) {\n addText(this._stackItem, output, leadingLineBreaks, trailingLineBreaks);\n }\n }\n\n /**\n * Return the rendered text content of this builder.\n *\n * @returns { string }\n */\n toString () {\n return getText(this._stackItem.getRoot());\n // There should only be the root item if everything is closed properly.\n }\n\n}\n\nfunction getText (stackItem) {\n if (!(\n stackItem instanceof BlockStackItem\n || stackItem instanceof ListItemStackItem\n || stackItem instanceof TableCellStackItem\n )) {\n throw new Error('Only blocks, list items and table cells can be requested for text contents.');\n }\n return (stackItem.inlineTextBuilder.isEmpty())\n ? stackItem.rawText\n : stackItem.rawText + stackItem.inlineTextBuilder.toString();\n}\n\nfunction addText (stackItem, text, leadingLineBreaks, trailingLineBreaks) {\n if (!(\n stackItem instanceof BlockStackItem\n || stackItem instanceof ListItemStackItem\n || stackItem instanceof TableCellStackItem\n )) {\n throw new Error('Only blocks, list items and table cells can contain text.');\n }\n const parentText = getText(stackItem);\n const lineBreaks = Math.max(stackItem.stashedLineBreaks, leadingLineBreaks);\n stackItem.inlineTextBuilder.clear();\n if (parentText) {\n stackItem.rawText = parentText + '\\n'.repeat(lineBreaks) + text;\n } else {\n stackItem.rawText = text;\n stackItem.leadingLineBreaks = lineBreaks;\n }\n stackItem.stashedLineBreaks = trailingLineBreaks;\n}\n\n/**\n * @param { string } str A string to transform.\n * @param { TransformerStackItem } transformer A transformer item (with possible continuation).\n * @returns { string }\n */\nfunction applyTransformer (str, transformer) {\n return ((transformer) ? applyTransformer(transformer.transform(str), transformer.next) : str);\n}\n\n/**\n * Compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options (defaults, formatters, user options merged, deduplicated).\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */\nfunction compile$1 (options = {}) {\n const selectorsWithoutFormat = options.selectors.filter(s => !s.format);\n if (selectorsWithoutFormat.length) {\n throw new Error(\n 'Following selectors have no specified format: ' +\n selectorsWithoutFormat.map(s => `\\`${s.selector}\\``).join(', ')\n );\n }\n const picker = new DecisionTree(\n options.selectors.map(s => [s.selector, s])\n ).build(hp2Builder);\n\n if (typeof options.encodeCharacters !== 'function') {\n options.encodeCharacters = makeReplacerFromDict(options.encodeCharacters);\n }\n\n const baseSelectorsPicker = new DecisionTree(\n options.baseElements.selectors.map((s, i) => [s, i + 1])\n ).build(hp2Builder);\n function findBaseElements (dom) {\n return findBases(dom, options, baseSelectorsPicker);\n }\n\n const limitedWalk = limitedDepthRecursive(\n options.limits.maxDepth,\n recursiveWalk,\n function (dom, builder) {\n builder.addInline(options.limits.ellipsis || '');\n }\n );\n\n return function (html, metadata = undefined) {\n return process(html, metadata, options, picker, findBaseElements, limitedWalk);\n };\n}\n\n\n/**\n * Convert given HTML according to preprocessed options.\n *\n * @param { string } html HTML content to convert.\n * @param { any } metadata Optional metadata for HTML document, for use in formatters.\n * @param { Options } options HtmlToText options (preprocessed).\n * @param { import('selderee').Picker<DomNode, TagDefinition> } picker\n * Tag definition picker for DOM nodes processing.\n * @param { (dom: DomNode[]) => DomNode[] } findBaseElements\n * Function to extract elements from HTML DOM\n * that will only be present in the output text.\n * @param { RecursiveCallback } walk Recursive callback.\n * @returns { string }\n */\nfunction process (html, metadata, options, picker, findBaseElements, walk) {\n const maxInputLength = options.limits.maxInputLength;\n if (maxInputLength && html && html.length > maxInputLength) {\n console.warn(\n `Input length ${html.length} is above allowed limit of ${maxInputLength}. Truncating without ellipsis.`\n );\n html = html.substring(0, maxInputLength);\n }\n\n const document = parseDocument(html, { decodeEntities: options.decodeEntities });\n const bases = findBaseElements(document.children);\n const builder = new BlockTextBuilder(options, picker, metadata);\n walk(bases, builder);\n return builder.toString();\n}\n\n\nfunction findBases (dom, options, baseSelectorsPicker) {\n const results = [];\n\n function recursiveWalk (walk, /** @type { DomNode[] } */ dom) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n for (const elem of dom) {\n if (elem.type !== 'tag') {\n continue;\n }\n const pickedSelectorIndex = baseSelectorsPicker.pick1(elem);\n if (pickedSelectorIndex > 0) {\n results.push({ selectorIndex: pickedSelectorIndex, element: elem });\n } else if (elem.children) {\n walk(elem.children);\n }\n if (results.length >= options.limits.maxBaseElements) {\n return;\n }\n }\n }\n\n const limitedWalk = limitedDepthRecursive(\n options.limits.maxDepth,\n recursiveWalk\n );\n limitedWalk(dom);\n\n if (options.baseElements.orderBy !== 'occurrence') { // 'selectors'\n results.sort((a, b) => a.selectorIndex - b.selectorIndex);\n }\n return (options.baseElements.returnDomByDefault && results.length === 0)\n ? dom\n : results.map(x => x.element);\n}\n\n/**\n * Function to walk through DOM nodes and accumulate their string representations.\n *\n * @param { RecursiveCallback } walk Recursive callback.\n * @param { DomNode[] } [dom] Nodes array to process.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @private\n */\nfunction recursiveWalk (walk, dom, builder) {\n if (!dom) { return; }\n\n const options = builder.options;\n\n const tooManyChildNodes = dom.length > options.limits.maxChildNodes;\n if (tooManyChildNodes) {\n dom = dom.slice(0, options.limits.maxChildNodes);\n dom.push({\n data: options.limits.ellipsis,\n type: 'text'\n });\n }\n\n for (const elem of dom) {\n switch (elem.type) {\n case 'text': {\n builder.addInline(elem.data);\n break;\n }\n case 'tag': {\n const tagDefinition = builder.picker.pick1(elem);\n const format = options.formatters[tagDefinition.format];\n format(elem, walk, builder, tagDefinition.options || {});\n break;\n }\n }\n }\n\n return;\n}\n\n/**\n * @param { Object<string,string | false> } dict\n * A dictionary where keys are characters to replace\n * and values are replacement strings.\n *\n * First code point from dict keys is used.\n * Compound emojis with ZWJ are not supported (not until Node 16).\n *\n * @returns { ((str: string) => string) | undefined }\n */\nfunction makeReplacerFromDict (dict) {\n if (!dict || Object.keys(dict).length === 0) {\n return undefined;\n }\n /** @type { [string, string][] } */\n const entries = Object.entries(dict).filter(([, v]) => v !== false);\n const regex = new RegExp(\n entries\n .map(([c]) => `(${unicodeEscape([...c][0])})`)\n .join('|'),\n 'g'\n );\n const values = entries.map(([, v]) => v);\n const replacer = (m, ...cgs) => values[cgs.findIndex(cg => cg)];\n return (str) => str.replace(regex, replacer);\n}\n\n/**\n * Dummy formatter that discards the input and does nothing.\n *\n * @type { FormatCallback }\n */\nfunction formatSkip (elem, walk, builder, formatOptions) {\n /* do nothing */\n}\n\n/**\n * Insert the given string literal inline instead of a tag.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineString (elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.string || '');\n}\n\n/**\n * Insert a block with the given string literal instead of a tag.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockString (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.addLiteral(formatOptions.string || '');\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process an inline-level element.\n *\n * @type { FormatCallback }\n */\nfunction formatInline (elem, walk, builder, formatOptions) {\n walk(elem.children, builder);\n}\n\n/**\n * Process a block-level container.\n *\n * @type { FormatCallback }\n */\nfunction formatBlock$1 (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\nfunction renderOpenTag (elem) {\n const attrs = (elem.attribs && elem.attribs.length)\n ? ' ' + Object.entries(elem.attribs)\n .map(([k, v]) => ((v === '') ? k : `${k}=${v.replace(/\"/g, '&quot;')}`))\n .join(' ')\n : '';\n return `<${elem.name}${attrs}>`;\n}\n\nfunction renderCloseTag (elem) {\n return `</${elem.name}>`;\n}\n\n/**\n * Render an element as inline HTML tag, walk through it's children.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineTag (elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral(renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral(renderCloseTag(elem));\n builder.stopNoWrap();\n}\n\n/**\n * Render an element as HTML block bag, walk through it's children.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockTag (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.startNoWrap();\n builder.addLiteral(renderOpenTag(elem));\n builder.stopNoWrap();\n walk(elem.children, builder);\n builder.startNoWrap();\n builder.addLiteral(renderCloseTag(elem));\n builder.stopNoWrap();\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Render an element with all it's children as inline HTML.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineHtml (elem, walk, builder, formatOptions) {\n builder.startNoWrap();\n builder.addLiteral(\n render(elem, { decodeEntities: builder.options.decodeEntities })\n );\n builder.stopNoWrap();\n}\n\n/**\n * Render an element with all it's children as HTML block.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockHtml (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.startNoWrap();\n builder.addLiteral(\n render(elem, { decodeEntities: builder.options.decodeEntities })\n );\n builder.stopNoWrap();\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Render inline element wrapped with given strings.\n *\n * @type { FormatCallback }\n */\nfunction formatInlineSurround (elem, walk, builder, formatOptions) {\n builder.addLiteral(formatOptions.prefix || '');\n walk(elem.children, builder);\n builder.addLiteral(formatOptions.suffix || '');\n}\n\nvar genericFormatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n block: formatBlock$1,\n blockHtml: formatBlockHtml,\n blockString: formatBlockString,\n blockTag: formatBlockTag,\n inline: formatInline,\n inlineHtml: formatInlineHtml,\n inlineString: formatInlineString,\n inlineSurround: formatInlineSurround,\n inlineTag: formatInlineTag,\n skip: formatSkip\n});\n\nfunction getRow (matrix, j) {\n if (!matrix[j]) { matrix[j] = []; }\n return matrix[j];\n}\n\nfunction findFirstVacantIndex (row, x = 0) {\n while (row[x]) { x++; }\n return x;\n}\n\nfunction transposeInPlace (matrix, maxSize) {\n for (let i = 0; i < maxSize; i++) {\n const rowI = getRow(matrix, i);\n for (let j = 0; j < i; j++) {\n const rowJ = getRow(matrix, j);\n if (rowI[j] || rowJ[i]) {\n const temp = rowI[j];\n rowI[j] = rowJ[i];\n rowJ[i] = temp;\n }\n }\n }\n}\n\nfunction putCellIntoLayout (cell, layout, baseRow, baseCol) {\n for (let r = 0; r < cell.rowspan; r++) {\n const layoutRow = getRow(layout, baseRow + r);\n for (let c = 0; c < cell.colspan; c++) {\n layoutRow[baseCol + c] = cell;\n }\n }\n}\n\nfunction getOrInitOffset (offsets, index) {\n if (offsets[index] === undefined) {\n offsets[index] = (index === 0) ? 0 : 1 + getOrInitOffset(offsets, index - 1);\n }\n return offsets[index];\n}\n\nfunction updateOffset (offsets, base, span, value) {\n offsets[base + span] = Math.max(\n getOrInitOffset(offsets, base + span),\n getOrInitOffset(offsets, base) + value\n );\n}\n\n/**\n * Render a table into a string.\n * Cells can contain multiline text and span across multiple rows and columns.\n *\n * Modifies cells to add lines array.\n *\n * @param { TablePrinterCell[][] } tableRows Table to render.\n * @param { number } rowSpacing Number of spaces between columns.\n * @param { number } colSpacing Number of empty lines between rows.\n * @returns { string }\n */\nfunction tableToString (tableRows, rowSpacing, colSpacing) {\n const layout = [];\n let colNumber = 0;\n const rowNumber = tableRows.length;\n const rowOffsets = [0];\n // Fill the layout table and row offsets row-by-row.\n for (let j = 0; j < rowNumber; j++) {\n const layoutRow = getRow(layout, j);\n const cells = tableRows[j];\n let x = 0;\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i];\n x = findFirstVacantIndex(layoutRow, x);\n putCellIntoLayout(cell, layout, j, x);\n x += cell.colspan;\n cell.lines = cell.text.split('\\n');\n const cellHeight = cell.lines.length;\n updateOffset(rowOffsets, j, cell.rowspan, cellHeight + rowSpacing);\n }\n colNumber = (layoutRow.length > colNumber) ? layoutRow.length : colNumber;\n }\n\n transposeInPlace(layout, (rowNumber > colNumber) ? rowNumber : colNumber);\n\n const outputLines = [];\n const colOffsets = [0];\n // Fill column offsets and output lines column-by-column.\n for (let x = 0; x < colNumber; x++) {\n let y = 0;\n let cell;\n const rowsInThisColumn = Math.min(rowNumber, layout[x].length);\n while (y < rowsInThisColumn) {\n cell = layout[x][y];\n if (cell) {\n if (!cell.rendered) {\n let cellWidth = 0;\n for (let j = 0; j < cell.lines.length; j++) {\n const line = cell.lines[j];\n const lineOffset = rowOffsets[y] + j;\n outputLines[lineOffset] = (outputLines[lineOffset] || '').padEnd(colOffsets[x]) + line;\n cellWidth = (line.length > cellWidth) ? line.length : cellWidth;\n }\n updateOffset(colOffsets, x, cell.colspan, cellWidth + colSpacing);\n cell.rendered = true;\n }\n y += cell.rowspan;\n } else {\n const lineOffset = rowOffsets[y];\n outputLines[lineOffset] = (outputLines[lineOffset] || '');\n y++;\n }\n }\n }\n\n return outputLines.join('\\n');\n}\n\n/**\n * Process a line-break.\n *\n * @type { FormatCallback }\n */\nfunction formatLineBreak (elem, walk, builder, formatOptions) {\n builder.addLineBreak();\n}\n\n/**\n * Process a `wbr` tag (word break opportunity).\n *\n * @type { FormatCallback }\n */\nfunction formatWbr (elem, walk, builder, formatOptions) {\n builder.addWordBreakOpportunity();\n}\n\n/**\n * Process a horizontal line.\n *\n * @type { FormatCallback }\n */\nfunction formatHorizontalLine (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n builder.addInline('-'.repeat(formatOptions.length || builder.options.wordwrap || 40));\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a paragraph.\n *\n * @type { FormatCallback }\n */\nfunction formatParagraph (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a preformatted content.\n *\n * @type { FormatCallback }\n */\nfunction formatPre (elem, walk, builder, formatOptions) {\n builder.openBlock({\n isPre: true,\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2\n });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a heading.\n *\n * @type { FormatCallback }\n */\nfunction formatHeading (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks || 2 });\n if (formatOptions.uppercase !== false) {\n builder.pushWordTransform(str => str.toUpperCase());\n walk(elem.children, builder);\n builder.popWordTransform();\n } else {\n walk(elem.children, builder);\n }\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks || 2 });\n}\n\n/**\n * Process a blockquote.\n *\n * @type { FormatCallback }\n */\nfunction formatBlockquote (elem, walk, builder, formatOptions) {\n builder.openBlock({\n leadingLineBreaks: formatOptions.leadingLineBreaks || 2,\n reservedLineLength: 2\n });\n walk(elem.children, builder);\n builder.closeBlock({\n trailingLineBreaks: formatOptions.trailingLineBreaks || 2,\n blockTransform: str => ((formatOptions.trimEmptyLines !== false) ? trimCharacter(str, '\\n') : str)\n .split('\\n')\n .map(line => '> ' + line)\n .join('\\n')\n });\n}\n\nfunction withBrackets (str, brackets) {\n if (!brackets) { return str; }\n\n const lbr = (typeof brackets[0] === 'string')\n ? brackets[0]\n : '[';\n const rbr = (typeof brackets[1] === 'string')\n ? brackets[1]\n : ']';\n return lbr + str + rbr;\n}\n\nfunction pathRewrite (path, rewriter, baseUrl, metadata, elem) {\n const modifiedPath = (typeof rewriter === 'function')\n ? rewriter(path, metadata, elem)\n : path;\n return (modifiedPath[0] === '/' && baseUrl)\n ? trimCharacterEnd(baseUrl, '/') + modifiedPath\n : modifiedPath;\n}\n\n/**\n * Process an image.\n *\n * @type { FormatCallback }\n */\nfunction formatImage (elem, walk, builder, formatOptions) {\n const attribs = elem.attribs || {};\n const alt = (attribs.alt)\n ? attribs.alt\n : '';\n const src = (!attribs.src)\n ? ''\n : pathRewrite(attribs.src, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n const text = (!src)\n ? alt\n : (!alt)\n ? withBrackets(src, formatOptions.linkBrackets)\n : alt + ' ' + withBrackets(src, formatOptions.linkBrackets);\n\n builder.addInline(text, { noWordTransform: true });\n}\n\n// a img baseUrl\n// a img pathRewrite\n// a img linkBrackets\n\n// a ignoreHref: false\n// ignoreText ?\n// a noAnchorUrl: true\n// can be replaced with selector\n// a hideLinkHrefIfSameAsText: false\n// how to compare, what to show (text, href, normalized) ?\n// a mailto protocol removed without options\n\n// a protocols: mailto, tel, ...\n// can be matched with selector?\n\n// anchors, protocols - only if no pathRewrite fn is provided\n\n// normalize-url ?\n\n// a\n// a[href^=\"#\"] - format:skip by default\n// a[href^=\"mailto:\"] - ?\n\n/**\n * Process an anchor.\n *\n * @type { FormatCallback }\n */\nfunction formatAnchor (elem, walk, builder, formatOptions) {\n function getHref () {\n if (formatOptions.ignoreHref) { return ''; }\n if (!elem.attribs || !elem.attribs.href) { return ''; }\n let href = elem.attribs.href.replace(/^mailto:/, '');\n if (formatOptions.noAnchorUrl && href[0] === '#') { return ''; }\n href = pathRewrite(href, formatOptions.pathRewrite, formatOptions.baseUrl, builder.metadata, elem);\n return href;\n }\n const href = getHref();\n if (!href) {\n walk(elem.children, builder);\n } else {\n let text = '';\n builder.pushWordTransform(\n str => {\n if (str) { text += str; }\n return str;\n }\n );\n walk(elem.children, builder);\n builder.popWordTransform();\n\n const hideSameLink = formatOptions.hideLinkHrefIfSameAsText && href === text;\n if (!hideSameLink) {\n builder.addInline(\n (!text)\n ? href\n : ' ' + withBrackets(href, formatOptions.linkBrackets),\n { noWordTransform: true }\n );\n }\n }\n}\n\n/**\n * @param { DomNode } elem List items with their prefixes.\n * @param { RecursiveCallback } walk Recursive callback to process child nodes.\n * @param { BlockTextBuilder } builder Passed around to accumulate output text.\n * @param { FormatOptions } formatOptions Options specific to a formatter.\n * @param { () => string } nextPrefixCallback Function that returns increasing index each time it is called.\n */\nfunction formatList (elem, walk, builder, formatOptions, nextPrefixCallback) {\n const isNestedList = get(elem, ['parent', 'name']) === 'li';\n\n // With Roman numbers, index length is not as straightforward as with Arabic numbers or letters,\n // so the dumb length comparison is the most robust way to get the correct value.\n let maxPrefixLength = 0;\n const listItems = (elem.children || [])\n // it might be more accurate to check only for html spaces here, but no significant benefit\n .filter(child => child.type !== 'text' || !/^\\s*$/.test(child.data))\n .map(function (child) {\n if (child.name !== 'li') {\n return { node: child, prefix: '' };\n }\n const prefix = (isNestedList)\n ? nextPrefixCallback().trimStart()\n : nextPrefixCallback();\n if (prefix.length > maxPrefixLength) { maxPrefixLength = prefix.length; }\n return { node: child, prefix: prefix };\n });\n if (!listItems.length) { return; }\n\n builder.openList({\n interRowLineBreaks: 1,\n leadingLineBreaks: isNestedList ? 1 : (formatOptions.leadingLineBreaks || 2),\n maxPrefixLength: maxPrefixLength,\n prefixAlign: 'left'\n });\n\n for (const { node, prefix } of listItems) {\n builder.openListItem({ prefix: prefix });\n walk([node], builder);\n builder.closeListItem();\n }\n\n builder.closeList({ trailingLineBreaks: isNestedList ? 1 : (formatOptions.trailingLineBreaks || 2) });\n}\n\n/**\n * Process an unordered list.\n *\n * @type { FormatCallback }\n */\nfunction formatUnorderedList (elem, walk, builder, formatOptions) {\n const prefix = formatOptions.itemPrefix || ' * ';\n return formatList(elem, walk, builder, formatOptions, () => prefix);\n}\n\n/**\n * Process an ordered list.\n *\n * @type { FormatCallback }\n */\nfunction formatOrderedList (elem, walk, builder, formatOptions) {\n let nextIndex = Number(elem.attribs.start || '1');\n const indexFunction = getOrderedListIndexFunction(elem.attribs.type);\n const nextPrefixCallback = () => ' ' + indexFunction(nextIndex++) + '. ';\n return formatList(elem, walk, builder, formatOptions, nextPrefixCallback);\n}\n\n/**\n * Return a function that can be used to generate index markers of a specified format.\n *\n * @param { string } [olType='1'] Marker type.\n * @returns { (i: number) => string }\n */\nfunction getOrderedListIndexFunction (olType = '1') {\n switch (olType) {\n case 'a': return (i) => numberToLetterSequence(i, 'a');\n case 'A': return (i) => numberToLetterSequence(i, 'A');\n case 'i': return (i) => numberToRoman(i).toLowerCase();\n case 'I': return (i) => numberToRoman(i);\n case '1':\n default: return (i) => (i).toString();\n }\n}\n\n/**\n * Given a list of class and ID selectors (prefixed with '.' and '#'),\n * return them as separate lists of names without prefixes.\n *\n * @param { string[] } selectors Class and ID selectors (`[\".class\", \"#id\"]` etc).\n * @returns { { classes: string[], ids: string[] } }\n */\nfunction splitClassesAndIds (selectors) {\n const classes = [];\n const ids = [];\n for (const selector of selectors) {\n if (selector.startsWith('.')) {\n classes.push(selector.substring(1));\n } else if (selector.startsWith('#')) {\n ids.push(selector.substring(1));\n }\n }\n return { classes: classes, ids: ids };\n}\n\nfunction isDataTable (attr, tables) {\n if (tables === true) { return true; }\n if (!attr) { return false; }\n\n const { classes, ids } = splitClassesAndIds(tables);\n const attrClasses = (attr['class'] || '').split(' ');\n const attrIds = (attr['id'] || '').split(' ');\n\n return attrClasses.some(x => classes.includes(x)) || attrIds.some(x => ids.includes(x));\n}\n\n/**\n * Process a table (either as a container or as a data table, depending on options).\n *\n * @type { FormatCallback }\n */\nfunction formatTable (elem, walk, builder, formatOptions) {\n return isDataTable(elem.attribs, builder.options.tables)\n ? formatDataTable(elem, walk, builder, formatOptions)\n : formatBlock(elem, walk, builder, formatOptions);\n}\n\nfunction formatBlock (elem, walk, builder, formatOptions) {\n builder.openBlock({ leadingLineBreaks: formatOptions.leadingLineBreaks });\n walk(elem.children, builder);\n builder.closeBlock({ trailingLineBreaks: formatOptions.trailingLineBreaks });\n}\n\n/**\n * Process a data table.\n *\n * @type { FormatCallback }\n */\nfunction formatDataTable (elem, walk, builder, formatOptions) {\n builder.openTable();\n elem.children.forEach(walkTable);\n builder.closeTable({\n tableToString: (rows) => tableToString(rows, formatOptions.rowSpacing ?? 0, formatOptions.colSpacing ?? 3),\n leadingLineBreaks: formatOptions.leadingLineBreaks,\n trailingLineBreaks: formatOptions.trailingLineBreaks\n });\n\n function formatCell (cellNode) {\n const colspan = +get(cellNode, ['attribs', 'colspan']) || 1;\n const rowspan = +get(cellNode, ['attribs', 'rowspan']) || 1;\n builder.openTableCell({ maxColumnWidth: formatOptions.maxColumnWidth });\n walk(cellNode.children, builder);\n builder.closeTableCell({ colspan: colspan, rowspan: rowspan });\n }\n\n function walkTable (elem) {\n if (elem.type !== 'tag') { return; }\n\n const formatHeaderCell = (formatOptions.uppercaseHeaderCells !== false)\n ? (cellNode) => {\n builder.pushWordTransform(str => str.toUpperCase());\n formatCell(cellNode);\n builder.popWordTransform();\n }\n : formatCell;\n\n switch (elem.name) {\n case 'thead':\n case 'tbody':\n case 'tfoot':\n case 'center':\n elem.children.forEach(walkTable);\n return;\n\n case 'tr': {\n builder.openTableRow();\n for (const childOfTr of elem.children) {\n if (childOfTr.type !== 'tag') { continue; }\n switch (childOfTr.name) {\n case 'th': {\n formatHeaderCell(childOfTr);\n break;\n }\n case 'td': {\n formatCell(childOfTr);\n break;\n }\n // do nothing\n }\n }\n builder.closeTableRow();\n break;\n }\n // do nothing\n }\n }\n}\n\nvar textFormatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n anchor: formatAnchor,\n blockquote: formatBlockquote,\n dataTable: formatDataTable,\n heading: formatHeading,\n horizontalLine: formatHorizontalLine,\n image: formatImage,\n lineBreak: formatLineBreak,\n orderedList: formatOrderedList,\n paragraph: formatParagraph,\n pre: formatPre,\n table: formatTable,\n unorderedList: formatUnorderedList,\n wbr: formatWbr\n});\n\n/**\n * Default options.\n *\n * @constant\n * @type { Options }\n * @default\n * @private\n */\nconst DEFAULT_OPTIONS = {\n baseElements: {\n selectors: [ 'body' ],\n orderBy: 'selectors', // 'selectors' | 'occurrence'\n returnDomByDefault: true\n },\n decodeEntities: true,\n encodeCharacters: {},\n formatters: {},\n limits: {\n ellipsis: '...',\n maxBaseElements: undefined,\n maxChildNodes: undefined,\n maxDepth: undefined,\n maxInputLength: (1 << 24) // 16_777_216\n },\n longWordSplit: {\n forceWrapOnLimit: false,\n wrapCharacters: []\n },\n preserveNewlines: false,\n selectors: [\n { selector: '*', format: 'inline' },\n {\n selector: 'a',\n format: 'anchor',\n options: {\n baseUrl: null,\n hideLinkHrefIfSameAsText: false,\n ignoreHref: false,\n linkBrackets: ['[', ']'],\n noAnchorUrl: true\n }\n },\n { selector: 'article', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'aside', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'blockquote',\n format: 'blockquote',\n options: { leadingLineBreaks: 2, trailingLineBreaks: 2, trimEmptyLines: true }\n },\n { selector: 'br', format: 'lineBreak' },\n { selector: 'div', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'footer', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'form', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'h1', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h2', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h3', format: 'heading', options: { leadingLineBreaks: 3, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h4', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h5', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'h6', format: 'heading', options: { leadingLineBreaks: 2, trailingLineBreaks: 2, uppercase: true } },\n { selector: 'header', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'hr',\n format: 'horizontalLine',\n options: { leadingLineBreaks: 2, length: undefined, trailingLineBreaks: 2 }\n },\n {\n selector: 'img',\n format: 'image',\n options: { baseUrl: null, linkBrackets: ['[', ']'] }\n },\n { selector: 'main', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n { selector: 'nav', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'ol',\n format: 'orderedList',\n options: { leadingLineBreaks: 2, trailingLineBreaks: 2 }\n },\n { selector: 'p', format: 'paragraph', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'pre', format: 'pre', options: { leadingLineBreaks: 2, trailingLineBreaks: 2 } },\n { selector: 'section', format: 'block', options: { leadingLineBreaks: 1, trailingLineBreaks: 1 } },\n {\n selector: 'table',\n format: 'table',\n options: {\n colSpacing: 3,\n leadingLineBreaks: 2,\n maxColumnWidth: 60,\n rowSpacing: 0,\n trailingLineBreaks: 2,\n uppercaseHeaderCells: true\n }\n },\n {\n selector: 'ul',\n format: 'unorderedList',\n options: { itemPrefix: ' * ', leadingLineBreaks: 2, trailingLineBreaks: 2 }\n },\n { selector: 'wbr', format: 'wbr' },\n ],\n tables: [], // deprecated\n whitespaceCharacters: ' \\t\\r\\n\\f\\u200b',\n wordwrap: 80\n};\n\nconst concatMerge = (acc, src, options) => [...acc, ...src];\nconst overwriteMerge = (acc, src, options) => [...src];\nconst selectorsMerge = (acc, src, options) => (\n (acc.some(s => typeof s === 'object'))\n ? concatMerge(acc, src) // selectors\n : overwriteMerge(acc, src) // baseElements.selectors\n);\n\n/**\n * Preprocess options, compile selectors into a decision tree,\n * return a function intended for batch processing.\n *\n * @param { Options } [options = {}] HtmlToText options.\n * @returns { (html: string, metadata?: any) => string } Pre-configured converter function.\n * @static\n */\nfunction compile (options = {}) {\n options = merge(\n DEFAULT_OPTIONS,\n options,\n {\n arrayMerge: overwriteMerge,\n customMerge: (key) => ((key === 'selectors') ? selectorsMerge : undefined)\n }\n );\n options.formatters = Object.assign({}, genericFormatters, textFormatters, options.formatters);\n options.selectors = mergeDuplicatesPreferLast(options.selectors, (s => s.selector));\n\n handleDeprecatedOptions(options);\n\n return compile$1(options);\n}\n\n/**\n * Convert given HTML content to plain text string.\n *\n * @param { string } html HTML content to convert.\n * @param { Options } [options = {}] HtmlToText options.\n * @param { any } [metadata] Optional metadata for HTML document, for use in formatters.\n * @returns { string } Plain text string.\n * @static\n *\n * @example\n * const { convert } = require('html-to-text');\n * const text = convert('<h1>Hello World</h1>', {\n * wordwrap: 130\n * });\n * console.log(text); // HELLO WORLD\n */\nfunction convert (html, options = {}, metadata = undefined) {\n return compile(options)(html, metadata);\n}\n\n/**\n * Map previously existing and now deprecated options to the new options layout.\n * This is a subject for cleanup in major releases.\n *\n * @param { Options } options HtmlToText options.\n */\nfunction handleDeprecatedOptions (options) {\n if (options.tags) {\n const tagDefinitions = Object.entries(options.tags).map(\n ([selector, definition]) => ({ ...definition, selector: selector || '*' })\n );\n options.selectors.push(...tagDefinitions);\n options.selectors = mergeDuplicatesPreferLast(options.selectors, (s => s.selector));\n }\n\n function set (obj, path, value) {\n const valueKey = path.pop();\n for (const key of path) {\n let nested = obj[key];\n if (!nested) {\n nested = {};\n obj[key] = nested;\n }\n obj = nested;\n }\n obj[valueKey] = value;\n }\n\n if (options['baseElement']) {\n const baseElement = options['baseElement'];\n set(\n options,\n ['baseElements', 'selectors'],\n (Array.isArray(baseElement) ? baseElement : [baseElement])\n );\n }\n if (options['returnDomByDefault'] !== undefined) {\n set(options, ['baseElements', 'returnDomByDefault'], options['returnDomByDefault']);\n }\n\n for (const definition of options.selectors) {\n if (definition.format === 'anchor' && get(definition, ['options', 'noLinkBrackets'])) {\n set(definition, ['options', 'linkBrackets'], false);\n }\n }\n}\n\nexport { compile, convert, convert as htmlToText };\n",
151
- "var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\n\n// package.json\nvar version = \"3.5.0\";\n\n// src/api-keys/api-keys.ts\nvar ApiKeys = class {\n constructor(resend) {\n this.resend = resend;\n }\n create(_0) {\n return __async(this, arguments, function* (payload, options = {}) {\n const data = yield this.resend.post(\n \"/api-keys\",\n payload,\n options\n );\n return data;\n });\n }\n list() {\n return __async(this, null, function* () {\n const data = yield this.resend.get(\"/api-keys\");\n return data;\n });\n }\n remove(id) {\n return __async(this, null, function* () {\n const data = yield this.resend.delete(\n `/api-keys/${id}`\n );\n return data;\n });\n }\n};\n\n// src/audiences/audiences.ts\nvar Audiences = class {\n constructor(resend) {\n this.resend = resend;\n }\n create(_0) {\n return __async(this, arguments, function* (payload, options = {}) {\n const data = yield this.resend.post(\n \"/audiences\",\n payload,\n options\n );\n return data;\n });\n }\n list() {\n return __async(this, null, function* () {\n const data = yield this.resend.get(\"/audiences\");\n return data;\n });\n }\n get(id) {\n return __async(this, null, function* () {\n const data = yield this.resend.get(\n `/audiences/${id}`\n );\n return data;\n });\n }\n remove(id) {\n return __async(this, null, function* () {\n const data = yield this.resend.delete(\n `/audiences/${id}`\n );\n return data;\n });\n }\n};\n\n// src/batch/batch.ts\nimport { renderAsync } from \"@react-email/render\";\nvar Batch = class {\n constructor(resend) {\n this.resend = resend;\n }\n send(_0) {\n return __async(this, arguments, function* (payload, options = {}) {\n return this.create(payload, options);\n });\n }\n create(_0) {\n return __async(this, arguments, function* (payload, options = {}) {\n for (const email of payload) {\n if (email.react) {\n email.html = yield renderAsync(email.react);\n delete email.react;\n }\n }\n const data = yield this.resend.post(\n \"/emails/batch\",\n payload,\n options\n );\n return data;\n });\n }\n};\n\n// src/contacts/contacts.ts\nvar Contacts = class {\n constructor(resend) {\n this.resend = resend;\n }\n create(_0) {\n return __async(this, arguments, function* (payload, options = {}) {\n const data = yield this.resend.post(\n `/audiences/${payload.audienceId}/contacts`,\n {\n unsubscribed: payload.unsubscribed,\n email: payload.email,\n first_name: payload.firstName,\n last_name: payload.lastName\n },\n options\n );\n return data;\n });\n }\n list(options) {\n return __async(this, null, function* () {\n const data = yield this.resend.get(\n `/audiences/${options.audienceId}/contacts`\n );\n return data;\n });\n }\n get(options) {\n return __async(this, null, function* () {\n const data = yield this.resend.get(\n `/audiences/${options.audienceId}/contacts/${options.id}`\n );\n return data;\n });\n }\n update(payload) {\n return __async(this, null, function* () {\n const data = yield this.resend.patch(\n `/audiences/${payload.audienceId}/contacts/${payload.id}`,\n {\n unsubscribed: payload.unsubscribed,\n first_name: payload.firstName,\n last_name: payload.lastName\n }\n );\n return data;\n });\n }\n remove(payload) {\n return __async(this, null, function* () {\n const data = yield this.resend.delete(\n `/audiences/${payload.audienceId}/contacts/${(payload == null ? void 0 : payload.email) ? payload == null ? void 0 : payload.email : payload == null ? void 0 : payload.id}`\n );\n return data;\n });\n }\n};\n\n// src/domains/domains.ts\nvar Domains = class {\n constructor(resend) {\n this.resend = resend;\n }\n create(_0) {\n return __async(this, arguments, function* (payload, options = {}) {\n const data = yield this.resend.post(\n \"/domains\",\n payload,\n options\n );\n return data;\n });\n }\n list() {\n return __async(this, null, function* () {\n const data = yield this.resend.get(\"/domains\");\n return data;\n });\n }\n get(id) {\n return __async(this, null, function* () {\n const data = yield this.resend.get(\n `/domains/${id}`\n );\n return data;\n });\n }\n update(payload) {\n return __async(this, null, function* () {\n const data = yield this.resend.patch(\n `/domains/${payload.id}`,\n {\n click_tracking: payload.clickTracking,\n open_tracking: payload.openTracking,\n tls: payload.tls\n }\n );\n return data;\n });\n }\n remove(id) {\n return __async(this, null, function* () {\n const data = yield this.resend.delete(\n `/domains/${id}`\n );\n return data;\n });\n }\n verify(id) {\n return __async(this, null, function* () {\n const data = yield this.resend.post(\n `/domains/${id}/verify`\n );\n return data;\n });\n }\n};\n\n// src/emails/emails.ts\nimport { renderAsync as renderAsync2 } from \"@react-email/render\";\nvar Emails = class {\n constructor(resend) {\n this.resend = resend;\n }\n send(_0) {\n return __async(this, arguments, function* (payload, options = {}) {\n return this.create(payload, options);\n });\n }\n create(_0) {\n return __async(this, arguments, function* (payload, options = {}) {\n if (payload.react) {\n payload.html = yield renderAsync2(payload.react);\n delete payload.react;\n }\n const data = yield this.resend.post(\n \"/emails\",\n payload,\n options\n );\n return data;\n });\n }\n get(id) {\n return __async(this, null, function* () {\n const data = yield this.resend.get(\n `/emails/${id}`\n );\n return data;\n });\n }\n};\n\n// src/resend.ts\nvar defaultBaseUrl = \"https://api.resend.com\";\nvar defaultUserAgent = `resend-node:${version}`;\nvar baseUrl = typeof process !== \"undefined\" && process.env ? process.env.RESEND_BASE_URL || defaultBaseUrl : defaultBaseUrl;\nvar userAgent = typeof process !== \"undefined\" && process.env ? process.env.RESEND_USER_AGENT || defaultUserAgent : defaultUserAgent;\nvar Resend = class {\n constructor(key) {\n this.key = key;\n this.apiKeys = new ApiKeys(this);\n this.audiences = new Audiences(this);\n this.batch = new Batch(this);\n this.contacts = new Contacts(this);\n this.domains = new Domains(this);\n this.emails = new Emails(this);\n if (!key) {\n if (typeof process !== \"undefined\" && process.env) {\n this.key = process.env.RESEND_API_KEY;\n }\n if (!this.key) {\n throw new Error(\n 'Missing API key. Pass it to the constructor `new Resend(\"re_123\")`'\n );\n }\n }\n this.headers = new Headers({\n Authorization: `Bearer ${this.key}`,\n \"User-Agent\": userAgent,\n \"Content-Type\": \"application/json\"\n });\n }\n fetchRequest(_0) {\n return __async(this, arguments, function* (path, options = {}) {\n try {\n const response = yield fetch(`${baseUrl}${path}`, options);\n if (!response.ok) {\n try {\n const rawError = yield response.text();\n return { data: null, error: JSON.parse(rawError) };\n } catch (err) {\n if (err instanceof SyntaxError) {\n return {\n data: null,\n error: {\n name: \"application_error\",\n message: \"Internal server error. We are unable to process your request right now, please try again later.\"\n }\n };\n }\n const error = {\n message: response.statusText,\n name: \"application_error\"\n };\n if (err instanceof Error) {\n return { data: null, error: __spreadProps(__spreadValues({}, error), { message: err.message }) };\n }\n return { data: null, error };\n }\n }\n const data = yield response.json();\n return { data, error: null };\n } catch (error) {\n return {\n data: null,\n error: {\n name: \"application_error\",\n message: \"Unable to fetch data. The request could not be resolved.\"\n }\n };\n }\n });\n }\n post(_0, _1) {\n return __async(this, arguments, function* (path, entity, options = {}) {\n const requestOptions = __spreadValues({\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(entity)\n }, options);\n return this.fetchRequest(path, requestOptions);\n });\n }\n get(_0) {\n return __async(this, arguments, function* (path, options = {}) {\n const requestOptions = __spreadValues({\n method: \"GET\",\n headers: this.headers\n }, options);\n return this.fetchRequest(path, requestOptions);\n });\n }\n put(_0, _1) {\n return __async(this, arguments, function* (path, entity, options = {}) {\n const requestOptions = __spreadValues({\n method: \"PUT\",\n headers: this.headers,\n body: JSON.stringify(entity)\n }, options);\n return this.fetchRequest(path, requestOptions);\n });\n }\n patch(_0, _1) {\n return __async(this, arguments, function* (path, entity, options = {}) {\n const requestOptions = __spreadValues({\n method: \"PATCH\",\n headers: this.headers,\n body: JSON.stringify(entity)\n }, options);\n return this.fetchRequest(path, requestOptions);\n });\n }\n delete(path, query) {\n return __async(this, null, function* () {\n const requestOptions = {\n method: \"DELETE\",\n headers: this.headers,\n body: JSON.stringify(query)\n };\n return this.fetchRequest(path, requestOptions);\n });\n }\n};\nexport {\n Resend\n};\n",
152
- "import type { SendEmailParams } from \"./types\";\n\nexport abstract class EmailDriver {\n abstract send(params: SendEmailParams): Promise<boolean> | boolean;\n}\n",
153
- "import { Resend } from \"resend\";\nimport type { SendEmailParams } from \"./types\";\nimport { EmailDriver } from \"./EmailDriver\";\n\nexport class ResendDriver extends EmailDriver {\n constructor(private apiKey = process.env.RESEND_API_KEY) {\n super();\n }\n\n async send(params: SendEmailParams) {\n const resend = new Resend(this.apiKey);\n const { data, error } = await resend.emails.send({\n ...params,\n });\n\n if (error) {\n console.error(error);\n return false;\n }\n\n if (data) {\n return true;\n }\n\n return false;\n }\n}\n",
154
- "import { ServiceProvider } from \"../ServiceProvider\";\nimport type { EmailDriver } from \"./drivers/EmailDriver\";\nimport { ResendDriver } from \"./drivers/ResendDriver\";\n\nexport class EmailServiceProvider extends ServiceProvider {\n driver: EmailDriver = new ResendDriver();\n headers: Record<string, string> = {};\n\n boot() {}\n\n filterRecipients(emails: string[]): Promise<Array<string>> | Array<string> {\n return emails;\n }\n}\n",
155
- "import { ServiceProvider } from \"../ServiceProvider\";\nimport { BroadcastingChannel } from \"../../broadcasting/BroadcastingChannel\";\nimport type { UrlParser } from \"../../client/types\";\n\ntype Channels = Record<string, new () => BroadcastingChannel>;\n\nexport class BroadcastingServiceProvider extends ServiceProvider {\n channels: Record<string, new () => BroadcastingChannel> = {};\n\n boot() {}\n}\n\ntype Parser<T extends Channels> = {\n [K in keyof T]: InstanceType<T[K]>[\"publish\"] extends (p: infer P) => infer O\n ? { params: UrlParser<`${K & string}`>; input: P; output: O }\n : never;\n};\n\ntype X = Parser<InstanceType<typeof BroadcastingServiceProvider>[\"channels\"]>;\n",
156
- "import type { JSX } from \"react\";\nimport type { HttpRequest } from \"../../http\";\nimport type { ViewRouter } from \"../../http/ViewRouter\";\nimport { ServiceProvider } from \"../ServiceProvider\";\n\nexport class ViewRouterServiceProvider extends ServiceProvider {\n root: (props: any) => JSX.Element;\n rootRouter: new () => ViewRouter;\n\n boot() {}\n\n onRequestStart(_req: HttpRequest): void | Promise<void> {}\n onRequestEnd(_req: HttpRequest): void | Promise<void> {}\n onRequestFail(_req: HttpRequest, _error: any): void | Promise<void> {}\n}\n",
157
- "import type { HttpRequest } from \"../../http\";\nimport type { ApiRouter } from \"../../http/ApiRouter\";\nimport { ServiceProvider } from \"../ServiceProvider\";\n\nexport class ApiRouterServiceProvider extends ServiceProvider {\n rootRouter: new () => ApiRouter;\n\n boot() {}\n\n onRequestStart(_req: HttpRequest): void | Promise<void> {}\n onRequestEnd(_req: HttpRequest): void | Promise<void> {}\n onRequestFail(_req: HttpRequest, error: any): void | Promise<void> {}\n}\n",
158
- "import { ServiceProvider } from \"../ServiceProvider\";\nimport type { LogEntry } from \"./types\";\n\nexport class LoggingServiceProvider extends ServiceProvider {\n maxFileSize = 1024 * 1024 * 10; // 10MB\n\n boot() {}\n\n onLogFileClosed(_file: File): void | Promise<void> {}\n\n onLogCreated(_logEntry: LogEntry): void | Promise<void> {}\n}\n",
159
- "import { ServiceProvider } from \"../ServiceProvider\";\nimport type { Job } from \"./Job\";\n\nexport class QueueServiceProvider extends ServiceProvider {\n jobs: Array<new () => Job> = [];\n concurrency = 1;\n\n boot() {}\n}\n",
160
- "import { QueueServiceContainer } from \"./QueueServiceContainer\";\n\nexport class Job {\n static name = \"unset\";\n worker = false;\n maxAttempts = 3;\n\n run(..._args: any[]): Promise<any> | any {}\n\n onFail(_error: Error, ..._args: any[]): void {}\n onSuccess(_result: any, ..._args: any[]): void {}\n onDeadletter(_error: Error, ..._args: any[]): void {}\n\n static dispatch<T extends Job>(\n this: new () => T,\n ...args: Parameters<T[\"run\"]>\n ): void {\n if (this.name === \"unset\") {\n throw new Error(\"Cannot dispatch a job with no name\");\n }\n\n QueueServiceContainer.use().push(this, JSON.stringify(args));\n }\n}\n",
161
- "// @ts-ignore\nimport sharp from \"sharp\";\nimport { ImageOptimizationDriver } from \"./ImageOptimizationDriver\";\nimport type { ResizeParameters } from \"./types\";\n\nexport class Sharp extends ImageOptimizationDriver {\n async resize(buffer: Buffer, parameters: ResizeParameters) {\n const { height, width, quality, fit } = parameters;\n return await sharp(buffer)\n .resize(width > 0 ? width : undefined, height > 0 ? height : undefined, {\n fit,\n })\n .webp({ quality: quality > 0 ? quality : 80, force: true })\n .toBuffer();\n }\n}\n",
162
- "import type { ResizeParameters } from \"./types\";\n\nexport abstract class ImageOptimizationDriver {\n abstract resize(\n buffer: Buffer,\n parameters: ResizeParameters,\n ): Promise<Buffer>;\n}\n",
163
- "import { ServiceProvider } from \"../ServiceProvider\";\nimport { Sharp } from \"./drivers/SharpDriver\";\n\nexport class ImageOptimizationServiceProvider extends ServiceProvider {\n driver = new Sharp();\n boot() {}\n}\n",
164
- "import { HttpRequest } from \"../../http/HttpRequest\";\n\nexport abstract class OAuthProvider {\n abstract getRedirectUrl(req: HttpRequest): string | Promise<string>;\n abstract onCallback(\n req: HttpRequest,\n ): Promise<{\n email?: string;\n name?: string;\n username?: string;\n providerId?: string;\n }>;\n}\n",
165
- "import type { HttpRequest } from \"../../http/HttpRequest\";\nimport { OAuthProvider } from \"./OAuthProvider\";\n\ntype Config = {\n clientId: string;\n scope: string;\n clientSecret: string;\n redirectPath: string;\n};\n\nconst defaultConfig: Config = {\n clientId: process.env.GOOGLE_CLIENT_ID!,\n clientSecret: process.env.GOOGLE_CLIENT_SECRET!,\n redirectPath: \"/auth/oauth/google/callback\",\n scope:\n \"https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email\",\n};\n\nexport class GoogleOAuthProvider extends OAuthProvider {\n config: {\n clientId: string;\n clientSecret: string;\n redirectPath: string;\n scope: string;\n };\n constructor(config: Partial<Config> = {}) {\n super();\n this.config = { ...defaultConfig, ...config };\n }\n\n getRedirectUrl() {\n const scope = this.config.scope;\n const clientId = this.config.clientId;\n\n const url = new URL(\"https://accounts.google.com/o/oauth2/v2/auth\");\n const params = {\n scope,\n include_granted_scopes: \"true\",\n response_type: \"code\",\n state: \"state_parameter_passthrough_value\",\n redirect_uri: `${process.env.HOST_NAME}/auth/oauth/google/callback`,\n client_id: clientId,\n };\n\n for (const [key, value] of Object.entries(params)) {\n url.searchParams.append(key, value);\n }\n\n const str = url.toString();\n\n return str;\n }\n\n async onCallback(req: HttpRequest) {\n const url = new URL(\"https://oauth2.googleapis.com/token\");\n url.searchParams.append(\"code\", req.search.get(\"code\"));\n url.searchParams.append(\"client_id\", this.config.clientId);\n url.searchParams.append(\"client_secret\", this.config.clientSecret);\n url.searchParams.append(\"grant_type\", \"authorization_code\");\n url.searchParams.append(\n \"redirect_uri\",\n `${process.env.HOST_NAME}${this.config.redirectPath}`,\n );\n const res = await fetch(url.toString(), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n });\n\n const { access_token } = await res.json();\n\n const userresponse = await fetch(\n `https://www.googleapis.com/oauth2/v3/userinfo?access_token=${access_token}`,\n );\n\n const user = await userresponse.json();\n\n if (!user.email) {\n console.error(\n \"Google OAuth error: email not found in user info response\",\n user,\n );\n }\n\n return { name: user.name, email: user.email };\n }\n}\n",
166
- "export const API_V2_PREFIX = 'https://api.x.com/2/';\nexport const API_V2_LABS_PREFIX = 'https://api.x.com/labs/2/';\nexport const API_V1_1_PREFIX = 'https://api.x.com/1.1/';\nexport const API_V1_1_UPLOAD_PREFIX = 'https://upload.x.com/1.1/';\nexport const API_V1_1_STREAM_PREFIX = 'https://stream.x.com/1.1/';\nexport const API_ADS_PREFIX = 'https://ads-api.x.com/12/';\nexport const API_ADS_SANDBOX_PREFIX = 'https://ads-api-sandbox.twitter.com/12/';\n",
167
- "/** TwitterPaginator: able to get consume data from initial request, then fetch next data sequentially. */\nexport class TwitterPaginator {\n // noinspection TypeScriptAbstractClassConstructorCanBeMadeProtected\n constructor({ realData, rateLimit, instance, queryParams, sharedParams }) {\n this._maxResultsWhenFetchLast = 100;\n this._realData = realData;\n this._rateLimit = rateLimit;\n this._instance = instance;\n this._queryParams = queryParams;\n this._sharedParams = sharedParams;\n }\n get _isRateLimitOk() {\n if (!this._rateLimit) {\n return true;\n }\n const resetDate = this._rateLimit.reset * 1000;\n if (resetDate < Date.now()) {\n return true;\n }\n return this._rateLimit.remaining > 0;\n }\n makeRequest(queryParams) {\n return this._instance.get(this.getEndpoint(), queryParams, { fullResponse: true, params: this._sharedParams });\n }\n makeNewInstanceFromResult(result, queryParams) {\n // Construct a subclass\n return new this.constructor({\n realData: result.data,\n rateLimit: result.rateLimit,\n instance: this._instance,\n queryParams,\n sharedParams: this._sharedParams,\n });\n }\n getEndpoint() {\n return this._endpoint;\n }\n injectQueryParams(maxResults) {\n return {\n ...(maxResults ? { max_results: maxResults } : {}),\n ...this._queryParams,\n };\n }\n /* ---------------------- */\n /* Real paginator methods */\n /* ---------------------- */\n /**\n * Next page.\n */\n async next(maxResults) {\n const queryParams = this.getNextQueryParams(maxResults);\n const result = await this.makeRequest(queryParams);\n return this.makeNewInstanceFromResult(result, queryParams);\n }\n /**\n * Next page, but store it in current instance.\n */\n async fetchNext(maxResults) {\n const queryParams = this.getNextQueryParams(maxResults);\n const result = await this.makeRequest(queryParams);\n // Await in case of async sub-methods\n await this.refreshInstanceFromResult(result, true);\n return this;\n }\n /**\n * Fetch up to {count} items after current page,\n * as long as rate limit is not hit and Twitter has some results\n */\n async fetchLast(count = Infinity) {\n let queryParams = this.getNextQueryParams(this._maxResultsWhenFetchLast);\n let resultCount = 0;\n // Break at rate limit limit\n while (resultCount < count && this._isRateLimitOk) {\n const response = await this.makeRequest(queryParams);\n await this.refreshInstanceFromResult(response, true);\n resultCount += this.getPageLengthFromRequest(response);\n if (this.isFetchLastOver(response)) {\n break;\n }\n queryParams = this.getNextQueryParams(this._maxResultsWhenFetchLast);\n }\n return this;\n }\n get rateLimit() {\n var _a;\n return { ...(_a = this._rateLimit) !== null && _a !== void 0 ? _a : {} };\n }\n /** Get raw data returned by Twitter API. */\n get data() {\n return this._realData;\n }\n get done() {\n return !this.canFetchNextPage(this._realData);\n }\n /**\n * Iterate over currently fetched items.\n */\n *[Symbol.iterator]() {\n yield* this.getItemArray();\n }\n /**\n * Iterate over items \"indefinitely\" (until rate limit is hit / they're no more items available)\n * This will **mutate the current instance** and fill data, metas, etc. inside this instance.\n *\n * If you need to handle concurrent requests, or you need to rely on immutability, please use `.fetchAndIterate()` instead.\n */\n async *[Symbol.asyncIterator]() {\n yield* this.getItemArray();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let paginator = this;\n let canFetchNextPage = this.canFetchNextPage(this._realData);\n while (canFetchNextPage && this._isRateLimitOk && paginator.getItemArray().length > 0) {\n const next = await paginator.next(this._maxResultsWhenFetchLast);\n // Store data into current instance [needed to access includes and meta]\n this.refreshInstanceFromResult({ data: next._realData, headers: {}, rateLimit: next._rateLimit }, true);\n canFetchNextPage = this.canFetchNextPage(next._realData);\n const items = next.getItemArray();\n yield* items;\n paginator = next;\n }\n }\n /**\n * Iterate over items \"indefinitely\" without modifying the current instance (until rate limit is hit / they're no more items available)\n *\n * This will **NOT** mutate the current instance, meaning that current instance will not inherit from `includes` and `meta` (v2 API only).\n * Use `Symbol.asyncIterator` (`for-await of`) to directly access items with current instance mutation.\n */\n async *fetchAndIterate() {\n for (const item of this.getItemArray()) {\n yield [item, this];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let paginator = this;\n let canFetchNextPage = this.canFetchNextPage(this._realData);\n while (canFetchNextPage && this._isRateLimitOk && paginator.getItemArray().length > 0) {\n const next = await paginator.next(this._maxResultsWhenFetchLast);\n // Store data into current instance [needed to access includes and meta]\n this.refreshInstanceFromResult({ data: next._realData, headers: {}, rateLimit: next._rateLimit }, true);\n canFetchNextPage = this.canFetchNextPage(next._realData);\n for (const item of next.getItemArray()) {\n yield [item, next];\n }\n this._rateLimit = next._rateLimit;\n paginator = next;\n }\n }\n}\n/** PreviousableTwitterPaginator: a TwitterPaginator able to get consume data from both side, next and previous. */\nexport class PreviousableTwitterPaginator extends TwitterPaginator {\n /**\n * Previous page (new tweets)\n */\n async previous(maxResults) {\n const queryParams = this.getPreviousQueryParams(maxResults);\n const result = await this.makeRequest(queryParams);\n return this.makeNewInstanceFromResult(result, queryParams);\n }\n /**\n * Previous page, but in current instance.\n */\n async fetchPrevious(maxResults) {\n const queryParams = this.getPreviousQueryParams(maxResults);\n const result = await this.makeRequest(queryParams);\n await this.refreshInstanceFromResult(result, false);\n return this;\n }\n}\nexport default TwitterPaginator;\n",
168
- "import TwitterPaginator from './TwitterPaginator';\nexport class CursoredV1Paginator extends TwitterPaginator {\n getNextQueryParams(maxResults) {\n var _a;\n return {\n ...this._queryParams,\n cursor: (_a = this._realData.next_cursor_str) !== null && _a !== void 0 ? _a : this._realData.next_cursor,\n ...(maxResults ? { count: maxResults } : {}),\n };\n }\n isFetchLastOver(result) {\n // If we cant fetch next page\n return !this.canFetchNextPage(result.data);\n }\n canFetchNextPage(result) {\n // If one of cursor is valid\n return !this.isNextCursorInvalid(result.next_cursor) || !this.isNextCursorInvalid(result.next_cursor_str);\n }\n isNextCursorInvalid(value) {\n return value === undefined\n || value === 0\n || value === -1\n || value === '0'\n || value === '-1';\n }\n}\n",
169
- "import { CursoredV1Paginator } from './paginator.v1';\nexport class DmEventsV1Paginator extends CursoredV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'direct_messages/events/list.json';\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.events.push(...result.events);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.events.length;\n }\n getItemArray() {\n return this.events;\n }\n /**\n * Events returned by paginator.\n */\n get events() {\n return this._realData.events;\n }\n}\nexport class WelcomeDmV1Paginator extends CursoredV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'direct_messages/welcome_messages/list.json';\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.welcome_messages.push(...result.welcome_messages);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.welcome_messages.length;\n }\n getItemArray() {\n return this.welcomeMessages;\n }\n get welcomeMessages() {\n return this._realData.welcome_messages;\n }\n}\n",
170
- "export var EUploadMimeType;\n(function (EUploadMimeType) {\n EUploadMimeType[\"Jpeg\"] = \"image/jpeg\";\n EUploadMimeType[\"Mp4\"] = \"video/mp4\";\n EUploadMimeType[\"Mov\"] = \"video/quicktime\";\n EUploadMimeType[\"Gif\"] = \"image/gif\";\n EUploadMimeType[\"Png\"] = \"image/png\";\n EUploadMimeType[\"Srt\"] = \"text/plain\";\n EUploadMimeType[\"Webp\"] = \"image/webp\";\n})(EUploadMimeType || (EUploadMimeType = {}));\n",
171
- "// Creation of DMs\nexport var EDirectMessageEventTypeV1;\n(function (EDirectMessageEventTypeV1) {\n EDirectMessageEventTypeV1[\"Create\"] = \"message_create\";\n EDirectMessageEventTypeV1[\"WelcomeCreate\"] = \"welcome_message\";\n})(EDirectMessageEventTypeV1 || (EDirectMessageEventTypeV1 = {}));\n",
172
- "export var ETwitterApiError;\n(function (ETwitterApiError) {\n ETwitterApiError[\"Request\"] = \"request\";\n ETwitterApiError[\"PartialResponse\"] = \"partial-response\";\n ETwitterApiError[\"Response\"] = \"response\";\n})(ETwitterApiError || (ETwitterApiError = {}));\n/* ERRORS INSTANCES */\nclass ApiError extends Error {\n constructor() {\n super(...arguments);\n this.error = true;\n }\n}\nexport class ApiRequestError extends ApiError {\n constructor(message, options) {\n super(message);\n this.type = ETwitterApiError.Request;\n Error.captureStackTrace(this, this.constructor);\n // Do not show on Node stack trace\n Object.defineProperty(this, '_options', { value: options });\n }\n get request() {\n return this._options.request;\n }\n get requestError() {\n return this._options.requestError;\n }\n toJSON() {\n return {\n type: this.type,\n error: this.requestError,\n };\n }\n}\nexport class ApiPartialResponseError extends ApiError {\n constructor(message, options) {\n super(message);\n this.type = ETwitterApiError.PartialResponse;\n Error.captureStackTrace(this, this.constructor);\n // Do not show on Node stack trace\n Object.defineProperty(this, '_options', { value: options });\n }\n get request() {\n return this._options.request;\n }\n get response() {\n return this._options.response;\n }\n get responseError() {\n return this._options.responseError;\n }\n get rawContent() {\n return this._options.rawContent;\n }\n toJSON() {\n return {\n type: this.type,\n error: this.responseError,\n };\n }\n}\nexport class ApiResponseError extends ApiError {\n constructor(message, options) {\n super(message);\n this.type = ETwitterApiError.Response;\n Error.captureStackTrace(this, this.constructor);\n // Do not show on Node stack trace\n Object.defineProperty(this, '_options', { value: options });\n this.code = options.code;\n this.headers = options.headers;\n this.rateLimit = options.rateLimit;\n // Fix bad error data payload on some v1 endpoints (see https://github.com/PLhery/node-twitter-api-v2/issues/342)\n if (options.data && typeof options.data === 'object' && 'error' in options.data && !options.data.errors) {\n const data = { ...options.data };\n data.errors = [{\n code: EApiV1ErrorCode.InternalError,\n message: data.error,\n }];\n this.data = data;\n }\n else {\n this.data = options.data;\n }\n }\n get request() {\n return this._options.request;\n }\n get response() {\n return this._options.response;\n }\n /** Check for presence of one of given v1/v2 error codes. */\n hasErrorCode(...codes) {\n const errors = this.errors;\n // No errors\n if (!(errors === null || errors === void 0 ? void 0 : errors.length)) {\n return false;\n }\n // v1 errors\n if ('code' in errors[0]) {\n const v1errors = errors;\n return v1errors.some(error => codes.includes(error.code));\n }\n // v2 error\n const v2error = this.data;\n return codes.includes(v2error.type);\n }\n get errors() {\n var _a;\n return (_a = this.data) === null || _a === void 0 ? void 0 : _a.errors;\n }\n get rateLimitError() {\n return this.code === 420 || this.code === 429;\n }\n get isAuthError() {\n if (this.code === 401) {\n return true;\n }\n return this.hasErrorCode(EApiV1ErrorCode.AuthTimestampInvalid, EApiV1ErrorCode.AuthenticationFail, EApiV1ErrorCode.BadAuthenticationData, EApiV1ErrorCode.InvalidOrExpiredToken);\n }\n toJSON() {\n return {\n type: this.type,\n code: this.code,\n error: this.data,\n rateLimit: this.rateLimit,\n headers: this.headers,\n };\n }\n}\nexport var EApiV1ErrorCode;\n(function (EApiV1ErrorCode) {\n // Location errors\n EApiV1ErrorCode[EApiV1ErrorCode[\"InvalidCoordinates\"] = 3] = \"InvalidCoordinates\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"NoLocationFound\"] = 13] = \"NoLocationFound\";\n // Authentication failures\n EApiV1ErrorCode[EApiV1ErrorCode[\"AuthenticationFail\"] = 32] = \"AuthenticationFail\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"InvalidOrExpiredToken\"] = 89] = \"InvalidOrExpiredToken\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"UnableToVerifyCredentials\"] = 99] = \"UnableToVerifyCredentials\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"AuthTimestampInvalid\"] = 135] = \"AuthTimestampInvalid\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"BadAuthenticationData\"] = 215] = \"BadAuthenticationData\";\n // Resources not found or visible\n EApiV1ErrorCode[EApiV1ErrorCode[\"NoUserMatch\"] = 17] = \"NoUserMatch\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"UserNotFound\"] = 50] = \"UserNotFound\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"ResourceNotFound\"] = 34] = \"ResourceNotFound\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TweetNotFound\"] = 144] = \"TweetNotFound\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TweetNotVisible\"] = 179] = \"TweetNotVisible\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"NotAllowedResource\"] = 220] = \"NotAllowedResource\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"MediaIdNotFound\"] = 325] = \"MediaIdNotFound\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TweetNoLongerAvailable\"] = 421] = \"TweetNoLongerAvailable\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TweetViolatedRules\"] = 422] = \"TweetViolatedRules\";\n // Account errors\n EApiV1ErrorCode[EApiV1ErrorCode[\"TargetUserSuspended\"] = 63] = \"TargetUserSuspended\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"YouAreSuspended\"] = 64] = \"YouAreSuspended\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"AccountUpdateFailed\"] = 120] = \"AccountUpdateFailed\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"NoSelfSpamReport\"] = 36] = \"NoSelfSpamReport\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"NoSelfMute\"] = 271] = \"NoSelfMute\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"AccountLocked\"] = 326] = \"AccountLocked\";\n // Application live errors / Twitter errors\n EApiV1ErrorCode[EApiV1ErrorCode[\"RateLimitExceeded\"] = 88] = \"RateLimitExceeded\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"NoDMRightForApp\"] = 93] = \"NoDMRightForApp\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"OverCapacity\"] = 130] = \"OverCapacity\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"InternalError\"] = 131] = \"InternalError\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TooManyFollowings\"] = 161] = \"TooManyFollowings\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TweetLimitExceeded\"] = 185] = \"TweetLimitExceeded\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"DuplicatedTweet\"] = 187] = \"DuplicatedTweet\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TooManySpamReports\"] = 205] = \"TooManySpamReports\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"RequestLooksLikeSpam\"] = 226] = \"RequestLooksLikeSpam\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"NoWriteRightForApp\"] = 261] = \"NoWriteRightForApp\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TweetActionsDisabled\"] = 425] = \"TweetActionsDisabled\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TweetRepliesRestricted\"] = 433] = \"TweetRepliesRestricted\";\n // Invalid request parameters\n EApiV1ErrorCode[EApiV1ErrorCode[\"NamedParameterMissing\"] = 38] = \"NamedParameterMissing\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"InvalidAttachmentUrl\"] = 44] = \"InvalidAttachmentUrl\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TweetTextTooLong\"] = 186] = \"TweetTextTooLong\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"MissingUrlParameter\"] = 195] = \"MissingUrlParameter\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"NoMultipleGifs\"] = 323] = \"NoMultipleGifs\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"InvalidMediaIds\"] = 324] = \"InvalidMediaIds\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"InvalidUrl\"] = 407] = \"InvalidUrl\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TooManyTweetAttachments\"] = 386] = \"TooManyTweetAttachments\";\n // Already sent/deleted item\n EApiV1ErrorCode[EApiV1ErrorCode[\"StatusAlreadyFavorited\"] = 139] = \"StatusAlreadyFavorited\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"FollowRequestAlreadySent\"] = 160] = \"FollowRequestAlreadySent\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"CannotUnmuteANonMutedAccount\"] = 272] = \"CannotUnmuteANonMutedAccount\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"TweetAlreadyRetweeted\"] = 327] = \"TweetAlreadyRetweeted\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"ReplyToDeletedTweet\"] = 385] = \"ReplyToDeletedTweet\";\n // DM Errors\n EApiV1ErrorCode[EApiV1ErrorCode[\"DMReceiverNotFollowingYou\"] = 150] = \"DMReceiverNotFollowingYou\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"UnableToSendDM\"] = 151] = \"UnableToSendDM\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"MustAllowDMFromAnyone\"] = 214] = \"MustAllowDMFromAnyone\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"CannotSendDMToThisUser\"] = 349] = \"CannotSendDMToThisUser\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"DMTextTooLong\"] = 354] = \"DMTextTooLong\";\n // Application misconfiguration\n EApiV1ErrorCode[EApiV1ErrorCode[\"SubscriptionAlreadyExists\"] = 355] = \"SubscriptionAlreadyExists\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"CallbackUrlNotApproved\"] = 415] = \"CallbackUrlNotApproved\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"SuspendedApplication\"] = 416] = \"SuspendedApplication\";\n EApiV1ErrorCode[EApiV1ErrorCode[\"OobOauthIsNotAllowed\"] = 417] = \"OobOauthIsNotAllowed\";\n})(EApiV1ErrorCode || (EApiV1ErrorCode = {}));\nexport var EApiV2ErrorCode;\n(function (EApiV2ErrorCode) {\n // Request errors\n EApiV2ErrorCode[\"InvalidRequest\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#invalid-request\";\n EApiV2ErrorCode[\"ClientForbidden\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#client-forbidden\";\n EApiV2ErrorCode[\"UnsupportedAuthentication\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#unsupported-authentication\";\n // Stream rules errors\n EApiV2ErrorCode[\"InvalidRules\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#invalid-rules\";\n EApiV2ErrorCode[\"TooManyRules\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#rule-cap\";\n EApiV2ErrorCode[\"DuplicatedRules\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#duplicate-rules\";\n // Twitter errors\n EApiV2ErrorCode[\"RateLimitExceeded\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#usage-capped\";\n EApiV2ErrorCode[\"ConnectionError\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#streaming-connection\";\n EApiV2ErrorCode[\"ClientDisconnected\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#client-disconnected\";\n EApiV2ErrorCode[\"TwitterDisconnectedYou\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#operational-disconnect\";\n // Resource errors\n EApiV2ErrorCode[\"ResourceNotFound\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#resource-not-found\";\n EApiV2ErrorCode[\"ResourceUnauthorized\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#not-authorized-for-resource\";\n EApiV2ErrorCode[\"DisallowedResource\"] = \"https://developer.x.com/en/support/x-api/error-troubleshooting#disallowed-resource\";\n})(EApiV2ErrorCode || (EApiV2ErrorCode = {}));\n",
173
- "export var ETwitterStreamEvent;\n(function (ETwitterStreamEvent) {\n ETwitterStreamEvent[\"Connected\"] = \"connected\";\n ETwitterStreamEvent[\"ConnectError\"] = \"connect error\";\n ETwitterStreamEvent[\"ConnectionError\"] = \"connection error\";\n ETwitterStreamEvent[\"ConnectionClosed\"] = \"connection closed\";\n ETwitterStreamEvent[\"ConnectionLost\"] = \"connection lost\";\n ETwitterStreamEvent[\"ReconnectAttempt\"] = \"reconnect attempt\";\n ETwitterStreamEvent[\"Reconnected\"] = \"reconnected\";\n ETwitterStreamEvent[\"ReconnectError\"] = \"reconnect error\";\n ETwitterStreamEvent[\"ReconnectLimitExceeded\"] = \"reconnect limit exceeded\";\n ETwitterStreamEvent[\"DataKeepAlive\"] = \"data keep-alive\";\n ETwitterStreamEvent[\"Data\"] = \"data event content\";\n ETwitterStreamEvent[\"DataError\"] = \"data twitter error\";\n ETwitterStreamEvent[\"TweetParseError\"] = \"data tweet parse error\";\n ETwitterStreamEvent[\"Error\"] = \"stream error\";\n})(ETwitterStreamEvent || (ETwitterStreamEvent = {}));\n",
174
- "export class TwitterApiPluginResponseOverride {\n constructor(value) {\n this.value = value;\n }\n}\n",
175
- "import * as fs from 'fs';\nimport { API_V1_1_PREFIX, API_V1_1_UPLOAD_PREFIX } from '../globals';\nimport { hasMultipleItems } from '../helpers';\nimport { EUploadMimeType, } from '../types';\nimport TwitterApiv1ReadOnly from './client.v1.read';\nimport { getFileHandle, getFileSizeFromFileHandle, getMediaCategoryByMime, getMimeType, readFileIntoBuffer, readNextPartOf, sleepSecs } from './media-helpers.v1';\nconst UPLOAD_ENDPOINT = 'media/upload.json';\n/**\n * Base Twitter v1 client with read/write rights.\n */\nexport default class TwitterApiv1ReadWrite extends TwitterApiv1ReadOnly {\n constructor() {\n super(...arguments);\n this._prefix = API_V1_1_PREFIX;\n }\n /**\n * Get a client with only read rights.\n */\n get readOnly() {\n return this;\n }\n /* Tweet API */\n /**\n * Post a new tweet.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update\n */\n tweet(status, payload = {}) {\n const queryParams = {\n status,\n tweet_mode: 'extended',\n ...payload,\n };\n return this.post('statuses/update.json', queryParams);\n }\n /**\n * Quote an existing tweet.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update\n */\n async quote(status, quotingStatusId, payload = {}) {\n const url = 'https://x.com/i/statuses/' + quotingStatusId;\n return this.tweet(status, { ...payload, attachment_url: url });\n }\n /**\n * Post a series of tweets.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update\n */\n async tweetThread(tweets) {\n const postedTweets = [];\n for (const tweet of tweets) {\n // Retrieve the last sent tweet\n const lastTweet = postedTweets.length ? postedTweets[postedTweets.length - 1] : null;\n // Build the tweet query params\n const queryParams = { ...(typeof tweet === 'string' ? ({ status: tweet }) : tweet) };\n // Reply to an existing tweet if needed\n const inReplyToId = lastTweet ? lastTweet.id_str : queryParams.in_reply_to_status_id;\n const status = queryParams.status;\n if (inReplyToId) {\n postedTweets.push(await this.reply(status, inReplyToId, queryParams));\n }\n else {\n postedTweets.push(await this.tweet(status, queryParams));\n }\n }\n return postedTweets;\n }\n /**\n * Reply to an existing tweet. Shortcut to `.tweet` with tweaked parameters.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update\n */\n reply(status, in_reply_to_status_id, payload = {}) {\n return this.tweet(status, {\n auto_populate_reply_metadata: true,\n in_reply_to_status_id,\n ...payload,\n });\n }\n /**\n * Delete an existing tweet belonging to you.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-destroy-id\n */\n deleteTweet(tweetId) {\n return this.post('statuses/destroy/:id.json', { tweet_mode: 'extended' }, { params: { id: tweetId } });\n }\n /* User API */\n /**\n * Report the specified user as a spam account to Twitter.\n * Additionally, optionally performs the equivalent of POST blocks/create on behalf of the authenticated user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/mute-block-report-users/api-reference/post-users-report_spam\n */\n reportUserAsSpam(options) {\n return this.post('users/report_spam.json', { tweet_mode: 'extended', ...options });\n }\n /**\n * Turn on/off Retweets and device notifications from the specified user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/post-friendships-update\n */\n updateFriendship(options) {\n return this.post('friendships/update.json', options);\n }\n /**\n * Follow the specified user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/post-friendships-create\n */\n createFriendship(options) {\n return this.post('friendships/create.json', options);\n }\n /**\n * Unfollow the specified user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/post-friendships-destroy\n */\n destroyFriendship(options) {\n return this.post('friendships/destroy.json', options);\n }\n /* Account API */\n /**\n * Update current account settings for authenticating user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-account-settings\n */\n updateAccountSettings(options) {\n return this.post('account/settings.json', options);\n }\n /**\n * Sets some values that users are able to set under the \"Account\" tab of their settings page.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile\n */\n updateAccountProfile(options) {\n return this.post('account/update_profile.json', options);\n }\n /**\n * Uploads a profile banner on behalf of the authenticating user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile_banner\n */\n async updateAccountProfileBanner(file, options = {}) {\n const queryParams = {\n banner: await readFileIntoBuffer(file),\n ...options,\n };\n return this.post('account/update_profile_banner.json', queryParams, { forceBodyMode: 'form-data' });\n }\n /**\n * Updates the authenticating user's profile image.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile_image\n */\n async updateAccountProfileImage(file, options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n image: await readFileIntoBuffer(file),\n ...options,\n };\n return this.post('account/update_profile_image.json', queryParams, { forceBodyMode: 'form-data' });\n }\n /**\n * Removes the uploaded profile banner for the authenticating user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-remove_profile_banner\n */\n removeAccountProfileBanner() {\n return this.post('account/remove_profile_banner.json');\n }\n /* Lists */\n /**\n * Creates a new list for the authenticated user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-create\n */\n createList(options) {\n return this.post('lists/create.json', { tweet_mode: 'extended', ...options });\n }\n /**\n * Updates the specified list. The authenticated user must own the list to be able to update it.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-update\n */\n updateList(options) {\n return this.post('lists/update.json', { tweet_mode: 'extended', ...options });\n }\n /**\n * Deletes the specified list. The authenticated user must own the list to be able to destroy it.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-destroy\n */\n removeList(options) {\n return this.post('lists/destroy.json', { tweet_mode: 'extended', ...options });\n }\n /**\n * Adds multiple members to a list, by specifying a comma-separated list of member ids or screen names.\n * If you add a single `user_id` or `screen_name`, it will target `lists/members/create.json`, otherwise\n * it will target `lists/members/create_all.json`.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-members-create_all\n */\n addListMembers(options) {\n const hasMultiple = (options.user_id && hasMultipleItems(options.user_id)) || (options.screen_name && hasMultipleItems(options.screen_name));\n const endpoint = hasMultiple ? 'lists/members/create_all.json' : 'lists/members/create.json';\n return this.post(endpoint, options);\n }\n /**\n * Removes one or more members from a list, by specifying a comma-separated list of member ids or screen names.\n * If you add a single `user_id` or `screen_name`, it will target `lists/members/destroy.json`, otherwise\n * it will target `lists/members/destroy_all.json`.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-members-destroy_all\n */\n removeListMembers(options) {\n const hasMultiple = (options.user_id && hasMultipleItems(options.user_id)) || (options.screen_name && hasMultipleItems(options.screen_name));\n const endpoint = hasMultiple ? 'lists/members/destroy_all.json' : 'lists/members/destroy.json';\n return this.post(endpoint, options);\n }\n /**\n * Subscribes the authenticated user to the specified list.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-subscribers-create\n */\n subscribeToList(options) {\n return this.post('lists/subscribers/create.json', { tweet_mode: 'extended', ...options });\n }\n /**\n * Unsubscribes the authenticated user of the specified list.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-subscribers-destroy\n */\n unsubscribeOfList(options) {\n return this.post('lists/subscribers/destroy.json', { tweet_mode: 'extended', ...options });\n }\n /* Media upload API */\n /**\n * This endpoint can be used to provide additional information about the uploaded media_id.\n * This feature is currently only supported for images and GIFs.\n * https://developer.x.com/en/docs/twitter-api/v1/media/upload-media/api-reference/post-media-metadata-create\n */\n createMediaMetadata(mediaId, metadata) {\n return this.post('media/metadata/create.json', { media_id: mediaId, ...metadata }, { prefix: API_V1_1_UPLOAD_PREFIX, forceBodyMode: 'json' });\n }\n /**\n * Use this endpoint to associate uploaded subtitles to an uploaded video. You can associate subtitles to video before or after Tweeting.\n * **To obtain subtitle media ID, you must upload each subtitle file separately using `.uploadMedia()` method.**\n *\n * https://developer.x.com/en/docs/twitter-api/v1/media/upload-media/api-reference/post-media-subtitles-create\n */\n createMediaSubtitles(mediaId, subtitles) {\n return this.post('media/subtitles/create.json', { media_id: mediaId, media_category: 'TweetVideo', subtitle_info: { subtitles } }, { prefix: API_V1_1_UPLOAD_PREFIX, forceBodyMode: 'json' });\n }\n /**\n * Use this endpoint to dissociate subtitles from a video and delete the subtitles. You can dissociate subtitles from a video before or after Tweeting.\n * https://developer.x.com/en/docs/twitter-api/v1/media/upload-media/api-reference/post-media-subtitles-delete\n */\n deleteMediaSubtitles(mediaId, ...languages) {\n return this.post('media/subtitles/delete.json', {\n media_id: mediaId,\n media_category: 'TweetVideo',\n subtitle_info: { subtitles: languages.map(lang => ({ language_code: lang })) },\n }, { prefix: API_V1_1_UPLOAD_PREFIX, forceBodyMode: 'json' });\n }\n async uploadMedia(file, options = {}, returnFullMediaData = false) {\n var _a;\n const chunkLength = (_a = options.chunkLength) !== null && _a !== void 0 ? _a : (1024 * 1024);\n const { fileHandle, mediaCategory, fileSize, mimeType } = await this.getUploadMediaRequirements(file, options);\n // Get the file handle (if not buffer)\n try {\n // Finally! We can send INIT message.\n const mediaData = await this.post(UPLOAD_ENDPOINT, {\n command: 'INIT',\n total_bytes: fileSize,\n media_type: mimeType,\n media_category: mediaCategory,\n additional_owners: options.additionalOwners,\n shared: options.shared ? true : undefined,\n }, { prefix: API_V1_1_UPLOAD_PREFIX });\n // Upload the media chunk by chunk\n await this.mediaChunkedUpload(fileHandle, chunkLength, mediaData.media_id_string, options.maxConcurrentUploads);\n // Finalize media\n const fullMediaData = await this.post(UPLOAD_ENDPOINT, {\n command: 'FINALIZE',\n media_id: mediaData.media_id_string,\n }, { prefix: API_V1_1_UPLOAD_PREFIX });\n if (fullMediaData.processing_info && fullMediaData.processing_info.state !== 'succeeded') {\n // Must wait if video is still computed\n await this.awaitForMediaProcessingCompletion(fullMediaData);\n }\n // Video is ready, return media_id\n if (returnFullMediaData) {\n return fullMediaData;\n }\n else {\n return fullMediaData.media_id_string;\n }\n }\n finally {\n // Close file if any\n if (typeof file === 'number') {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n fs.close(file, () => { });\n }\n else if (typeof fileHandle === 'object' && !(fileHandle instanceof Buffer)) {\n fileHandle.close();\n }\n }\n }\n async awaitForMediaProcessingCompletion(fullMediaData) {\n var _a;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n fullMediaData = await this.mediaInfo(fullMediaData.media_id_string);\n const { processing_info } = fullMediaData;\n if (!processing_info || processing_info.state === 'succeeded') {\n // Ok, completed!\n return;\n }\n if ((_a = processing_info.error) === null || _a === void 0 ? void 0 : _a.code) {\n const { name, message } = processing_info.error;\n throw new Error(`Failed to process media: ${name} - ${message}.`);\n }\n if (processing_info.state === 'failed') {\n // No error data\n throw new Error('Failed to process the media.');\n }\n if (processing_info.check_after_secs) {\n // Await for given seconds\n await sleepSecs(processing_info.check_after_secs);\n }\n else {\n // No info; Await for 5 seconds\n await sleepSecs(5);\n }\n }\n }\n async getUploadMediaRequirements(file, { mimeType, type, target, longVideo } = {}) {\n // Get the file handle (if not buffer)\n let fileHandle;\n try {\n fileHandle = await getFileHandle(file);\n // Get the mimetype\n const realMimeType = getMimeType(file, type, mimeType);\n // Get the media category\n let mediaCategory;\n // If explicit longmp4 OR explicit MIME type and not DM target\n if (realMimeType === EUploadMimeType.Mp4 && ((!mimeType && !type && target !== 'dm') || longVideo)) {\n mediaCategory = 'amplify_video';\n }\n else {\n mediaCategory = getMediaCategoryByMime(realMimeType, target !== null && target !== void 0 ? target : 'tweet');\n }\n return {\n fileHandle,\n mediaCategory,\n fileSize: await getFileSizeFromFileHandle(fileHandle),\n mimeType: realMimeType,\n };\n }\n catch (e) {\n // Close file if any\n if (typeof file === 'number') {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n fs.close(file, () => { });\n }\n else if (typeof fileHandle === 'object' && !(fileHandle instanceof Buffer)) {\n fileHandle.close();\n }\n throw e;\n }\n }\n async mediaChunkedUpload(fileHandle, chunkLength, mediaId, maxConcurrentUploads = 3) {\n // Send chunk by chunk\n let chunkIndex = 0;\n if (maxConcurrentUploads < 1) {\n throw new RangeError('Bad maxConcurrentUploads parameter.');\n }\n // Creating a buffer for doing file stuff (if we don't have one)\n const buffer = fileHandle instanceof Buffer ? undefined : Buffer.alloc(chunkLength);\n // Sliced/filled buffer returned for each part\n let readBuffer;\n // Needed to know when we should stop reading the file\n let nread;\n // Needed to use the buffer object (file handles always \"remembers\" file position)\n let offset = 0;\n [readBuffer, nread] = await readNextPartOf(fileHandle, chunkLength, offset, buffer);\n offset += nread;\n // Handle max concurrent uploads\n const currentUploads = new Set();\n // Read buffer until file is completely read\n while (nread) {\n const mediaBufferPart = readBuffer.slice(0, nread);\n // Sent part if part has something inside\n if (mediaBufferPart.length) {\n const request = this.post(UPLOAD_ENDPOINT, {\n command: 'APPEND',\n media_id: mediaId,\n segment_index: chunkIndex,\n media: mediaBufferPart,\n }, { prefix: API_V1_1_UPLOAD_PREFIX });\n currentUploads.add(request);\n request.then(() => {\n currentUploads.delete(request);\n });\n chunkIndex++;\n }\n if (currentUploads.size >= maxConcurrentUploads) {\n // Await for first promise to be finished\n await Promise.race(currentUploads);\n }\n [readBuffer, nread] = await readNextPartOf(fileHandle, chunkLength, offset, buffer);\n offset += nread;\n }\n await Promise.all([...currentUploads]);\n }\n}\n",
176
- "export const TwitterApiV2Settings = {\n debug: false,\n deprecationWarnings: true,\n logger: { log: console.log.bind(console) },\n};\n",
177
- "import { TwitterApiV2Settings } from './settings';\nexport function sharedPromise(getter) {\n const sharedPromise = {\n value: undefined,\n promise: getter().then(val => {\n sharedPromise.value = val;\n return val;\n }),\n };\n return sharedPromise;\n}\nexport function arrayWrap(value) {\n if (Array.isArray(value)) {\n return value;\n }\n return [value];\n}\nexport function trimUndefinedProperties(object) {\n // Delete undefined parameters\n for (const parameter of Object.keys(object)) {\n if (object[parameter] === undefined) {\n delete object[parameter];\n }\n }\n}\nexport function isTweetStreamV2ErrorPayload(payload) {\n // Is error only if 'errors' is present and 'data' does not exists\n return typeof payload === 'object'\n && 'errors' in payload\n && !('data' in payload);\n}\nexport function hasMultipleItems(item) {\n if (Array.isArray(item) && item.length > 1) {\n return true;\n }\n return item.toString().includes(',');\n}\nconst deprecationWarningsCache = new Set();\nexport function safeDeprecationWarning(message) {\n if (typeof console === 'undefined' || !console.warn || !TwitterApiV2Settings.deprecationWarnings) {\n return;\n }\n const hash = `${message.instance}-${message.method}-${message.problem}`;\n if (deprecationWarningsCache.has(hash)) {\n return;\n }\n const formattedMsg = `[twitter-api-v2] Deprecation warning: In ${message.instance}.${message.method}() call` +\n `, ${message.problem}.\\n${message.resolution}.`;\n console.warn(formattedMsg);\n console.warn('To disable this message, import variable TwitterApiV2Settings from twitter-api-v2 and set TwitterApiV2Settings.deprecationWarnings to false.');\n deprecationWarningsCache.add(hash);\n}\n",
178
- "import { EventEmitter } from 'events';\nimport RequestHandlerHelper from '../client-mixins/request-handler.helper';\nimport { ETwitterStreamEvent } from '../types';\nimport TweetStreamEventCombiner from './TweetStreamEventCombiner';\nimport TweetStreamParser, { EStreamParserEvent } from './TweetStreamParser';\n// In seconds\nconst basicRetriesAttempt = [5, 15, 30, 60, 90, 120, 180, 300, 600, 900];\n// Default retry function\nconst basicReconnectRetry = tryOccurrence => tryOccurrence > basicRetriesAttempt.length\n ? 901000\n : basicRetriesAttempt[tryOccurrence - 1] * 1000;\nexport class TweetStream extends EventEmitter {\n constructor(requestData, connection) {\n super();\n this.requestData = requestData;\n this.autoReconnect = false;\n this.autoReconnectRetries = 5;\n // 2 minutes without any Twitter signal\n this.keepAliveTimeoutMs = 1000 * 120;\n this.nextRetryTimeout = basicReconnectRetry;\n this.parser = new TweetStreamParser();\n this.connectionProcessRunning = false;\n this.onKeepAliveTimeout = this.onKeepAliveTimeout.bind(this);\n this.initEventsFromParser();\n if (connection) {\n this.req = connection.req;\n this.res = connection.res;\n this.originalResponse = connection.originalResponse;\n this.initEventsFromRequest();\n }\n }\n on(event, handler) {\n return super.on(event, handler);\n }\n initEventsFromRequest() {\n if (!this.req || !this.res) {\n throw new Error('TweetStream error: You cannot init TweetStream without a request and response object.');\n }\n const errorHandler = (err) => {\n this.emit(ETwitterStreamEvent.ConnectionError, err);\n this.emit(ETwitterStreamEvent.Error, {\n type: ETwitterStreamEvent.ConnectionError,\n error: err,\n message: 'Connection lost or closed by Twitter.',\n });\n this.onConnectionError();\n };\n this.req.on('error', errorHandler);\n this.res.on('error', errorHandler);\n // Usually, connection should not be closed by Twitter!\n this.res.on('close', () => errorHandler(new Error('Connection closed by Twitter.')));\n this.res.on('data', (chunk) => {\n this.resetKeepAliveTimeout();\n if (chunk.toString() === '\\r\\n') {\n return this.emit(ETwitterStreamEvent.DataKeepAlive);\n }\n this.parser.push(chunk.toString());\n });\n // Starts the keep alive timeout\n this.resetKeepAliveTimeout();\n }\n initEventsFromParser() {\n const payloadIsError = this.requestData.payloadIsError;\n this.parser.on(EStreamParserEvent.ParsedData, (eventData) => {\n if (payloadIsError && payloadIsError(eventData)) {\n this.emit(ETwitterStreamEvent.DataError, eventData);\n this.emit(ETwitterStreamEvent.Error, {\n type: ETwitterStreamEvent.DataError,\n error: eventData,\n message: 'Twitter sent a payload that is detected as an error payload.',\n });\n }\n else {\n this.emit(ETwitterStreamEvent.Data, eventData);\n }\n });\n this.parser.on(EStreamParserEvent.ParseError, (error) => {\n this.emit(ETwitterStreamEvent.TweetParseError, error);\n this.emit(ETwitterStreamEvent.Error, {\n type: ETwitterStreamEvent.TweetParseError,\n error,\n message: 'Failed to parse stream data.',\n });\n });\n }\n resetKeepAliveTimeout() {\n this.unbindKeepAliveTimeout();\n if (this.keepAliveTimeoutMs !== Infinity) {\n this.keepAliveTimeout = setTimeout(this.onKeepAliveTimeout, this.keepAliveTimeoutMs);\n }\n }\n onKeepAliveTimeout() {\n this.emit(ETwitterStreamEvent.ConnectionLost);\n this.onConnectionError();\n }\n unbindTimeouts() {\n this.unbindRetryTimeout();\n this.unbindKeepAliveTimeout();\n }\n unbindKeepAliveTimeout() {\n if (this.keepAliveTimeout) {\n clearTimeout(this.keepAliveTimeout);\n this.keepAliveTimeout = undefined;\n }\n }\n unbindRetryTimeout() {\n if (this.retryTimeout) {\n clearTimeout(this.retryTimeout);\n this.retryTimeout = undefined;\n }\n }\n closeWithoutEmit() {\n this.unbindTimeouts();\n if (this.res) {\n this.res.removeAllListeners();\n // Close response silently\n this.res.destroy();\n }\n if (this.req) {\n this.req.removeAllListeners();\n // Close connection silently\n this.req.destroy();\n }\n }\n /** Terminate connection to Twitter. */\n close() {\n this.emit(ETwitterStreamEvent.ConnectionClosed);\n this.closeWithoutEmit();\n }\n /** Unbind all listeners, and close connection. */\n destroy() {\n this.removeAllListeners();\n this.close();\n }\n /**\n * Make a new request that creates a new `TweetStream` instance with\n * the same parameters, and bind current listeners to new stream.\n */\n async clone() {\n const newRequest = new RequestHandlerHelper(this.requestData);\n const newStream = await newRequest.makeRequestAsStream();\n // Clone attached listeners\n const listenerNames = this.eventNames();\n for (const listener of listenerNames) {\n const callbacks = this.listeners(listener);\n for (const callback of callbacks) {\n newStream.on(listener, callback);\n }\n }\n return newStream;\n }\n /** Start initial stream connection, setup options on current instance and returns itself. */\n async connect(options = {}) {\n if (typeof options.autoReconnect !== 'undefined') {\n this.autoReconnect = options.autoReconnect;\n }\n if (typeof options.autoReconnectRetries !== 'undefined') {\n this.autoReconnectRetries = options.autoReconnectRetries === 'unlimited'\n ? Infinity\n : options.autoReconnectRetries;\n }\n if (typeof options.keepAliveTimeout !== 'undefined') {\n this.keepAliveTimeoutMs = options.keepAliveTimeout === 'disable'\n ? Infinity\n : options.keepAliveTimeout;\n }\n if (typeof options.nextRetryTimeout !== 'undefined') {\n this.nextRetryTimeout = options.nextRetryTimeout;\n }\n // Make the connection\n this.unbindTimeouts();\n try {\n await this.reconnect();\n }\n catch (e) {\n this.emit(ETwitterStreamEvent.ConnectError, 0);\n this.emit(ETwitterStreamEvent.Error, {\n type: ETwitterStreamEvent.ConnectError,\n error: e,\n message: 'Connect error - Initial connection just failed.',\n });\n // Only make a reconnection attempt if autoReconnect is true!\n // Otherwise, let error be propagated\n if (this.autoReconnect) {\n this.makeAutoReconnectRetry(0, e);\n }\n else {\n throw e;\n }\n }\n return this;\n }\n /** Make a new request to (re)connect to Twitter. */\n async reconnect() {\n if (this.connectionProcessRunning) {\n throw new Error('Connection process is already running.');\n }\n this.connectionProcessRunning = true;\n try {\n let initialConnection = true;\n if (this.req) {\n initialConnection = false;\n this.closeWithoutEmit();\n }\n const { req, res, originalResponse } = await new RequestHandlerHelper(this.requestData).makeRequestAndResolveWhenReady();\n this.req = req;\n this.res = res;\n this.originalResponse = originalResponse;\n this.emit(initialConnection ? ETwitterStreamEvent.Connected : ETwitterStreamEvent.Reconnected);\n this.parser.reset();\n this.initEventsFromRequest();\n }\n finally {\n this.connectionProcessRunning = false;\n }\n }\n async onConnectionError(retryOccurrence = 0) {\n this.unbindTimeouts();\n // Close the request if necessary\n this.closeWithoutEmit();\n // Terminate stream by events if necessary (no auto-reconnect or retries exceeded)\n if (!this.autoReconnect) {\n this.emit(ETwitterStreamEvent.ConnectionClosed);\n return;\n }\n if (retryOccurrence >= this.autoReconnectRetries) {\n this.emit(ETwitterStreamEvent.ReconnectLimitExceeded);\n this.emit(ETwitterStreamEvent.ConnectionClosed);\n return;\n }\n // If all other conditions fails, do a reconnect attempt\n try {\n this.emit(ETwitterStreamEvent.ReconnectAttempt, retryOccurrence);\n await this.reconnect();\n }\n catch (e) {\n this.emit(ETwitterStreamEvent.ReconnectError, retryOccurrence);\n this.emit(ETwitterStreamEvent.Error, {\n type: ETwitterStreamEvent.ReconnectError,\n error: e,\n message: `Reconnect error - ${retryOccurrence + 1} attempts made yet.`,\n });\n this.makeAutoReconnectRetry(retryOccurrence, e);\n }\n }\n makeAutoReconnectRetry(retryOccurrence, error) {\n const nextRetry = this.nextRetryTimeout(retryOccurrence + 1, error);\n this.retryTimeout = setTimeout(() => {\n this.onConnectionError(retryOccurrence + 1);\n }, nextRetry);\n }\n async *[Symbol.asyncIterator]() {\n const eventCombiner = new TweetStreamEventCombiner(this);\n try {\n while (true) {\n if (!this.req || this.req.aborted) {\n throw new Error('Connection closed');\n }\n if (eventCombiner.hasStack()) {\n yield* eventCombiner.popStack();\n }\n const { type, payload } = await eventCombiner.nextEvent();\n if (type === 'error') {\n throw payload;\n }\n }\n }\n finally {\n eventCombiner.destroy();\n }\n }\n}\nexport default TweetStream;\n",
179
- "import { request } from 'https';\nimport { TwitterApiV2Settings } from '../settings';\nimport TweetStream from '../stream/TweetStream';\nimport { ApiPartialResponseError, ApiRequestError, ApiResponseError } from '../types';\nimport * as zlib from 'zlib';\nimport { EventEmitter } from 'events';\nexport class RequestHandlerHelper {\n constructor(requestData) {\n this.requestData = requestData;\n this.requestErrorHandled = false;\n this.responseData = [];\n }\n /* Request helpers */\n get hrefPathname() {\n const url = this.requestData.url;\n return url.hostname + url.pathname;\n }\n isCompressionDisabled() {\n return !this.requestData.compression || this.requestData.compression === 'identity';\n }\n isFormEncodedEndpoint() {\n return this.requestData.url.href.startsWith('https://api.x.com/oauth/');\n }\n /* Error helpers */\n createRequestError(error) {\n if (TwitterApiV2Settings.debug) {\n TwitterApiV2Settings.logger.log('Request error:', error);\n }\n return new ApiRequestError('Request failed.', {\n request: this.req,\n error,\n });\n }\n createPartialResponseError(error, abortClose) {\n const res = this.res;\n let message = `Request failed with partial response with HTTP code ${res.statusCode}`;\n if (abortClose) {\n message += ' (connection abruptly closed)';\n }\n else {\n message += ' (parse error)';\n }\n return new ApiPartialResponseError(message, {\n request: this.req,\n response: this.res,\n responseError: error,\n rawContent: Buffer.concat(this.responseData).toString(),\n });\n }\n formatV1Errors(errors) {\n return errors\n .map(({ code, message }) => `${message} (Twitter code ${code})`)\n .join(', ');\n }\n formatV2Error(error) {\n return `${error.title}: ${error.detail} (see ${error.type})`;\n }\n createResponseError({ res, data, rateLimit, code }) {\n var _a;\n if (TwitterApiV2Settings.debug) {\n TwitterApiV2Settings.logger.log(`Request failed with code ${code}, data:`, data);\n TwitterApiV2Settings.logger.log('Response headers:', res.headers);\n }\n // Errors formatting.\n let errorString = `Request failed with code ${code}`;\n if ((_a = data === null || data === void 0 ? void 0 : data.errors) === null || _a === void 0 ? void 0 : _a.length) {\n const errors = data.errors;\n if (typeof errors[0] === 'object' && 'code' in errors[0]) {\n errorString += ' - ' + this.formatV1Errors(errors);\n }\n else {\n errorString += ' - ' + this.formatV2Error(data);\n }\n }\n return new ApiResponseError(errorString, {\n code,\n data,\n headers: res.headers,\n request: this.req,\n response: res,\n rateLimit,\n });\n }\n /* Response helpers */\n getResponseDataStream(res) {\n if (this.isCompressionDisabled()) {\n return res;\n }\n const contentEncoding = (res.headers['content-encoding'] || 'identity').trim().toLowerCase();\n if (contentEncoding === 'br') {\n const brotli = zlib.createBrotliDecompress({\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH,\n });\n res.pipe(brotli);\n return brotli;\n }\n if (contentEncoding === 'gzip') {\n const gunzip = zlib.createGunzip({\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH,\n });\n res.pipe(gunzip);\n return gunzip;\n }\n if (contentEncoding === 'deflate') {\n const inflate = zlib.createInflate({\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH,\n });\n res.pipe(inflate);\n return inflate;\n }\n return res;\n }\n detectResponseType(res) {\n var _a, _b;\n // Auto parse if server responds with JSON body\n if (((_a = res.headers['content-type']) === null || _a === void 0 ? void 0 : _a.includes('application/json')) || ((_b = res.headers['content-type']) === null || _b === void 0 ? void 0 : _b.includes('application/problem+json'))) {\n return 'json';\n }\n // f-e oauth token endpoints\n else if (this.isFormEncodedEndpoint()) {\n return 'url';\n }\n return 'text';\n }\n getParsedResponse(res) {\n const data = this.responseData;\n const mode = this.requestData.forceParseMode || this.detectResponseType(res);\n if (mode === 'buffer') {\n return Buffer.concat(data);\n }\n else if (mode === 'text') {\n return Buffer.concat(data).toString();\n }\n else if (mode === 'json') {\n const asText = Buffer.concat(data).toString();\n return asText.length ? JSON.parse(asText) : undefined;\n }\n else if (mode === 'url') {\n const asText = Buffer.concat(data).toString();\n const formEntries = {};\n for (const [item, value] of new URLSearchParams(asText)) {\n formEntries[item] = value;\n }\n return formEntries;\n }\n else {\n // mode === 'none'\n return undefined;\n }\n }\n getRateLimitFromResponse(res) {\n let rateLimit = undefined;\n if (res.headers['x-rate-limit-limit']) {\n rateLimit = {\n limit: Number(res.headers['x-rate-limit-limit']),\n remaining: Number(res.headers['x-rate-limit-remaining']),\n reset: Number(res.headers['x-rate-limit-reset']),\n };\n if (res.headers['x-app-limit-24hour-limit']) {\n rateLimit.day = {\n limit: Number(res.headers['x-app-limit-24hour-limit']),\n remaining: Number(res.headers['x-app-limit-24hour-remaining']),\n reset: Number(res.headers['x-app-limit-24hour-reset']),\n };\n }\n if (res.headers['x-user-limit-24hour-limit']) {\n rateLimit.userDay = {\n limit: Number(res.headers['x-user-limit-24hour-limit']),\n remaining: Number(res.headers['x-user-limit-24hour-remaining']),\n reset: Number(res.headers['x-user-limit-24hour-reset']),\n };\n }\n if (this.requestData.rateLimitSaver) {\n this.requestData.rateLimitSaver(rateLimit);\n }\n }\n return rateLimit;\n }\n /* Request event handlers */\n onSocketEventHandler(reject, cleanupListener, socket) {\n const onClose = this.onSocketCloseHandler.bind(this, reject);\n socket.on('close', onClose);\n cleanupListener.on('complete', () => socket.off('close', onClose));\n }\n onSocketCloseHandler(reject) {\n this.req.removeAllListeners('timeout');\n const res = this.res;\n if (res) {\n // Response ok, res.close/res.end can handle request ending\n return;\n }\n if (!this.requestErrorHandled) {\n return reject(this.createRequestError(new Error('Socket closed without any information.')));\n }\n // else: other situation\n }\n requestErrorHandler(reject, requestError) {\n var _a, _b;\n (_b = (_a = this.requestData).requestEventDebugHandler) === null || _b === void 0 ? void 0 : _b.call(_a, 'request-error', { requestError });\n this.requestErrorHandled = true;\n reject(this.createRequestError(requestError));\n }\n timeoutErrorHandler() {\n this.requestErrorHandled = true;\n this.req.destroy(new Error('Request timeout.'));\n }\n /* Response event handlers */\n classicResponseHandler(resolve, reject, res) {\n this.res = res;\n const dataStream = this.getResponseDataStream(res);\n // Register the response data\n dataStream.on('data', chunk => this.responseData.push(chunk));\n dataStream.on('end', this.onResponseEndHandler.bind(this, resolve, reject));\n dataStream.on('close', this.onResponseCloseHandler.bind(this, resolve, reject));\n // Debug handlers\n if (this.requestData.requestEventDebugHandler) {\n this.requestData.requestEventDebugHandler('response', { res });\n res.on('aborted', error => this.requestData.requestEventDebugHandler('response-aborted', { error }));\n res.on('error', error => this.requestData.requestEventDebugHandler('response-error', { error }));\n res.on('close', () => this.requestData.requestEventDebugHandler('response-close', { data: this.responseData }));\n res.on('end', () => this.requestData.requestEventDebugHandler('response-end'));\n }\n }\n onResponseEndHandler(resolve, reject) {\n const rateLimit = this.getRateLimitFromResponse(this.res);\n let data;\n try {\n data = this.getParsedResponse(this.res);\n }\n catch (e) {\n reject(this.createPartialResponseError(e, false));\n return;\n }\n // Handle bad error codes\n const code = this.res.statusCode;\n if (code >= 400) {\n reject(this.createResponseError({ data, res: this.res, rateLimit, code }));\n return;\n }\n if (TwitterApiV2Settings.debug) {\n TwitterApiV2Settings.logger.log(`[${this.requestData.options.method} ${this.hrefPathname}]: Request succeeds with code ${this.res.statusCode}`);\n TwitterApiV2Settings.logger.log('Response body:', data);\n }\n resolve({\n data,\n headers: this.res.headers,\n rateLimit,\n });\n }\n onResponseCloseHandler(resolve, reject) {\n const res = this.res;\n if (res.aborted) {\n // Try to parse the request (?)\n try {\n this.getParsedResponse(this.res);\n // Ok, try to resolve normally the request\n return this.onResponseEndHandler(resolve, reject);\n }\n catch (e) {\n // Parse error, just drop with content\n return reject(this.createPartialResponseError(e, true));\n }\n }\n if (!res.complete) {\n return reject(this.createPartialResponseError(new Error('Response has been interrupted before response could be parsed.'), true));\n }\n // else: end has been called\n }\n streamResponseHandler(resolve, reject, res) {\n const code = res.statusCode;\n if (code < 400) {\n if (TwitterApiV2Settings.debug) {\n TwitterApiV2Settings.logger.log(`[${this.requestData.options.method} ${this.hrefPathname}]: Request succeeds with code ${res.statusCode} (starting stream)`);\n }\n const dataStream = this.getResponseDataStream(res);\n // HTTP code ok, consume stream\n resolve({ req: this.req, res: dataStream, originalResponse: res, requestData: this.requestData });\n }\n else {\n // Handle response normally, can only rejects\n this.classicResponseHandler(() => undefined, reject, res);\n }\n }\n /* Wrappers for request lifecycle */\n debugRequest() {\n const url = this.requestData.url;\n TwitterApiV2Settings.logger.log(`[${this.requestData.options.method} ${this.hrefPathname}]`, this.requestData.options);\n if (url.search) {\n TwitterApiV2Settings.logger.log('Request parameters:', [...url.searchParams.entries()].map(([key, value]) => `${key}: ${value}`));\n }\n if (this.requestData.body) {\n TwitterApiV2Settings.logger.log('Request body:', this.requestData.body);\n }\n }\n buildRequest() {\n var _a;\n const url = this.requestData.url;\n const auth = url.username ? `${url.username}:${url.password}` : undefined;\n const headers = (_a = this.requestData.options.headers) !== null && _a !== void 0 ? _a : {};\n if (this.requestData.compression === true || this.requestData.compression === 'brotli') {\n headers['accept-encoding'] = 'br;q=1.0, gzip;q=0.8, deflate;q=0.5, *;q=0.1';\n }\n else if (this.requestData.compression === 'gzip') {\n headers['accept-encoding'] = 'gzip;q=1, deflate;q=0.5, *;q=0.1';\n }\n else if (this.requestData.compression === 'deflate') {\n headers['accept-encoding'] = 'deflate;q=1, *;q=0.1';\n }\n if (TwitterApiV2Settings.debug) {\n this.debugRequest();\n }\n this.req = request({\n ...this.requestData.options,\n // Define URL params manually, addresses dependencies error https://github.com/PLhery/node-twitter-api-v2/issues/94\n host: url.hostname,\n port: url.port || undefined,\n path: url.pathname + url.search,\n protocol: url.protocol,\n auth,\n headers,\n });\n }\n registerRequestEventDebugHandlers(req) {\n req.on('close', () => this.requestData.requestEventDebugHandler('close'));\n req.on('abort', () => this.requestData.requestEventDebugHandler('abort'));\n req.on('socket', socket => {\n this.requestData.requestEventDebugHandler('socket', { socket });\n socket.on('error', error => this.requestData.requestEventDebugHandler('socket-error', { socket, error }));\n socket.on('connect', () => this.requestData.requestEventDebugHandler('socket-connect', { socket }));\n socket.on('close', withError => this.requestData.requestEventDebugHandler('socket-close', { socket, withError }));\n socket.on('end', () => this.requestData.requestEventDebugHandler('socket-end', { socket }));\n socket.on('lookup', (...data) => this.requestData.requestEventDebugHandler('socket-lookup', { socket, data }));\n socket.on('timeout', () => this.requestData.requestEventDebugHandler('socket-timeout', { socket }));\n });\n }\n makeRequest() {\n this.buildRequest();\n return new Promise((_resolve, _reject) => {\n // Hooks to call when promise is fulfulled to cleanup the socket (shared between requests)\n const resolve = value => {\n cleanupListener.emit('complete');\n _resolve(value);\n };\n const reject = value => {\n cleanupListener.emit('complete');\n _reject(value);\n };\n const cleanupListener = new EventEmitter();\n const req = this.req;\n // Handle request errors\n req.on('error', this.requestErrorHandler.bind(this, reject));\n req.on('socket', this.onSocketEventHandler.bind(this, reject, cleanupListener));\n req.on('response', this.classicResponseHandler.bind(this, resolve, reject));\n if (this.requestData.options.timeout) {\n req.on('timeout', this.timeoutErrorHandler.bind(this));\n }\n // Debug handlers\n if (this.requestData.requestEventDebugHandler) {\n this.registerRequestEventDebugHandlers(req);\n }\n if (this.requestData.body) {\n req.write(this.requestData.body);\n }\n req.end();\n });\n }\n async makeRequestAsStream() {\n const { req, res, requestData, originalResponse } = await this.makeRequestAndResolveWhenReady();\n return new TweetStream(requestData, { req, res, originalResponse });\n }\n makeRequestAndResolveWhenReady() {\n this.buildRequest();\n return new Promise((resolve, reject) => {\n const req = this.req;\n // Handle request errors\n req.on('error', this.requestErrorHandler.bind(this, reject));\n req.on('response', this.streamResponseHandler.bind(this, resolve, reject));\n if (this.requestData.body) {\n req.write(this.requestData.body);\n }\n req.end();\n });\n }\n}\nexport default RequestHandlerHelper;\n",
180
- "import { EventEmitter } from 'events';\nimport { ETwitterStreamEvent } from '../types';\nexport class TweetStreamEventCombiner extends EventEmitter {\n constructor(stream) {\n super();\n this.stream = stream;\n this.stack = [];\n this.onStreamData = this.onStreamData.bind(this);\n this.onStreamError = this.onStreamError.bind(this);\n this.onceNewEvent = this.once.bind(this, 'event');\n // Init events from stream\n stream.on(ETwitterStreamEvent.Data, this.onStreamData);\n // Ignore reconnect errors: Don't close event combiner until connection error/closed\n stream.on(ETwitterStreamEvent.ConnectionError, this.onStreamError);\n stream.on(ETwitterStreamEvent.TweetParseError, this.onStreamError);\n stream.on(ETwitterStreamEvent.ConnectionClosed, this.onStreamError);\n }\n /** Returns a new `Promise` that will `resolve` on next event (`data` or any sort of error). */\n nextEvent() {\n return new Promise(this.onceNewEvent);\n }\n /** Returns `true` if there's something in the stack. */\n hasStack() {\n return this.stack.length > 0;\n }\n /** Returns stacked data events, and clean the stack. */\n popStack() {\n const stack = this.stack;\n this.stack = [];\n return stack;\n }\n /** Cleanup all the listeners attached on stream. */\n destroy() {\n this.removeAllListeners();\n this.stream.off(ETwitterStreamEvent.Data, this.onStreamData);\n this.stream.off(ETwitterStreamEvent.ConnectionError, this.onStreamError);\n this.stream.off(ETwitterStreamEvent.TweetParseError, this.onStreamError);\n this.stream.off(ETwitterStreamEvent.ConnectionClosed, this.onStreamError);\n }\n emitEvent(type, payload) {\n this.emit('event', { type, payload });\n }\n onStreamError(payload) {\n this.emitEvent('error', payload);\n }\n onStreamData(payload) {\n this.stack.push(payload);\n this.emitEvent('data', payload);\n }\n}\nexport default TweetStreamEventCombiner;\n",
181
- "import { EventEmitter } from 'events';\nexport default class TweetStreamParser extends EventEmitter {\n constructor() {\n super(...arguments);\n this.currentMessage = '';\n }\n // Code partially belongs to twitter-stream-api for this\n // https://github.com/trygve-lie/twitter-stream-api/blob/master/lib/parser.js\n push(chunk) {\n this.currentMessage += chunk;\n chunk = this.currentMessage;\n const size = chunk.length;\n let start = 0;\n let offset = 0;\n while (offset < size) {\n // Take [offset, offset+1] inside a new string\n if (chunk.slice(offset, offset + 2) === '\\r\\n') {\n // If chunk contains \\r\\n after current offset,\n // parse [start, ..., offset] as a tweet\n const piece = chunk.slice(start, offset);\n start = offset += 2;\n // If empty object\n if (!piece.length) {\n continue;\n }\n try {\n const payload = JSON.parse(piece);\n if (payload) {\n this.emit(EStreamParserEvent.ParsedData, payload);\n continue;\n }\n }\n catch (error) {\n this.emit(EStreamParserEvent.ParseError, error);\n }\n }\n offset++;\n }\n this.currentMessage = chunk.slice(start, size);\n }\n /** Reset the currently stored message (f.e. on connection reset) */\n reset() {\n this.currentMessage = '';\n }\n}\nexport var EStreamParserEvent;\n(function (EStreamParserEvent) {\n EStreamParserEvent[\"ParsedData\"] = \"parsed data\";\n EStreamParserEvent[\"ParseError\"] = \"parse error\";\n})(EStreamParserEvent || (EStreamParserEvent = {}));\n",
182
- "import { ApiPartialResponseError, ApiRequestError, ApiResponseError, TwitterApiPluginResponseOverride } from '../types';\n/* Plugin helpers */\nexport function hasRequestErrorPlugins(client) {\n var _a;\n if (!((_a = client.clientSettings.plugins) === null || _a === void 0 ? void 0 : _a.length)) {\n return false;\n }\n for (const plugin of client.clientSettings.plugins) {\n if (plugin.onRequestError || plugin.onResponseError) {\n return true;\n }\n }\n return false;\n}\nexport async function applyResponseHooks(requestParams, computedParams, requestOptions, error) {\n let override;\n if (error instanceof ApiRequestError || error instanceof ApiPartialResponseError) {\n override = await this.applyPluginMethod('onRequestError', {\n client: this,\n url: this.getUrlObjectFromUrlString(requestParams.url),\n params: requestParams,\n computedParams,\n requestOptions,\n error,\n });\n }\n else if (error instanceof ApiResponseError) {\n override = await this.applyPluginMethod('onResponseError', {\n client: this,\n url: this.getUrlObjectFromUrlString(requestParams.url),\n params: requestParams,\n computedParams,\n requestOptions,\n error,\n });\n }\n if (override && override instanceof TwitterApiPluginResponseOverride) {\n return override.value;\n }\n return Promise.reject(error);\n}\n",
183
- "import * as crypto from 'crypto';\nexport class OAuth1Helper {\n constructor(options) {\n this.nonceLength = 32;\n this.consumerKeys = options.consumerKeys;\n }\n static percentEncode(str) {\n return encodeURIComponent(str)\n .replace(/!/g, '%21')\n .replace(/\\*/g, '%2A')\n .replace(/'/g, '%27')\n .replace(/\\(/g, '%28')\n .replace(/\\)/g, '%29');\n }\n hash(base, key) {\n return crypto\n .createHmac('sha1', key)\n .update(base)\n .digest('base64');\n }\n authorize(request, accessTokens = {}) {\n const oauthInfo = {\n oauth_consumer_key: this.consumerKeys.key,\n oauth_nonce: this.getNonce(),\n oauth_signature_method: 'HMAC-SHA1',\n oauth_timestamp: this.getTimestamp(),\n oauth_version: '1.0',\n };\n if (accessTokens.key !== undefined) {\n oauthInfo.oauth_token = accessTokens.key;\n }\n if (!request.data) {\n request.data = {};\n }\n oauthInfo.oauth_signature = this.getSignature(request, accessTokens.secret, oauthInfo);\n return oauthInfo;\n }\n toHeader(oauthInfo) {\n const sorted = sortObject(oauthInfo);\n let header_value = 'OAuth ';\n for (const element of sorted) {\n if (element.key.indexOf('oauth_') !== 0) {\n continue;\n }\n header_value += OAuth1Helper.percentEncode(element.key) + '=\"' + OAuth1Helper.percentEncode(element.value) + '\",';\n }\n return {\n // Remove the last ,\n Authorization: header_value.slice(0, header_value.length - 1),\n };\n }\n getNonce() {\n const wordCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n let result = '';\n for (let i = 0; i < this.nonceLength; i++) {\n result += wordCharacters[Math.trunc(Math.random() * wordCharacters.length)];\n }\n return result;\n }\n getTimestamp() {\n return Math.trunc(new Date().getTime() / 1000);\n }\n getSignature(request, tokenSecret, oauthInfo) {\n return this.hash(this.getBaseString(request, oauthInfo), this.getSigningKey(tokenSecret));\n }\n getSigningKey(tokenSecret) {\n return OAuth1Helper.percentEncode(this.consumerKeys.secret) + '&' + OAuth1Helper.percentEncode(tokenSecret || '');\n }\n getBaseString(request, oauthInfo) {\n return request.method.toUpperCase() + '&'\n + OAuth1Helper.percentEncode(this.getBaseUrl(request.url)) + '&'\n + OAuth1Helper.percentEncode(this.getParameterString(request, oauthInfo));\n }\n getParameterString(request, oauthInfo) {\n const baseStringData = sortObject(percentEncodeData(mergeObject(oauthInfo, mergeObject(request.data, deParamUrl(request.url)))));\n let dataStr = '';\n for (const { key, value } of baseStringData) {\n // check if the value is an array\n // this means that this key has multiple values\n if (value && Array.isArray(value)) {\n // sort the array first\n value.sort();\n let valString = '';\n // serialize all values for this key: e.g. formkey=formvalue1&formkey=formvalue2\n value.forEach((item, i) => {\n valString += key + '=' + item;\n if (i < value.length) {\n valString += '&';\n }\n });\n dataStr += valString;\n }\n else {\n dataStr += key + '=' + value + '&';\n }\n }\n // Remove the last character\n return dataStr.slice(0, dataStr.length - 1);\n }\n getBaseUrl(url) {\n return url.split('?')[0];\n }\n}\nexport default OAuth1Helper;\n// Helper functions //\nfunction mergeObject(obj1, obj2) {\n return {\n ...obj1 || {},\n ...obj2 || {},\n };\n}\nfunction sortObject(data) {\n return Object.keys(data)\n .sort()\n .map(key => ({ key, value: data[key] }));\n}\nfunction deParam(string) {\n const split = string.split('&');\n const data = {};\n for (const coupleKeyValue of split) {\n const [key, value = ''] = coupleKeyValue.split('=');\n // check if the key already exists\n // this can occur if the QS part of the url contains duplicate keys like this: ?formkey=formvalue1&formkey=formvalue2\n if (data[key]) {\n // the key exists already\n if (!Array.isArray(data[key])) {\n // replace the value with an array containing the already present value\n data[key] = [data[key]];\n }\n // and add the new found value to it\n data[key].push(decodeURIComponent(value));\n }\n else {\n // it doesn't exist, just put the found value in the data object\n data[key] = decodeURIComponent(value);\n }\n }\n return data;\n}\nfunction deParamUrl(url) {\n const tmp = url.split('?');\n if (tmp.length === 1)\n return {};\n return deParam(tmp[1]);\n}\nfunction percentEncodeData(data) {\n const result = {};\n for (const key in data) {\n let value = data[key];\n // check if the value is an array\n if (value && Array.isArray(value)) {\n value = value.map(v => OAuth1Helper.percentEncode(v));\n }\n else {\n value = OAuth1Helper.percentEncode(value);\n }\n result[OAuth1Helper.percentEncode(key)] = value;\n }\n return result;\n}\n",
184
- "import { arrayWrap } from '../helpers';\n// This class is partially inspired by https://github.com/form-data/form-data/blob/master/lib/form_data.js\n// All credits to their authors.\nexport class FormDataHelper {\n constructor() {\n this._boundary = '';\n this._chunks = [];\n }\n bodyAppend(...values) {\n const allAsBuffer = values.map(val => val instanceof Buffer ? val : Buffer.from(val));\n this._chunks.push(...allAsBuffer);\n }\n append(field, value, contentType) {\n const convertedValue = value instanceof Buffer ? value : value.toString();\n const header = this.getMultipartHeader(field, convertedValue, contentType);\n this.bodyAppend(header, convertedValue, FormDataHelper.LINE_BREAK);\n }\n getHeaders() {\n return {\n 'content-type': 'multipart/form-data; boundary=' + this.getBoundary(),\n };\n }\n /** Length of form-data (including footer length). */\n getLength() {\n return this._chunks.reduce((acc, cur) => acc + cur.length, this.getMultipartFooter().length);\n }\n getBuffer() {\n const allChunks = [...this._chunks, this.getMultipartFooter()];\n const totalBuffer = Buffer.alloc(this.getLength());\n let i = 0;\n for (const chunk of allChunks) {\n for (let j = 0; j < chunk.length; i++, j++) {\n totalBuffer[i] = chunk[j];\n }\n }\n return totalBuffer;\n }\n getBoundary() {\n if (!this._boundary) {\n this.generateBoundary();\n }\n return this._boundary;\n }\n generateBoundary() {\n // This generates a 50 character boundary similar to those used by Firefox.\n let boundary = '--------------------------';\n for (let i = 0; i < 24; i++) {\n boundary += Math.floor(Math.random() * 10).toString(16);\n }\n this._boundary = boundary;\n }\n getMultipartHeader(field, value, contentType) {\n // In this lib no need to guess more the content type, octet stream is ok of buffers\n if (!contentType) {\n contentType = value instanceof Buffer ? FormDataHelper.DEFAULT_CONTENT_TYPE : '';\n }\n const headers = {\n 'Content-Disposition': ['form-data', `name=\"${field}\"`],\n 'Content-Type': contentType,\n };\n let contents = '';\n for (const [prop, header] of Object.entries(headers)) {\n // skip nullish headers.\n if (!header.length) {\n continue;\n }\n contents += prop + ': ' + arrayWrap(header).join('; ') + FormDataHelper.LINE_BREAK;\n }\n return '--' + this.getBoundary() + FormDataHelper.LINE_BREAK + contents + FormDataHelper.LINE_BREAK;\n }\n getMultipartFooter() {\n if (this._footerChunk) {\n return this._footerChunk;\n }\n return this._footerChunk = Buffer.from('--' + this.getBoundary() + '--' + FormDataHelper.LINE_BREAK);\n }\n}\nFormDataHelper.LINE_BREAK = '\\r\\n';\nFormDataHelper.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n",
185
- "import { FormDataHelper } from './form-data.helper';\nimport OAuth1Helper from './oauth1.helper';\n/* Helpers functions that are specific to this class but do not depends on instance */\nexport class RequestParamHelpers {\n static formatQueryToString(query) {\n const formattedQuery = {};\n for (const prop in query) {\n if (typeof query[prop] === 'string') {\n formattedQuery[prop] = query[prop];\n }\n else if (typeof query[prop] !== 'undefined') {\n formattedQuery[prop] = String(query[prop]);\n }\n }\n return formattedQuery;\n }\n static autoDetectBodyType(url) {\n if (url.pathname.startsWith('/2/') || url.pathname.startsWith('/labs/2/')) {\n // oauth2 takes url encoded\n if (url.password.startsWith('/2/oauth2')) {\n return 'url';\n }\n // Twitter API v2 has JSON-encoded requests for everything else\n return 'json';\n }\n if (url.hostname === 'upload.x.com') {\n if (url.pathname === '/1.1/media/upload.json') {\n return 'form-data';\n }\n // json except for media/upload command, that is form-data.\n return 'json';\n }\n const endpoint = url.pathname.split('/1.1/', 2)[1];\n if (this.JSON_1_1_ENDPOINTS.has(endpoint)) {\n return 'json';\n }\n return 'url';\n }\n static addQueryParamsToUrl(url, query) {\n const queryEntries = Object.entries(query);\n if (queryEntries.length) {\n let search = '';\n for (const [key, value] of queryEntries) {\n search += (search.length ? '&' : '?') + `${OAuth1Helper.percentEncode(key)}=${OAuth1Helper.percentEncode(value)}`;\n }\n url.search = search;\n }\n }\n static constructBodyParams(body, headers, mode) {\n if (body instanceof Buffer) {\n return body;\n }\n if (mode === 'json') {\n if (!headers['content-type']) {\n headers['content-type'] = 'application/json;charset=UTF-8';\n }\n return JSON.stringify(body);\n }\n else if (mode === 'url') {\n if (!headers['content-type']) {\n headers['content-type'] = 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n if (Object.keys(body).length) {\n return new URLSearchParams(body)\n .toString()\n .replace(/\\*/g, '%2A'); // URLSearchParams doesnt encode '*', but Twitter wants it encoded.\n }\n return '';\n }\n else if (mode === 'raw') {\n throw new Error('You can only use raw body mode with Buffers. To give a string, use Buffer.from(str).');\n }\n else {\n const form = new FormDataHelper();\n for (const parameter in body) {\n form.append(parameter, body[parameter]);\n }\n if (!headers['content-type']) {\n const formHeaders = form.getHeaders();\n headers['content-type'] = formHeaders['content-type'];\n }\n return form.getBuffer();\n }\n }\n static setBodyLengthHeader(options, body) {\n var _a;\n options.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : {};\n if (typeof body === 'string') {\n options.headers['content-length'] = Buffer.byteLength(body);\n }\n else {\n options.headers['content-length'] = body.length;\n }\n }\n static isOAuthSerializable(item) {\n return !(item instanceof Buffer);\n }\n static mergeQueryAndBodyForOAuth(query, body) {\n const parameters = {};\n for (const prop in query) {\n parameters[prop] = query[prop];\n }\n if (this.isOAuthSerializable(body)) {\n for (const prop in body) {\n const bodyProp = body[prop];\n if (this.isOAuthSerializable(bodyProp)) {\n parameters[prop] = typeof bodyProp === 'object' && bodyProp !== null && 'toString' in bodyProp\n ? bodyProp.toString()\n : bodyProp;\n }\n }\n }\n return parameters;\n }\n static moveUrlQueryParamsIntoObject(url, query) {\n for (const [param, value] of url.searchParams) {\n query[param] = value;\n }\n // Remove the query string\n url.search = '';\n return url;\n }\n /**\n * Replace URL parameters available in pathname, like `:id`, with data given in `parameters`:\n * `https://x.com/:id.json` + `{ id: '20' }` => `https://x.com/20.json`\n */\n static applyRequestParametersToUrl(url, parameters) {\n url.pathname = url.pathname.replace(/:([A-Z_-]+)/ig, (fullMatch, paramName) => {\n if (parameters[paramName] !== undefined) {\n return String(parameters[paramName]);\n }\n return fullMatch;\n });\n return url;\n }\n}\nRequestParamHelpers.JSON_1_1_ENDPOINTS = new Set([\n 'direct_messages/events/new.json',\n 'direct_messages/welcome_messages/new.json',\n 'direct_messages/welcome_messages/rules/new.json',\n 'media/metadata/create.json',\n 'collections/entries/curate.json',\n]);\nexport default RequestParamHelpers;\n",
186
- "import * as crypto from 'crypto';\nexport class OAuth2Helper {\n static getCodeVerifier() {\n return this.generateRandomString(128);\n }\n static getCodeChallengeFromVerifier(verifier) {\n return this.escapeBase64Url(crypto\n .createHash('sha256')\n .update(verifier)\n .digest('base64'));\n }\n static getAuthHeader(clientId, clientSecret) {\n const key = encodeURIComponent(clientId) + ':' + encodeURIComponent(clientSecret);\n return Buffer.from(key).toString('base64');\n }\n static generateRandomString(length) {\n let text = '';\n const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';\n for (let i = 0; i < length; i++) {\n text += possible[Math.floor(Math.random() * possible.length)];\n }\n return text;\n }\n static escapeBase64Url(string) {\n return string.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n }\n}\n",
187
- "import { TwitterApiPluginResponseOverride } from '../types';\nimport TweetStream from '../stream/TweetStream';\nimport { applyResponseHooks, hasRequestErrorPlugins } from '../plugins/helpers';\nimport { trimUndefinedProperties } from '../helpers';\nimport OAuth1Helper from './oauth1.helper';\nimport RequestHandlerHelper from './request-handler.helper';\nimport RequestParamHelpers from './request-param.helper';\nimport { OAuth2Helper } from './oauth2.helper';\nexport class ClientRequestMaker {\n constructor(settings) {\n this.rateLimits = {};\n this.clientSettings = {};\n if (settings) {\n this.clientSettings = settings;\n }\n }\n /** @deprecated - Switch to `@twitter-api-v2/plugin-rate-limit` */\n getRateLimits() {\n return this.rateLimits;\n }\n saveRateLimit(originalUrl, rateLimit) {\n this.rateLimits[originalUrl] = rateLimit;\n }\n /** Send a new request and returns a wrapped `Promise<TwitterResponse<T>`. */\n async send(requestParams) {\n var _a, _b, _c, _d, _e;\n // Pre-request config hooks\n if ((_a = this.clientSettings.plugins) === null || _a === void 0 ? void 0 : _a.length) {\n const possibleResponse = await this.applyPreRequestConfigHooks(requestParams);\n if (possibleResponse) {\n return possibleResponse;\n }\n }\n const args = this.getHttpRequestArgs(requestParams);\n const options = {\n method: args.method,\n headers: args.headers,\n timeout: requestParams.timeout,\n agent: this.clientSettings.httpAgent,\n };\n const enableRateLimitSave = requestParams.enableRateLimitSave !== false;\n if (args.body) {\n RequestParamHelpers.setBodyLengthHeader(options, args.body);\n }\n // Pre-request hooks\n if ((_b = this.clientSettings.plugins) === null || _b === void 0 ? void 0 : _b.length) {\n await this.applyPreRequestHooks(requestParams, args, options);\n }\n let request = new RequestHandlerHelper({\n url: args.url,\n options,\n body: args.body,\n rateLimitSaver: enableRateLimitSave ? this.saveRateLimit.bind(this, args.rawUrl) : undefined,\n requestEventDebugHandler: requestParams.requestEventDebugHandler,\n compression: (_d = (_c = requestParams.compression) !== null && _c !== void 0 ? _c : this.clientSettings.compression) !== null && _d !== void 0 ? _d : true,\n forceParseMode: requestParams.forceParseMode,\n })\n .makeRequest();\n if (hasRequestErrorPlugins(this)) {\n request = this.applyResponseErrorHooks(requestParams, args, options, request);\n }\n const response = await request;\n // Post-request hooks\n if ((_e = this.clientSettings.plugins) === null || _e === void 0 ? void 0 : _e.length) {\n const responseOverride = await this.applyPostRequestHooks(requestParams, args, options, response);\n if (responseOverride) {\n return responseOverride.value;\n }\n }\n return response;\n }\n sendStream(requestParams) {\n var _a, _b;\n // Pre-request hooks\n if (this.clientSettings.plugins) {\n this.applyPreStreamRequestConfigHooks(requestParams);\n }\n const args = this.getHttpRequestArgs(requestParams);\n const options = {\n method: args.method,\n headers: args.headers,\n agent: this.clientSettings.httpAgent,\n };\n const enableRateLimitSave = requestParams.enableRateLimitSave !== false;\n const enableAutoConnect = requestParams.autoConnect !== false;\n if (args.body) {\n RequestParamHelpers.setBodyLengthHeader(options, args.body);\n }\n const requestData = {\n url: args.url,\n options,\n body: args.body,\n rateLimitSaver: enableRateLimitSave ? this.saveRateLimit.bind(this, args.rawUrl) : undefined,\n payloadIsError: requestParams.payloadIsError,\n compression: (_b = (_a = requestParams.compression) !== null && _a !== void 0 ? _a : this.clientSettings.compression) !== null && _b !== void 0 ? _b : true,\n };\n const stream = new TweetStream(requestData);\n if (!enableAutoConnect) {\n return stream;\n }\n return stream.connect();\n }\n /* Token helpers */\n initializeToken(token) {\n if (typeof token === 'string') {\n this.bearerToken = token;\n }\n else if (typeof token === 'object' && 'appKey' in token) {\n this.consumerToken = token.appKey;\n this.consumerSecret = token.appSecret;\n if (token.accessToken && token.accessSecret) {\n this.accessToken = token.accessToken;\n this.accessSecret = token.accessSecret;\n }\n this._oauth = this.buildOAuth();\n }\n else if (typeof token === 'object' && 'username' in token) {\n const key = encodeURIComponent(token.username) + ':' + encodeURIComponent(token.password);\n this.basicToken = Buffer.from(key).toString('base64');\n }\n else if (typeof token === 'object' && 'clientId' in token) {\n this.clientId = token.clientId;\n this.clientSecret = token.clientSecret;\n }\n }\n getActiveTokens() {\n if (this.bearerToken) {\n return {\n type: 'oauth2',\n bearerToken: this.bearerToken,\n };\n }\n else if (this.basicToken) {\n return {\n type: 'basic',\n token: this.basicToken,\n };\n }\n else if (this.consumerSecret && this._oauth) {\n return {\n type: 'oauth-1.0a',\n appKey: this.consumerToken,\n appSecret: this.consumerSecret,\n accessToken: this.accessToken,\n accessSecret: this.accessSecret,\n };\n }\n else if (this.clientId) {\n return {\n type: 'oauth2-user',\n clientId: this.clientId,\n };\n }\n return { type: 'none' };\n }\n buildOAuth() {\n if (!this.consumerSecret || !this.consumerToken)\n throw new Error('Invalid consumer tokens');\n return new OAuth1Helper({\n consumerKeys: { key: this.consumerToken, secret: this.consumerSecret },\n });\n }\n getOAuthAccessTokens() {\n if (!this.accessSecret || !this.accessToken)\n return;\n return {\n key: this.accessToken,\n secret: this.accessSecret,\n };\n }\n /* Plugin helpers */\n getPlugins() {\n var _a;\n return (_a = this.clientSettings.plugins) !== null && _a !== void 0 ? _a : [];\n }\n hasPlugins() {\n var _a;\n return !!((_a = this.clientSettings.plugins) === null || _a === void 0 ? void 0 : _a.length);\n }\n async applyPluginMethod(method, args) {\n var _a;\n let returnValue;\n for (const plugin of this.getPlugins()) {\n const value = await ((_a = plugin[method]) === null || _a === void 0 ? void 0 : _a.call(plugin, args));\n if (value && value instanceof TwitterApiPluginResponseOverride) {\n returnValue = value;\n }\n }\n return returnValue;\n }\n /* Request helpers */\n writeAuthHeaders({ headers, bodyInSignature, url, method, query, body }) {\n headers = { ...headers };\n if (this.bearerToken) {\n headers.Authorization = 'Bearer ' + this.bearerToken;\n }\n else if (this.basicToken) {\n // Basic auth, to request a bearer token\n headers.Authorization = 'Basic ' + this.basicToken;\n }\n else if (this.clientId && this.clientSecret) {\n // Basic auth with clientId + clientSecret\n headers.Authorization = 'Basic ' + OAuth2Helper.getAuthHeader(this.clientId, this.clientSecret);\n }\n else if (this.consumerSecret && this._oauth) {\n // Merge query and body\n const data = bodyInSignature ? RequestParamHelpers.mergeQueryAndBodyForOAuth(query, body) : query;\n const auth = this._oauth.authorize({\n url: url.toString(),\n method,\n data,\n }, this.getOAuthAccessTokens());\n headers = { ...headers, ...this._oauth.toHeader(auth) };\n }\n return headers;\n }\n getUrlObjectFromUrlString(url) {\n // Add protocol to URL if needed\n if (!url.startsWith('http')) {\n url = 'https://' + url;\n }\n // Convert URL to object that will receive all URL modifications\n return new URL(url);\n }\n getHttpRequestArgs({ url: stringUrl, method, query: rawQuery = {}, body: rawBody = {}, headers, forceBodyMode, enableAuth, params, }) {\n let body = undefined;\n method = method.toUpperCase();\n headers = headers !== null && headers !== void 0 ? headers : {};\n // Add user agent header (Twitter recommends it)\n if (!headers['x-user-agent']) {\n headers['x-user-agent'] = 'Node.twitter-api-v2';\n }\n const url = this.getUrlObjectFromUrlString(stringUrl);\n // URL without query string to save as endpoint name\n const rawUrl = url.origin + url.pathname;\n // Apply URL parameters\n if (params) {\n RequestParamHelpers.applyRequestParametersToUrl(url, params);\n }\n // Build a URL without anything in QS, and QSP in query\n const query = RequestParamHelpers.formatQueryToString(rawQuery);\n RequestParamHelpers.moveUrlQueryParamsIntoObject(url, query);\n // Delete undefined parameters\n if (!(rawBody instanceof Buffer)) {\n trimUndefinedProperties(rawBody);\n }\n // OAuth signature should not include parameters when using multipart.\n const bodyType = forceBodyMode !== null && forceBodyMode !== void 0 ? forceBodyMode : RequestParamHelpers.autoDetectBodyType(url);\n // If undefined or true, enable auth by headers\n if (enableAuth !== false) {\n // OAuth needs body signature only if body is URL encoded.\n const bodyInSignature = ClientRequestMaker.BODY_METHODS.has(method) && bodyType === 'url';\n headers = this.writeAuthHeaders({ headers, bodyInSignature, method, query, url, body: rawBody });\n }\n if (ClientRequestMaker.BODY_METHODS.has(method)) {\n body = RequestParamHelpers.constructBodyParams(rawBody, headers, bodyType) || undefined;\n }\n RequestParamHelpers.addQueryParamsToUrl(url, query);\n return {\n rawUrl,\n url,\n method,\n headers,\n body,\n };\n }\n /* Plugin helpers */\n async applyPreRequestConfigHooks(requestParams) {\n var _a;\n const url = this.getUrlObjectFromUrlString(requestParams.url);\n for (const plugin of this.getPlugins()) {\n const result = await ((_a = plugin.onBeforeRequestConfig) === null || _a === void 0 ? void 0 : _a.call(plugin, {\n client: this,\n url,\n params: requestParams,\n }));\n if (result) {\n return result;\n }\n }\n }\n applyPreStreamRequestConfigHooks(requestParams) {\n var _a;\n const url = this.getUrlObjectFromUrlString(requestParams.url);\n for (const plugin of this.getPlugins()) {\n (_a = plugin.onBeforeStreamRequestConfig) === null || _a === void 0 ? void 0 : _a.call(plugin, {\n client: this,\n url,\n params: requestParams,\n });\n }\n }\n async applyPreRequestHooks(requestParams, computedParams, requestOptions) {\n await this.applyPluginMethod('onBeforeRequest', {\n client: this,\n url: this.getUrlObjectFromUrlString(requestParams.url),\n params: requestParams,\n computedParams,\n requestOptions,\n });\n }\n async applyPostRequestHooks(requestParams, computedParams, requestOptions, response) {\n return await this.applyPluginMethod('onAfterRequest', {\n client: this,\n url: this.getUrlObjectFromUrlString(requestParams.url),\n params: requestParams,\n computedParams,\n requestOptions,\n response,\n });\n }\n applyResponseErrorHooks(requestParams, computedParams, requestOptions, promise) {\n return promise.catch(applyResponseHooks.bind(this, requestParams, computedParams, requestOptions));\n }\n}\nClientRequestMaker.BODY_METHODS = new Set(['POST', 'PUT', 'PATCH']);\n",
188
- "import { ClientRequestMaker } from './client-mixins/request-maker.mixin';\nimport { sharedPromise } from './helpers';\nimport { API_V1_1_PREFIX, API_V2_PREFIX } from './globals';\n/**\n * Base class for Twitter instances\n */\nexport default class TwitterApiBase {\n constructor(token, settings = {}) {\n this._currentUser = null;\n this._currentUserV2 = null;\n if (token instanceof TwitterApiBase) {\n this._requestMaker = token._requestMaker;\n }\n else {\n this._requestMaker = new ClientRequestMaker(settings);\n this._requestMaker.initializeToken(token);\n }\n }\n /* Prefix/Token handling */\n setPrefix(prefix) {\n this._prefix = prefix;\n }\n cloneWithPrefix(prefix) {\n const clone = this.constructor(this);\n clone.setPrefix(prefix);\n return clone;\n }\n getActiveTokens() {\n return this._requestMaker.getActiveTokens();\n }\n /* Rate limit cache / Plugins */\n getPlugins() {\n return this._requestMaker.getPlugins();\n }\n getPluginOfType(type) {\n return this.getPlugins().find(plugin => plugin instanceof type);\n }\n /**\n * @deprecated - Migrate to plugin `@twitter-api-v2/plugin-rate-limit`\n *\n * Tells if you hit the Twitter rate limit for {endpoint}.\n * (local data only, this should not ask anything to Twitter)\n */\n hasHitRateLimit(endpoint) {\n var _a;\n if (this.isRateLimitStatusObsolete(endpoint)) {\n return false;\n }\n return ((_a = this.getLastRateLimitStatus(endpoint)) === null || _a === void 0 ? void 0 : _a.remaining) === 0;\n }\n /**\n * @deprecated - Migrate to plugin `@twitter-api-v2/plugin-rate-limit`\n *\n * Tells if you hit the returned Twitter rate limit for {endpoint} has expired.\n * If client has no saved rate limit data for {endpoint}, this will gives you `true`.\n */\n isRateLimitStatusObsolete(endpoint) {\n const rateLimit = this.getLastRateLimitStatus(endpoint);\n if (rateLimit === undefined) {\n return true;\n }\n // Timestamps are exprimed in seconds, JS works with ms\n return (rateLimit.reset * 1000) < Date.now();\n }\n /**\n * @deprecated - Migrate to plugin `@twitter-api-v2/plugin-rate-limit`\n *\n * Get the last obtained Twitter rate limit information for {endpoint}.\n * (local data only, this should not ask anything to Twitter)\n */\n getLastRateLimitStatus(endpoint) {\n const endpointWithPrefix = endpoint.match(/^https?:\\/\\//) ? endpoint : (this._prefix + endpoint);\n return this._requestMaker.getRateLimits()[endpointWithPrefix];\n }\n /* Current user cache */\n /** Get cached current user. */\n getCurrentUserObject(forceFetch = false) {\n if (!forceFetch && this._currentUser) {\n if (this._currentUser.value) {\n return Promise.resolve(this._currentUser.value);\n }\n return this._currentUser.promise;\n }\n this._currentUser = sharedPromise(() => this.get('account/verify_credentials.json', { tweet_mode: 'extended' }, { prefix: API_V1_1_PREFIX }));\n return this._currentUser.promise;\n }\n /**\n * Get cached current user from v2 API.\n * This can only be the slimest available `UserV2` object, with only `id`, `name` and `username` properties defined.\n *\n * To get a customized `UserV2Result`, use `.v2.me()`\n *\n * OAuth2 scopes: `tweet.read` & `users.read`\n */\n getCurrentUserV2Object(forceFetch = false) {\n if (!forceFetch && this._currentUserV2) {\n if (this._currentUserV2.value) {\n return Promise.resolve(this._currentUserV2.value);\n }\n return this._currentUserV2.promise;\n }\n this._currentUserV2 = sharedPromise(() => this.get('users/me', undefined, { prefix: API_V2_PREFIX }));\n return this._currentUserV2.promise;\n }\n async get(url, query = {}, { fullResponse, prefix = this._prefix, ...rest } = {}) {\n if (prefix)\n url = prefix + url;\n const resp = await this._requestMaker.send({\n url,\n method: 'GET',\n query,\n ...rest,\n });\n return fullResponse ? resp : resp.data;\n }\n async delete(url, query = {}, { fullResponse, prefix = this._prefix, ...rest } = {}) {\n if (prefix)\n url = prefix + url;\n const resp = await this._requestMaker.send({\n url,\n method: 'DELETE',\n query,\n ...rest,\n });\n return fullResponse ? resp : resp.data;\n }\n async post(url, body, { fullResponse, prefix = this._prefix, ...rest } = {}) {\n if (prefix)\n url = prefix + url;\n const resp = await this._requestMaker.send({\n url,\n method: 'POST',\n body,\n ...rest,\n });\n return fullResponse ? resp : resp.data;\n }\n async put(url, body, { fullResponse, prefix = this._prefix, ...rest } = {}) {\n if (prefix)\n url = prefix + url;\n const resp = await this._requestMaker.send({\n url,\n method: 'PUT',\n body,\n ...rest,\n });\n return fullResponse ? resp : resp.data;\n }\n async patch(url, body, { fullResponse, prefix = this._prefix, ...rest } = {}) {\n if (prefix)\n url = prefix + url;\n const resp = await this._requestMaker.send({\n url,\n method: 'PATCH',\n body,\n ...rest,\n });\n return fullResponse ? resp : resp.data;\n }\n getStream(url, query, { prefix = this._prefix, ...rest } = {}) {\n return this._requestMaker.sendStream({\n url: prefix ? prefix + url : url,\n method: 'GET',\n query,\n ...rest,\n });\n }\n postStream(url, body, { prefix = this._prefix, ...rest } = {}) {\n return this._requestMaker.sendStream({\n url: prefix ? prefix + url : url,\n method: 'POST',\n body,\n ...rest,\n });\n }\n}\n",
189
- "import TwitterApiBase from './client.base';\n/**\n * Base subclient for every v1 and v2 client.\n */\nexport default class TwitterApiSubClient extends TwitterApiBase {\n constructor(instance) {\n if (!(instance instanceof TwitterApiBase)) {\n throw new Error('You must instance SubTwitterApi instance from existing TwitterApi instance.');\n }\n super(instance);\n }\n}\n",
190
- "import TwitterPaginator from './TwitterPaginator';\n/** A generic TwitterPaginator able to consume TweetV1 timelines. */\nclass TweetTimelineV1Paginator extends TwitterPaginator {\n constructor() {\n super(...arguments);\n this.hasFinishedFetch = false;\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.push(...result);\n // HINT: This is an approximation, as \"end\" of pagination cannot be safely determined without cursors.\n this.hasFinishedFetch = result.length === 0;\n }\n }\n getNextQueryParams(maxResults) {\n const latestId = BigInt(this._realData[this._realData.length - 1].id_str);\n return {\n ...this.injectQueryParams(maxResults),\n max_id: (latestId - BigInt(1)).toString(),\n };\n }\n getPageLengthFromRequest(result) {\n return result.data.length;\n }\n isFetchLastOver(result) {\n return !result.data.length;\n }\n canFetchNextPage(result) {\n return result.length > 0;\n }\n getItemArray() {\n return this.tweets;\n }\n /**\n * Tweets returned by paginator.\n */\n get tweets() {\n return this._realData;\n }\n get done() {\n return super.done || this.hasFinishedFetch;\n }\n}\n// Timelines\n// Home\nexport class HomeTimelineV1Paginator extends TweetTimelineV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'statuses/home_timeline.json';\n }\n}\n// Mention\nexport class MentionTimelineV1Paginator extends TweetTimelineV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'statuses/mentions_timeline.json';\n }\n}\n// User\nexport class UserTimelineV1Paginator extends TweetTimelineV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'statuses/user_timeline.json';\n }\n}\n// Lists\nexport class ListTimelineV1Paginator extends TweetTimelineV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'lists/statuses.json';\n }\n}\n// Favorites\nexport class UserFavoritesV1Paginator extends TweetTimelineV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'favorites/list.json';\n }\n}\n",
191
- "import { CursoredV1Paginator } from './paginator.v1';\nexport class MuteUserListV1Paginator extends CursoredV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'mutes/users/list.json';\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.users.push(...result.users);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.users.length;\n }\n getItemArray() {\n return this.users;\n }\n /**\n * Users returned by paginator.\n */\n get users() {\n return this._realData.users;\n }\n}\nexport class MuteUserIdsV1Paginator extends CursoredV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'mutes/users/ids.json';\n this._maxResultsWhenFetchLast = 5000;\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.ids.push(...result.ids);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.ids.length;\n }\n getItemArray() {\n return this.ids;\n }\n /**\n * Users IDs returned by paginator.\n */\n get ids() {\n return this._realData.ids;\n }\n}\n",
192
- "import { CursoredV1Paginator } from './paginator.v1';\nexport class UserFollowerListV1Paginator extends CursoredV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'followers/list.json';\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.users.push(...result.users);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.users.length;\n }\n getItemArray() {\n return this.users;\n }\n /**\n * Users returned by paginator.\n */\n get users() {\n return this._realData.users;\n }\n}\nexport class UserFollowerIdsV1Paginator extends CursoredV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'followers/ids.json';\n this._maxResultsWhenFetchLast = 5000;\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.ids.push(...result.ids);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.ids.length;\n }\n getItemArray() {\n return this.ids;\n }\n /**\n * Users IDs returned by paginator.\n */\n get ids() {\n return this._realData.ids;\n }\n}\n",
193
- "import { CursoredV1Paginator } from './paginator.v1';\nexport class UserFriendListV1Paginator extends CursoredV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'friends/list.json';\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.users.push(...result.users);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.users.length;\n }\n getItemArray() {\n return this.users;\n }\n /**\n * Users returned by paginator.\n */\n get users() {\n return this._realData.users;\n }\n}\nexport class UserFollowersIdsV1Paginator extends CursoredV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'friends/ids.json';\n this._maxResultsWhenFetchLast = 5000;\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.ids.push(...result.ids);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.ids.length;\n }\n getItemArray() {\n return this.ids;\n }\n /**\n * Users IDs returned by paginator.\n */\n get ids() {\n return this._realData.ids;\n }\n}\n",
194
- "import TwitterPaginator from './TwitterPaginator';\nimport { CursoredV1Paginator } from './paginator.v1';\n/** A generic TwitterPaginator able to consume TweetV1 timelines. */\nexport class UserSearchV1Paginator extends TwitterPaginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/search.json';\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.push(...result);\n }\n }\n getNextQueryParams(maxResults) {\n var _a;\n const previousPage = Number((_a = this._queryParams.page) !== null && _a !== void 0 ? _a : '1');\n return {\n ...this._queryParams,\n page: previousPage + 1,\n ...maxResults ? { count: maxResults } : {},\n };\n }\n getPageLengthFromRequest(result) {\n return result.data.length;\n }\n isFetchLastOver(result) {\n return !result.data.length;\n }\n canFetchNextPage(result) {\n return result.length > 0;\n }\n getItemArray() {\n return this.users;\n }\n /**\n * Users returned by paginator.\n */\n get users() {\n return this._realData;\n }\n}\nexport class FriendshipsIncomingV1Paginator extends CursoredV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'friendships/incoming.json';\n this._maxResultsWhenFetchLast = 5000;\n }\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.ids.push(...result.ids);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.ids.length;\n }\n getItemArray() {\n return this.ids;\n }\n /**\n * Users IDs returned by paginator.\n */\n get ids() {\n return this._realData.ids;\n }\n}\nexport class FriendshipsOutgoingV1Paginator extends FriendshipsIncomingV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'friendships/outgoing.json';\n }\n}\n",
195
- "import { CursoredV1Paginator } from './paginator.v1';\nclass ListListsV1Paginator extends CursoredV1Paginator {\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.lists.push(...result.lists);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.lists.length;\n }\n getItemArray() {\n return this.lists;\n }\n /**\n * Lists returned by paginator.\n */\n get lists() {\n return this._realData.lists;\n }\n}\nexport class ListMembershipsV1Paginator extends ListListsV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'lists/memberships.json';\n }\n}\nexport class ListOwnershipsV1Paginator extends ListListsV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'lists/ownerships.json';\n }\n}\nexport class ListSubscriptionsV1Paginator extends ListListsV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'lists/subscriptions.json';\n }\n}\nclass ListUsersV1Paginator extends CursoredV1Paginator {\n refreshInstanceFromResult(response, isNextPage) {\n const result = response.data;\n this._rateLimit = response.rateLimit;\n if (isNextPage) {\n this._realData.users.push(...result.users);\n this._realData.next_cursor = result.next_cursor;\n }\n }\n getPageLengthFromRequest(result) {\n return result.data.users.length;\n }\n getItemArray() {\n return this.users;\n }\n /**\n * Users returned by paginator.\n */\n get users() {\n return this._realData.users;\n }\n}\nexport class ListMembersV1Paginator extends ListUsersV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'lists/members.json';\n }\n}\nexport class ListSubscribersV1Paginator extends ListUsersV1Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'lists/subscribers.json';\n }\n}\n",
196
- "import TwitterApiSubClient from '../client.subclient';\nimport { API_V1_1_PREFIX, API_V1_1_STREAM_PREFIX, API_V1_1_UPLOAD_PREFIX } from '../globals';\nimport { arrayWrap } from '../helpers';\nimport TwitterApiv1 from '../v1/client.v1';\nimport { HomeTimelineV1Paginator, ListTimelineV1Paginator, MentionTimelineV1Paginator, UserFavoritesV1Paginator, UserTimelineV1Paginator } from '../paginators/tweet.paginator.v1';\nimport { MuteUserIdsV1Paginator, MuteUserListV1Paginator } from '../paginators/mutes.paginator.v1';\nimport { UserFollowerIdsV1Paginator, UserFollowerListV1Paginator } from '../paginators/followers.paginator.v1';\nimport { UserFollowersIdsV1Paginator, UserFriendListV1Paginator } from '../paginators/friends.paginator.v1';\nimport { FriendshipsIncomingV1Paginator, FriendshipsOutgoingV1Paginator, UserSearchV1Paginator } from '../paginators/user.paginator.v1';\nimport { ListMembershipsV1Paginator, ListMembersV1Paginator, ListOwnershipsV1Paginator, ListSubscribersV1Paginator, ListSubscriptionsV1Paginator } from '../paginators/list.paginator.v1';\n/**\n * Base Twitter v1 client with only read right.\n */\nexport default class TwitterApiv1ReadOnly extends TwitterApiSubClient {\n constructor() {\n super(...arguments);\n this._prefix = API_V1_1_PREFIX;\n }\n /* Tweets */\n /**\n * Returns a single Tweet, specified by the id parameter. The Tweet's author will also be embedded within the Tweet.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-statuses-show-id\n */\n singleTweet(tweetId, options = {}) {\n return this.get('statuses/show.json', { tweet_mode: 'extended', id: tweetId, ...options });\n }\n tweets(ids, options = {}) {\n return this.post('statuses/lookup.json', { tweet_mode: 'extended', id: ids, ...options });\n }\n /**\n * Returns a single Tweet, specified by either a Tweet web URL or the Tweet ID, in an oEmbed-compatible format.\n * The returned HTML snippet will be automatically recognized as an Embedded Tweet when Twitter's widget JavaScript is included on the page.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-statuses-oembed\n */\n oembedTweet(tweetId, options = {}) {\n return this.get('oembed', {\n url: `https://x.com/i/statuses/${tweetId}`,\n ...options,\n }, { prefix: 'https://publish.x.com/' });\n }\n /* Tweets timelines */\n /**\n * Returns a collection of the most recent Tweets and Retweets posted by the authenticating user and the users they follow.\n * The home timeline is central to how most users interact with the Twitter service.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-home_timeline\n */\n async homeTimeline(options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n ...options,\n };\n const initialRq = await this.get('statuses/home_timeline.json', queryParams, { fullResponse: true });\n return new HomeTimelineV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns the 20 most recent mentions (Tweets containing a users's @screen_name) for the authenticating user.\n * The timeline returned is the equivalent of the one seen when you view your mentions on x.com.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-mentions_timeline\n */\n async mentionTimeline(options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n ...options,\n };\n const initialRq = await this.get('statuses/mentions_timeline.json', queryParams, { fullResponse: true });\n return new MentionTimelineV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns a collection of the most recent Tweets posted by the user indicated by the user_id parameters.\n * User timelines belonging to protected users may only be requested when the authenticated user either \"owns\" the timeline or is an approved follower of the owner.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-user_timeline\n */\n async userTimeline(userId, options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n user_id: userId,\n ...options,\n };\n const initialRq = await this.get('statuses/user_timeline.json', queryParams, { fullResponse: true });\n return new UserTimelineV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns a collection of the most recent Tweets posted by the user indicated by the screen_name parameters.\n * User timelines belonging to protected users may only be requested when the authenticated user either \"owns\" the timeline or is an approved follower of the owner.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-user_timeline\n */\n async userTimelineByUsername(username, options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n screen_name: username,\n ...options,\n };\n const initialRq = await this.get('statuses/user_timeline.json', queryParams, { fullResponse: true });\n return new UserTimelineV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns the most recent Tweets liked by the authenticating or specified user, 20 tweets by default.\n * Note: favorites are now known as likes.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-favorites-list\n */\n async favoriteTimeline(userId, options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n user_id: userId,\n ...options,\n };\n const initialRq = await this.get('favorites/list.json', queryParams, { fullResponse: true });\n return new UserFavoritesV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns the most recent Tweets liked by the authenticating or specified user, 20 tweets by default.\n * Note: favorites are now known as likes.\n * https://developer.x.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-favorites-list\n */\n async favoriteTimelineByUsername(username, options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n screen_name: username,\n ...options,\n };\n const initialRq = await this.get('favorites/list.json', queryParams, { fullResponse: true });\n return new UserFavoritesV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /* Users */\n /**\n * Returns a variety of information about the user specified by the required user_id or screen_name parameter.\n * The author's most recent Tweet will be returned inline when possible.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-users-show\n */\n user(user) {\n return this.get('users/show.json', { tweet_mode: 'extended', ...user });\n }\n /**\n * Returns fully-hydrated user objects for up to 100 users per request,\n * as specified by comma-separated values passed to the user_id and/or screen_name parameters.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-users-lookup\n */\n users(query) {\n return this.get('users/lookup.json', { tweet_mode: 'extended', ...query });\n }\n /**\n * Returns an HTTP 200 OK response code and a representation of the requesting user if authentication was successful;\n * returns a 401 status code and an error message if not.\n * Use this method to test if supplied user credentials are valid.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-account-verify_credentials\n */\n verifyCredentials(options = {}) {\n return this.get('account/verify_credentials.json', options);\n }\n /**\n * Returns an array of user objects the authenticating user has muted.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/mute-block-report-users/api-reference/get-mutes-users-list\n */\n async listMutedUsers(options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n ...options,\n };\n const initialRq = await this.get('mutes/users/list.json', queryParams, { fullResponse: true });\n return new MuteUserListV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns an array of numeric user ids the authenticating user has muted.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/mute-block-report-users/api-reference/get-mutes-users-ids\n */\n async listMutedUserIds(options = {}) {\n const queryParams = {\n stringify_ids: true,\n ...options,\n };\n const initialRq = await this.get('mutes/users/ids.json', queryParams, { fullResponse: true });\n return new MuteUserIdsV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns an array of user objects of friends of the specified user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friends-list\n */\n async userFriendList(options = {}) {\n const queryParams = {\n ...options,\n };\n const initialRq = await this.get('friends/list.json', queryParams, { fullResponse: true });\n return new UserFriendListV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns an array of user objects of followers of the specified user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-followers-list\n */\n async userFollowerList(options = {}) {\n const queryParams = {\n ...options,\n };\n const initialRq = await this.get('followers/list.json', queryParams, { fullResponse: true });\n return new UserFollowerListV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns an array of numeric user ids of followers of the specified user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-followers-ids\n */\n async userFollowerIds(options = {}) {\n const queryParams = {\n stringify_ids: true,\n ...options,\n };\n const initialRq = await this.get('followers/ids.json', queryParams, { fullResponse: true });\n return new UserFollowerIdsV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns an array of numeric user ids of friends of the specified user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friends-ids\n */\n async userFollowingIds(options = {}) {\n const queryParams = {\n stringify_ids: true,\n ...options,\n };\n const initialRq = await this.get('friends/ids.json', queryParams, { fullResponse: true });\n return new UserFollowersIdsV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Provides a simple, relevance-based search interface to public user accounts on Twitter.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-users-search\n */\n async searchUsers(query, options = {}) {\n const queryParams = {\n q: query,\n tweet_mode: 'extended',\n page: 1,\n ...options,\n };\n const initialRq = await this.get('users/search.json', queryParams, { fullResponse: true });\n return new UserSearchV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /* Friendship API */\n /**\n * Returns detailed information about the relationship between two arbitrary users.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-show\n */\n friendship(sources) {\n return this.get('friendships/show.json', sources);\n }\n /**\n * Returns the relationships of the authenticating user to the comma-separated list of up to 100 screen_names or user_ids provided.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-lookup\n */\n friendships(friendships) {\n return this.get('friendships/lookup.json', friendships);\n }\n /**\n * Returns a collection of user_ids that the currently authenticated user does not want to receive retweets from.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-no_retweets-ids\n */\n friendshipsNoRetweets() {\n return this.get('friendships/no_retweets/ids.json', { stringify_ids: true });\n }\n /**\n * Returns a collection of numeric IDs for every user who has a pending request to follow the authenticating user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-incoming\n */\n async friendshipsIncoming(options = {}) {\n const queryParams = {\n stringify_ids: true,\n ...options,\n };\n const initialRq = await this.get('friendships/incoming.json', queryParams, { fullResponse: true });\n return new FriendshipsIncomingV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns a collection of numeric IDs for every protected user for whom the authenticating user has a pending follow request.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-outgoing\n */\n async friendshipsOutgoing(options = {}) {\n const queryParams = {\n stringify_ids: true,\n ...options,\n };\n const initialRq = await this.get('friendships/outgoing.json', queryParams, { fullResponse: true });\n return new FriendshipsOutgoingV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /* Account/user API */\n /**\n * Get current account settings for authenticating user.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-account-settings\n */\n accountSettings() {\n return this.get('account/settings.json');\n }\n /**\n * Returns a map of the available size variations of the specified user's profile banner.\n * If the user has not uploaded a profile banner, a HTTP 404 will be served instead.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-users-profile_banner\n */\n userProfileBannerSizes(params) {\n return this.get('users/profile_banner.json', params);\n }\n /* Lists */\n /**\n * Returns the specified list. Private lists will only be shown if the authenticated user owns the specified list.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-show\n */\n list(options) {\n return this.get('lists/show.json', { tweet_mode: 'extended', ...options });\n }\n /**\n * Returns all lists the authenticating or specified user subscribes to, including their own.\n * If no user is given, the authenticating user is used.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-list\n */\n lists(options = {}) {\n return this.get('lists/list.json', { tweet_mode: 'extended', ...options });\n }\n /**\n * Returns the members of the specified list. Private list members will only be shown if the authenticated user owns the specified list.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-members\n */\n async listMembers(options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n ...options,\n };\n const initialRq = await this.get('lists/members.json', queryParams, { fullResponse: true });\n return new ListMembersV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Check if the specified user is a member of the specified list.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-members-show\n */\n listGetMember(options) {\n return this.get('lists/members/show.json', { tweet_mode: 'extended', ...options });\n }\n /**\n * Returns the lists the specified user has been added to.\n * If user_id or screen_name are not provided, the memberships for the authenticating user are returned.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-memberships\n */\n async listMemberships(options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n ...options,\n };\n const initialRq = await this.get('lists/memberships.json', queryParams, { fullResponse: true });\n return new ListMembershipsV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns the lists owned by the specified Twitter user. Private lists will only be shown if the authenticated user is also the owner of the lists.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-ownerships\n */\n async listOwnerships(options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n ...options,\n };\n const initialRq = await this.get('lists/ownerships.json', queryParams, { fullResponse: true });\n return new ListOwnershipsV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns a timeline of tweets authored by members of the specified list. Retweets are included by default.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-statuses\n */\n async listStatuses(options) {\n const queryParams = {\n tweet_mode: 'extended',\n ...options,\n };\n const initialRq = await this.get('lists/statuses.json', queryParams, { fullResponse: true });\n return new ListTimelineV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns the subscribers of the specified list. Private list subscribers will only be shown if the authenticated user owns the specified list.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-subscribers\n */\n async listSubscribers(options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n ...options,\n };\n const initialRq = await this.get('lists/subscribers.json', queryParams, { fullResponse: true });\n return new ListSubscribersV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Check if the specified user is a subscriber of the specified list. Returns the user if they are a subscriber.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-subscribers-show\n */\n listGetSubscriber(options) {\n return this.get('lists/subscribers/show.json', { tweet_mode: 'extended', ...options });\n }\n /**\n * Obtain a collection of the lists the specified user is subscribed to, 20 lists per page by default.\n * Does not include the user's own lists.\n * https://developer.x.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-subscriptions\n */\n async listSubscriptions(options = {}) {\n const queryParams = {\n tweet_mode: 'extended',\n ...options,\n };\n const initialRq = await this.get('lists/subscriptions.json', queryParams, { fullResponse: true });\n return new ListSubscriptionsV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /* Media upload API */\n /**\n * The STATUS command (this method) is used to periodically poll for updates of media processing operation.\n * After the STATUS command response returns succeeded, you can move on to the next step which is usually create Tweet with media_id.\n * https://developer.x.com/en/docs/twitter-api/v1/media/upload-media/api-reference/get-media-upload-status\n */\n mediaInfo(mediaId) {\n return this.get('media/upload.json', {\n command: 'STATUS',\n media_id: mediaId,\n }, { prefix: API_V1_1_UPLOAD_PREFIX });\n }\n filterStream({ autoConnect, ...params } = {}) {\n const parameters = {};\n for (const [key, value] of Object.entries(params)) {\n if (key === 'follow' || key === 'track') {\n parameters[key] = value.toString();\n }\n else if (key === 'locations') {\n const locations = value;\n parameters.locations = arrayWrap(locations).map(loc => `${loc.lng},${loc.lat}`).join(',');\n }\n else {\n parameters[key] = value;\n }\n }\n const streamClient = this.stream;\n return streamClient.postStream('statuses/filter.json', parameters, { autoConnect });\n }\n sampleStream({ autoConnect, ...params } = {}) {\n const streamClient = this.stream;\n return streamClient.getStream('statuses/sample.json', params, { autoConnect });\n }\n /**\n * Create a client that is prefixed with `https//stream.x.com` instead of classic API URL.\n */\n get stream() {\n const copiedClient = new TwitterApiv1(this);\n copiedClient.setPrefix(API_V1_1_STREAM_PREFIX);\n return copiedClient;\n }\n /* Trends API */\n /**\n * Returns the top 50 trending topics for a specific id, if trending information is available for it.\n * Note: The id parameter for this endpoint is the \"where on earth identifier\" or WOEID, which is a legacy identifier created by Yahoo and has been deprecated.\n * https://developer.x.com/en/docs/twitter-api/v1/trends/trends-for-location/api-reference/get-trends-place\n */\n trendsByPlace(woeId, options = {}) {\n return this.get('trends/place.json', { id: woeId, ...options });\n }\n /**\n * Returns the locations that Twitter has trending topic information for.\n * The response is an array of \"locations\" that encode the location's WOEID\n * and some other human-readable information such as a canonical name and country the location belongs in.\n * https://developer.x.com/en/docs/twitter-api/v1/trends/locations-with-trending-topics/api-reference/get-trends-available\n */\n trendsAvailable() {\n return this.get('trends/available.json');\n }\n /**\n * Returns the locations that Twitter has trending topic information for, closest to a specified location.\n * https://developer.x.com/en/docs/twitter-api/v1/trends/locations-with-trending-topics/api-reference/get-trends-closest\n */\n trendsClosest(lat, long) {\n return this.get('trends/closest.json', { lat, long });\n }\n /* Geo API */\n /**\n * Returns all the information about a known place.\n * https://developer.x.com/en/docs/twitter-api/v1/geo/place-information/api-reference/get-geo-id-place_id\n */\n geoPlace(placeId) {\n return this.get('geo/id/:place_id.json', undefined, { params: { place_id: placeId } });\n }\n /**\n * Search for places that can be attached to a Tweet via POST statuses/update.\n * This request will return a list of all the valid places that can be used as the place_id when updating a status.\n * https://developer.x.com/en/docs/twitter-api/v1/geo/places-near-location/api-reference/get-geo-search\n */\n geoSearch(options) {\n return this.get('geo/search.json', options);\n }\n /**\n * Given a latitude and a longitude, searches for up to 20 places that can be used as a place_id when updating a status.\n * This request is an informative call and will deliver generalized results about geography.\n * https://developer.x.com/en/docs/twitter-api/v1/geo/places-near-location/api-reference/get-geo-reverse_geocode\n */\n geoReverseGeoCode(options) {\n return this.get('geo/reverse_geocode.json', options);\n }\n /* Developer utilities */\n /**\n * Returns the current rate limits for methods belonging to the specified resource families.\n * Each API resource belongs to a \"resource family\" which is indicated in its method documentation.\n * The method's resource family can be determined from the first component of the path after the resource version.\n * https://developer.x.com/en/docs/twitter-api/v1/developer-utilities/rate-limit-status/api-reference/get-application-rate_limit_status\n */\n rateLimitStatuses(...resources) {\n return this.get('application/rate_limit_status.json', { resources });\n }\n /**\n * Returns the list of languages supported by Twitter along with the language code supported by Twitter.\n * https://developer.x.com/en/docs/twitter-api/v1/developer-utilities/supported-languages/api-reference/get-help-languages\n */\n supportedLanguages() {\n return this.get('help/languages.json');\n }\n}\n",
197
- "import * as fs from 'fs';\nimport { safeDeprecationWarning } from '../helpers';\nimport { EUploadMimeType } from '../types';\nexport async function readFileIntoBuffer(file) {\n const handle = await getFileHandle(file);\n if (typeof handle === 'number') {\n return new Promise((resolve, reject) => {\n fs.readFile(handle, (err, data) => {\n if (err) {\n return reject(err);\n }\n resolve(data);\n });\n });\n }\n else if (handle instanceof Buffer) {\n return handle;\n }\n else {\n return handle.readFile();\n }\n}\nexport function getFileHandle(file) {\n if (typeof file === 'string') {\n return fs.promises.open(file, 'r');\n }\n else if (typeof file === 'number') {\n return file;\n }\n else if (typeof file === 'object' && !(file instanceof Buffer)) {\n return file;\n }\n else if (!(file instanceof Buffer)) {\n throw new Error('Given file is not valid, please check its type.');\n }\n else {\n return file;\n }\n}\nexport async function getFileSizeFromFileHandle(fileHandle) {\n // Get the file size\n if (typeof fileHandle === 'number') {\n const stats = await new Promise((resolve, reject) => {\n fs.fstat(fileHandle, (err, stats) => {\n if (err)\n reject(err);\n resolve(stats);\n });\n });\n return stats.size;\n }\n else if (fileHandle instanceof Buffer) {\n return fileHandle.length;\n }\n else {\n return (await fileHandle.stat()).size;\n }\n}\nexport function getMimeType(file, type, mimeType) {\n if (typeof mimeType === 'string') {\n return mimeType;\n }\n else if (typeof file === 'string' && !type) {\n return getMimeByName(file);\n }\n else if (typeof type === 'string') {\n return getMimeByType(type);\n }\n throw new Error('You must specify type if file is a file handle or Buffer.');\n}\nfunction getMimeByName(name) {\n if (name.endsWith('.jpeg') || name.endsWith('.jpg'))\n return EUploadMimeType.Jpeg;\n if (name.endsWith('.png'))\n return EUploadMimeType.Png;\n if (name.endsWith('.webp'))\n return EUploadMimeType.Webp;\n if (name.endsWith('.gif'))\n return EUploadMimeType.Gif;\n if (name.endsWith('.mpeg4') || name.endsWith('.mp4'))\n return EUploadMimeType.Mp4;\n if (name.endsWith('.mov') || name.endsWith('.mov'))\n return EUploadMimeType.Mov;\n if (name.endsWith('.srt'))\n return EUploadMimeType.Srt;\n safeDeprecationWarning({\n instance: 'TwitterApiv1ReadWrite',\n method: 'uploadMedia',\n problem: 'options.mimeType is missing and filename couldn\\'t help to resolve MIME type, so it will fallback to image/jpeg',\n resolution: 'If you except to give filenames without extensions, please specify explicitlty the MIME type using options.mimeType',\n });\n return EUploadMimeType.Jpeg;\n}\nfunction getMimeByType(type) {\n safeDeprecationWarning({\n instance: 'TwitterApiv1ReadWrite',\n method: 'uploadMedia',\n problem: 'you\\'re using options.type',\n resolution: 'Remove options.type argument and migrate to options.mimeType which takes the real MIME type. ' +\n 'If you\\'re using type=longmp4, add options.longVideo alongside of mimeType=EUploadMimeType.Mp4',\n });\n if (type === 'gif')\n return EUploadMimeType.Gif;\n if (type === 'jpg')\n return EUploadMimeType.Jpeg;\n if (type === 'png')\n return EUploadMimeType.Png;\n if (type === 'webp')\n return EUploadMimeType.Webp;\n if (type === 'srt')\n return EUploadMimeType.Srt;\n if (type === 'mp4' || type === 'longmp4')\n return EUploadMimeType.Mp4;\n if (type === 'mov')\n return EUploadMimeType.Mov;\n return type;\n}\nexport function getMediaCategoryByMime(name, target) {\n if (name === EUploadMimeType.Mp4 || name === EUploadMimeType.Mov)\n return target === 'tweet' ? 'TweetVideo' : 'DmVideo';\n if (name === EUploadMimeType.Gif)\n return target === 'tweet' ? 'TweetGif' : 'DmGif';\n if (name === EUploadMimeType.Srt)\n return 'Subtitles';\n else\n return target === 'tweet' ? 'TweetImage' : 'DmImage';\n}\nexport function sleepSecs(seconds) {\n return new Promise(resolve => setTimeout(resolve, seconds * 1000));\n}\nexport async function readNextPartOf(file, chunkLength, bufferOffset = 0, buffer) {\n if (file instanceof Buffer) {\n const rt = file.slice(bufferOffset, bufferOffset + chunkLength);\n return [rt, rt.length];\n }\n if (!buffer) {\n throw new Error('Well, we will need a buffer to store file content.');\n }\n let bytesRead;\n if (typeof file === 'number') {\n bytesRead = await new Promise((resolve, reject) => {\n fs.read(file, buffer, 0, chunkLength, bufferOffset, (err, nread) => {\n if (err)\n reject(err);\n resolve(nread);\n });\n });\n }\n else {\n const res = await file.read(buffer, 0, chunkLength, bufferOffset);\n bytesRead = res.bytesRead;\n }\n return [buffer, bytesRead];\n}\n",
198
- "import { API_V1_1_PREFIX } from '../globals';\nimport { DmEventsV1Paginator, WelcomeDmV1Paginator } from '../paginators/dm.paginator.v1';\nimport { EDirectMessageEventTypeV1, } from '../types';\nimport TwitterApiv1ReadWrite from './client.v1.write';\n/**\n * Twitter v1.1 API client with read/write/DMs rights.\n */\nexport class TwitterApiv1 extends TwitterApiv1ReadWrite {\n constructor() {\n super(...arguments);\n this._prefix = API_V1_1_PREFIX;\n }\n /**\n * Get a client with read/write rights.\n */\n get readWrite() {\n return this;\n }\n /* Direct messages */\n // Part: Sending and receiving events\n /**\n * Publishes a new message_create event resulting in a Direct Message sent to a specified user from the authenticating user.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/new-event\n */\n sendDm({ recipient_id, custom_profile_id, ...params }) {\n const args = {\n event: {\n type: EDirectMessageEventTypeV1.Create,\n [EDirectMessageEventTypeV1.Create]: {\n target: { recipient_id },\n message_data: params,\n },\n },\n };\n if (custom_profile_id) {\n args.event[EDirectMessageEventTypeV1.Create].custom_profile_id = custom_profile_id;\n }\n return this.post('direct_messages/events/new.json', args, {\n forceBodyMode: 'json',\n });\n }\n /**\n * Returns a single Direct Message event by the given id.\n *\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/get-event\n */\n getDmEvent(id) {\n return this.get('direct_messages/events/show.json', { id });\n }\n /**\n * Deletes the direct message specified in the required ID parameter.\n * The authenticating user must be the recipient of the specified direct message.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/delete-message-event\n */\n deleteDm(id) {\n return this.delete('direct_messages/events/destroy.json', { id });\n }\n /**\n * Returns all Direct Message events (both sent and received) within the last 30 days.\n * Sorted in reverse-chronological order.\n *\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/list-events\n */\n async listDmEvents(args = {}) {\n const queryParams = { ...args };\n const initialRq = await this.get('direct_messages/events/list.json', queryParams, { fullResponse: true });\n return new DmEventsV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n // Part: Welcome messages (events)\n /**\n * Creates a new Welcome Message that will be stored and sent in the future from the authenticating user in defined circumstances.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/new-welcome-message\n */\n newWelcomeDm(name, data) {\n const args = {\n [EDirectMessageEventTypeV1.WelcomeCreate]: {\n name,\n message_data: data,\n },\n };\n return this.post('direct_messages/welcome_messages/new.json', args, {\n forceBodyMode: 'json',\n });\n }\n /**\n * Returns a Welcome Message by the given id.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/get-welcome-message\n */\n getWelcomeDm(id) {\n return this.get('direct_messages/welcome_messages/show.json', { id });\n }\n /**\n * Deletes a Welcome Message by the given id.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/delete-welcome-message\n */\n deleteWelcomeDm(id) {\n return this.delete('direct_messages/welcome_messages/destroy.json', { id });\n }\n /**\n * Updates a Welcome Message by the given ID.\n * Updates to the welcome_message object are atomic.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/update-welcome-message\n */\n updateWelcomeDm(id, data) {\n const args = { message_data: data };\n return this.put('direct_messages/welcome_messages/update.json', args, {\n forceBodyMode: 'json',\n query: { id },\n });\n }\n /**\n * Returns all Direct Message events (both sent and received) within the last 30 days.\n * Sorted in reverse-chronological order.\n *\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/list-events\n */\n async listWelcomeDms(args = {}) {\n const queryParams = { ...args };\n const initialRq = await this.get('direct_messages/welcome_messages/list.json', queryParams, { fullResponse: true });\n return new WelcomeDmV1Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n // Part: Welcome message (rules)\n /**\n * Creates a new Welcome Message Rule that determines which Welcome Message will be shown in a given conversation.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/new-welcome-message-rule\n */\n newWelcomeDmRule(welcomeMessageId) {\n return this.post('direct_messages/welcome_messages/rules/new.json', {\n welcome_message_rule: { welcome_message_id: welcomeMessageId },\n }, {\n forceBodyMode: 'json',\n });\n }\n /**\n * Returns a Welcome Message Rule by the given id.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/get-welcome-message-rule\n */\n getWelcomeDmRule(id) {\n return this.get('direct_messages/welcome_messages/rules/show.json', { id });\n }\n /**\n * Deletes a Welcome Message Rule by the given id.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/delete-welcome-message-rule\n */\n deleteWelcomeDmRule(id) {\n return this.delete('direct_messages/welcome_messages/rules/destroy.json', { id });\n }\n /**\n * Retrieves all welcome DM rules for this account.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/list-welcome-message-rules\n */\n async listWelcomeDmRules(args = {}) {\n const queryParams = { ...args };\n return this.get('direct_messages/welcome_messages/rules/list.json', queryParams);\n }\n /**\n * Set the current showed welcome message for logged account ; wrapper for Welcome DM rules.\n * Test if a rule already exists, delete if any, then create a rule for current message ID.\n *\n * If you don't have already a welcome message, create it with `.newWelcomeMessage`.\n */\n async setWelcomeDm(welcomeMessageId, deleteAssociatedWelcomeDmWhenDeletingRule = true) {\n var _a;\n const existingRules = await this.listWelcomeDmRules();\n if ((_a = existingRules.welcome_message_rules) === null || _a === void 0 ? void 0 : _a.length) {\n for (const rule of existingRules.welcome_message_rules) {\n await this.deleteWelcomeDmRule(rule.id);\n if (deleteAssociatedWelcomeDmWhenDeletingRule) {\n await this.deleteWelcomeDm(rule.welcome_message_id);\n }\n }\n }\n return this.newWelcomeDmRule(welcomeMessageId);\n }\n // Part: Read indicator\n /**\n * Marks a message as read in the recipient’s Direct Message conversation view with the sender.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/typing-indicator-and-read-receipts/api-reference/new-read-receipt\n */\n markDmAsRead(lastEventId, recipientId) {\n return this.post('direct_messages/mark_read.json', {\n last_read_event_id: lastEventId,\n recipient_id: recipientId,\n }, { forceBodyMode: 'url' });\n }\n /**\n * Displays a visual typing indicator in the recipient’s Direct Message conversation view with the sender.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/typing-indicator-and-read-receipts/api-reference/new-typing-indicator\n */\n indicateDmTyping(recipientId) {\n return this.post('direct_messages/indicate_typing.json', {\n recipient_id: recipientId,\n }, { forceBodyMode: 'url' });\n }\n // Part: Images\n /**\n * Get a single image attached to a direct message. TwitterApi client must be logged with OAuth 1.0a.\n * https://developer.x.com/en/docs/twitter-api/v1/direct-messages/message-attachments/guides/retrieving-media\n */\n async downloadDmImage(urlOrDm) {\n if (typeof urlOrDm !== 'string') {\n const attachment = urlOrDm[EDirectMessageEventTypeV1.Create].message_data.attachment;\n if (!attachment) {\n throw new Error('The given direct message doesn\\'t contain any attachment');\n }\n urlOrDm = attachment.media.media_url_https;\n }\n const data = await this.get(urlOrDm, undefined, { forceParseMode: 'buffer', prefix: '' });\n if (!data.length) {\n throw new Error('Image not found. Make sure you are logged with credentials able to access direct messages, and check the URL.');\n }\n return data;\n }\n}\nexport default TwitterApiv1;\n",
199
- "/**\n * Provide helpers for `.includes` of a v2 API result.\n * Needed expansions for a method to work are specified (*`like this`*).\n */\nexport class TwitterV2IncludesHelper {\n constructor(result) {\n this.result = result;\n }\n /* Tweets */\n get tweets() {\n return TwitterV2IncludesHelper.tweets(this.result);\n }\n static tweets(result) {\n var _a, _b;\n return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.tweets) !== null && _b !== void 0 ? _b : [];\n }\n tweetById(id) {\n return TwitterV2IncludesHelper.tweetById(this.result, id);\n }\n static tweetById(result, id) {\n return this.tweets(result).find(tweet => tweet.id === id);\n }\n /** Retweet associated with the given tweet (*`referenced_tweets.id`*) */\n retweet(tweet) {\n return TwitterV2IncludesHelper.retweet(this.result, tweet);\n }\n /** Retweet associated with the given tweet (*`referenced_tweets.id`*) */\n static retweet(result, tweet) {\n var _a;\n const retweetIds = ((_a = tweet.referenced_tweets) !== null && _a !== void 0 ? _a : [])\n .filter(ref => ref.type === 'retweeted')\n .map(ref => ref.id);\n return this.tweets(result).find(t => retweetIds.includes(t.id));\n }\n /** Quoted tweet associated with the given tweet (*`referenced_tweets.id`*) */\n quote(tweet) {\n return TwitterV2IncludesHelper.quote(this.result, tweet);\n }\n /** Quoted tweet associated with the given tweet (*`referenced_tweets.id`*) */\n static quote(result, tweet) {\n var _a;\n const quoteIds = ((_a = tweet.referenced_tweets) !== null && _a !== void 0 ? _a : [])\n .filter(ref => ref.type === 'quoted')\n .map(ref => ref.id);\n return this.tweets(result).find(t => quoteIds.includes(t.id));\n }\n /** Tweet whose has been answered by the given tweet (*`referenced_tweets.id`*) */\n repliedTo(tweet) {\n return TwitterV2IncludesHelper.repliedTo(this.result, tweet);\n }\n /** Tweet whose has been answered by the given tweet (*`referenced_tweets.id`*) */\n static repliedTo(result, tweet) {\n var _a;\n const repliesIds = ((_a = tweet.referenced_tweets) !== null && _a !== void 0 ? _a : [])\n .filter(ref => ref.type === 'replied_to')\n .map(ref => ref.id);\n return this.tweets(result).find(t => repliesIds.includes(t.id));\n }\n /** Tweet author user object of the given tweet (*`author_id`* or *`referenced_tweets.id.author_id`*) */\n author(tweet) {\n return TwitterV2IncludesHelper.author(this.result, tweet);\n }\n /** Tweet author user object of the given tweet (*`author_id`* or *`referenced_tweets.id.author_id`*) */\n static author(result, tweet) {\n const authorId = tweet.author_id;\n return authorId ? this.users(result).find(u => u.id === authorId) : undefined;\n }\n /** Tweet author user object of the tweet answered by the given tweet (*`in_reply_to_user_id`*) */\n repliedToAuthor(tweet) {\n return TwitterV2IncludesHelper.repliedToAuthor(this.result, tweet);\n }\n /** Tweet author user object of the tweet answered by the given tweet (*`in_reply_to_user_id`*) */\n static repliedToAuthor(result, tweet) {\n const inReplyUserId = tweet.in_reply_to_user_id;\n return inReplyUserId ? this.users(result).find(u => u.id === inReplyUserId) : undefined;\n }\n /* Users */\n get users() {\n return TwitterV2IncludesHelper.users(this.result);\n }\n static users(result) {\n var _a, _b;\n return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.users) !== null && _b !== void 0 ? _b : [];\n }\n userById(id) {\n return TwitterV2IncludesHelper.userById(this.result, id);\n }\n static userById(result, id) {\n return this.users(result).find(u => u.id === id);\n }\n /** Pinned tweet of the given user (*`pinned_tweet_id`*) */\n pinnedTweet(user) {\n return TwitterV2IncludesHelper.pinnedTweet(this.result, user);\n }\n /** Pinned tweet of the given user (*`pinned_tweet_id`*) */\n static pinnedTweet(result, user) {\n return user.pinned_tweet_id ? this.tweets(result).find(t => t.id === user.pinned_tweet_id) : undefined;\n }\n /* Medias */\n get media() {\n return TwitterV2IncludesHelper.media(this.result);\n }\n static media(result) {\n var _a, _b;\n return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.media) !== null && _b !== void 0 ? _b : [];\n }\n /** Medias associated with the given tweet (*`attachments.media_keys`*) */\n medias(tweet) {\n return TwitterV2IncludesHelper.medias(this.result, tweet);\n }\n /** Medias associated with the given tweet (*`attachments.media_keys`*) */\n static medias(result, tweet) {\n var _a, _b;\n const keys = (_b = (_a = tweet.attachments) === null || _a === void 0 ? void 0 : _a.media_keys) !== null && _b !== void 0 ? _b : [];\n return this.media(result).filter(m => keys.includes(m.media_key));\n }\n /* Polls */\n get polls() {\n return TwitterV2IncludesHelper.polls(this.result);\n }\n static polls(result) {\n var _a, _b;\n return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.polls) !== null && _b !== void 0 ? _b : [];\n }\n /** Poll associated with the given tweet (*`attachments.poll_ids`*) */\n poll(tweet) {\n return TwitterV2IncludesHelper.poll(this.result, tweet);\n }\n /** Poll associated with the given tweet (*`attachments.poll_ids`*) */\n static poll(result, tweet) {\n var _a, _b;\n const pollIds = (_b = (_a = tweet.attachments) === null || _a === void 0 ? void 0 : _a.poll_ids) !== null && _b !== void 0 ? _b : [];\n if (pollIds.length) {\n const pollId = pollIds[0];\n return this.polls(result).find(p => p.id === pollId);\n }\n return undefined;\n }\n /* Places */\n get places() {\n return TwitterV2IncludesHelper.places(this.result);\n }\n static places(result) {\n var _a, _b;\n return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.places) !== null && _b !== void 0 ? _b : [];\n }\n /** Place associated with the given tweet (*`geo.place_id`*) */\n place(tweet) {\n return TwitterV2IncludesHelper.place(this.result, tweet);\n }\n /** Place associated with the given tweet (*`geo.place_id`*) */\n static place(result, tweet) {\n var _a;\n const placeId = (_a = tweet.geo) === null || _a === void 0 ? void 0 : _a.place_id;\n return placeId ? this.places(result).find(p => p.id === placeId) : undefined;\n }\n /* Lists */\n /** List owner of the given list (*`owner_id`*) */\n listOwner(list) {\n return TwitterV2IncludesHelper.listOwner(this.result, list);\n }\n /** List owner of the given list (*`owner_id`*) */\n static listOwner(result, list) {\n const creatorId = list.owner_id;\n return creatorId ? this.users(result).find(p => p.id === creatorId) : undefined;\n }\n /* Spaces */\n /** Creator of the given space (*`creator_id`*) */\n spaceCreator(space) {\n return TwitterV2IncludesHelper.spaceCreator(this.result, space);\n }\n /** Creator of the given space (*`creator_id`*) */\n static spaceCreator(result, space) {\n const creatorId = space.creator_id;\n return creatorId ? this.users(result).find(p => p.id === creatorId) : undefined;\n }\n /** Current hosts of the given space (*`host_ids`*) */\n spaceHosts(space) {\n return TwitterV2IncludesHelper.spaceHosts(this.result, space);\n }\n /** Current hosts of the given space (*`host_ids`*) */\n static spaceHosts(result, space) {\n var _a;\n const hostIds = (_a = space.host_ids) !== null && _a !== void 0 ? _a : [];\n return this.users(result).filter(u => hostIds.includes(u.id));\n }\n /** Current speakers of the given space (*`speaker_ids`*) */\n spaceSpeakers(space) {\n return TwitterV2IncludesHelper.spaceSpeakers(this.result, space);\n }\n /** Current speakers of the given space (*`speaker_ids`*) */\n static spaceSpeakers(result, space) {\n var _a;\n const speakerIds = (_a = space.speaker_ids) !== null && _a !== void 0 ? _a : [];\n return this.users(result).filter(u => speakerIds.includes(u.id));\n }\n /** Current invited users of the given space (*`invited_user_ids`*) */\n spaceInvitedUsers(space) {\n return TwitterV2IncludesHelper.spaceInvitedUsers(this.result, space);\n }\n /** Current invited users of the given space (*`invited_user_ids`*) */\n static spaceInvitedUsers(result, space) {\n var _a;\n const invitedUserIds = (_a = space.invited_user_ids) !== null && _a !== void 0 ? _a : [];\n return this.users(result).filter(u => invitedUserIds.includes(u.id));\n }\n}\n",
200
- "import { TwitterV2IncludesHelper } from '../v2/includes.v2.helper';\nimport { PreviousableTwitterPaginator } from './TwitterPaginator';\n/** A generic PreviousableTwitterPaginator with common v2 helper methods. */\nexport class TwitterV2Paginator extends PreviousableTwitterPaginator {\n updateIncludes(data) {\n // Update errors\n if (data.errors) {\n if (!this._realData.errors) {\n this._realData.errors = [];\n }\n this._realData.errors = [...this._realData.errors, ...data.errors];\n }\n // Update includes\n if (!data.includes) {\n return;\n }\n if (!this._realData.includes) {\n this._realData.includes = {};\n }\n const includesRealData = this._realData.includes;\n for (const [includeKey, includeArray] of Object.entries(data.includes)) {\n if (!includesRealData[includeKey]) {\n includesRealData[includeKey] = [];\n }\n includesRealData[includeKey] = [\n ...includesRealData[includeKey],\n ...includeArray,\n ];\n }\n }\n /** Throw if the current paginator is not usable. */\n assertUsable() {\n if (this.unusable) {\n throw new Error('Unable to use this paginator to fetch more data, as it does not contain any metadata.' +\n ' Check .errors property for more details.');\n }\n }\n get meta() {\n return this._realData.meta;\n }\n get includes() {\n var _a;\n if (!((_a = this._realData) === null || _a === void 0 ? void 0 : _a.includes)) {\n return new TwitterV2IncludesHelper(this._realData);\n }\n if (this._includesInstance) {\n return this._includesInstance;\n }\n return this._includesInstance = new TwitterV2IncludesHelper(this._realData);\n }\n get errors() {\n var _a;\n return (_a = this._realData.errors) !== null && _a !== void 0 ? _a : [];\n }\n /** `true` if this paginator only contains error payload and no metadata found to consume data. */\n get unusable() {\n return this.errors.length > 0 && !this._realData.meta && !this._realData.data;\n }\n}\n/** A generic TwitterV2Paginator able to consume v2 timelines that use max_results and pagination tokens. */\nexport class TimelineV2Paginator extends TwitterV2Paginator {\n refreshInstanceFromResult(response, isNextPage) {\n var _a;\n const result = response.data;\n const resultData = (_a = result.data) !== null && _a !== void 0 ? _a : [];\n this._rateLimit = response.rateLimit;\n if (!this._realData.data) {\n this._realData.data = [];\n }\n if (isNextPage) {\n this._realData.meta.result_count += result.meta.result_count;\n this._realData.meta.next_token = result.meta.next_token;\n this._realData.data.push(...resultData);\n }\n else {\n this._realData.meta.result_count += result.meta.result_count;\n this._realData.meta.previous_token = result.meta.previous_token;\n this._realData.data.unshift(...resultData);\n }\n this.updateIncludes(result);\n }\n getNextQueryParams(maxResults) {\n this.assertUsable();\n return {\n ...this.injectQueryParams(maxResults),\n pagination_token: this._realData.meta.next_token,\n };\n }\n getPreviousQueryParams(maxResults) {\n this.assertUsable();\n return {\n ...this.injectQueryParams(maxResults),\n pagination_token: this._realData.meta.previous_token,\n };\n }\n getPageLengthFromRequest(result) {\n var _a, _b;\n return (_b = (_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;\n }\n isFetchLastOver(result) {\n var _a;\n return !((_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) || !this.canFetchNextPage(result.data);\n }\n canFetchNextPage(result) {\n var _a;\n return !!((_a = result.meta) === null || _a === void 0 ? void 0 : _a.next_token);\n }\n}\n",
201
- "import { TimelineV2Paginator, TwitterV2Paginator } from './v2.paginator';\n/** A generic PreviousableTwitterPaginator able to consume TweetV2 timelines with since_id, until_id and next_token (when available). */\nclass TweetTimelineV2Paginator extends TwitterV2Paginator {\n refreshInstanceFromResult(response, isNextPage) {\n var _a;\n const result = response.data;\n const resultData = (_a = result.data) !== null && _a !== void 0 ? _a : [];\n this._rateLimit = response.rateLimit;\n if (!this._realData.data) {\n this._realData.data = [];\n }\n if (isNextPage) {\n this._realData.meta.oldest_id = result.meta.oldest_id;\n this._realData.meta.result_count += result.meta.result_count;\n this._realData.meta.next_token = result.meta.next_token;\n this._realData.data.push(...resultData);\n }\n else {\n this._realData.meta.newest_id = result.meta.newest_id;\n this._realData.meta.result_count += result.meta.result_count;\n this._realData.data.unshift(...resultData);\n }\n this.updateIncludes(result);\n }\n getNextQueryParams(maxResults) {\n this.assertUsable();\n const params = { ...this.injectQueryParams(maxResults) };\n if (this._realData.meta.next_token) {\n params.next_token = this._realData.meta.next_token;\n }\n else {\n if (params.start_time) {\n // until_id and start_time are forbidden together for some reason, so convert start_time to a since_id.\n params.since_id = this.dateStringToSnowflakeId(params.start_time);\n delete params.start_time;\n }\n if (params.end_time) {\n // until_id overrides end_time, so delete it\n delete params.end_time;\n }\n params.until_id = this._realData.meta.oldest_id;\n }\n return params;\n }\n getPreviousQueryParams(maxResults) {\n this.assertUsable();\n return {\n ...this.injectQueryParams(maxResults),\n since_id: this._realData.meta.newest_id,\n };\n }\n getPageLengthFromRequest(result) {\n var _a, _b;\n return (_b = (_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;\n }\n isFetchLastOver(result) {\n var _a;\n return !((_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) || !this.canFetchNextPage(result.data);\n }\n canFetchNextPage(result) {\n return !!result.meta.next_token;\n }\n getItemArray() {\n return this.tweets;\n }\n dateStringToSnowflakeId(dateStr) {\n const TWITTER_START_EPOCH = BigInt('1288834974657');\n const date = new Date(dateStr);\n if (isNaN(date.valueOf())) {\n throw new Error('Unable to convert start_time/end_time to a valid date. A ISO 8601 DateTime is excepted, please check your input.');\n }\n const dateTimestamp = BigInt(date.valueOf());\n return ((dateTimestamp - TWITTER_START_EPOCH) << BigInt('22')).toString();\n }\n /**\n * Tweets returned by paginator.\n */\n get tweets() {\n var _a;\n return (_a = this._realData.data) !== null && _a !== void 0 ? _a : [];\n }\n get meta() {\n return super.meta;\n }\n}\n/** A generic PreviousableTwitterPaginator able to consume TweetV2 timelines with pagination_tokens. */\nclass TweetPaginableTimelineV2Paginator extends TimelineV2Paginator {\n refreshInstanceFromResult(response, isNextPage) {\n super.refreshInstanceFromResult(response, isNextPage);\n const result = response.data;\n if (isNextPage) {\n this._realData.meta.oldest_id = result.meta.oldest_id;\n }\n else {\n this._realData.meta.newest_id = result.meta.newest_id;\n }\n }\n getItemArray() {\n return this.tweets;\n }\n /**\n * Tweets returned by paginator.\n */\n get tweets() {\n var _a;\n return (_a = this._realData.data) !== null && _a !== void 0 ? _a : [];\n }\n get meta() {\n return super.meta;\n }\n}\n// ----------------\n// - Tweet search -\n// ----------------\nexport class TweetSearchRecentV2Paginator extends TweetTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'tweets/search/recent';\n }\n}\nexport class TweetSearchAllV2Paginator extends TweetTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'tweets/search/all';\n }\n}\nexport class QuotedTweetsTimelineV2Paginator extends TweetPaginableTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'tweets/:id/quote_tweets';\n }\n}\n// -----------------\n// - Home timeline -\n// -----------------\nexport class TweetHomeTimelineV2Paginator extends TweetPaginableTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/timelines/reverse_chronological';\n }\n}\nexport class TweetUserTimelineV2Paginator extends TweetPaginableTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/tweets';\n }\n}\nexport class TweetUserMentionTimelineV2Paginator extends TweetPaginableTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/mentions';\n }\n}\n// -------------\n// - Bookmarks -\n// -------------\nexport class TweetBookmarksTimelineV2Paginator extends TweetPaginableTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/bookmarks';\n }\n}\n// ---------------------------------------------------------------------------------\n// - Tweet lists (consume tweets with pagination tokens instead of since/until id) -\n// ---------------------------------------------------------------------------------\n/** A generic TwitterPaginator able to consume TweetV2 timelines. */\nclass TweetListV2Paginator extends TimelineV2Paginator {\n /**\n * Tweets returned by paginator.\n */\n get tweets() {\n var _a;\n return (_a = this._realData.data) !== null && _a !== void 0 ? _a : [];\n }\n get meta() {\n return super.meta;\n }\n getItemArray() {\n return this.tweets;\n }\n}\nexport class TweetV2UserLikedTweetsPaginator extends TweetListV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/liked_tweets';\n }\n}\nexport class TweetV2ListTweetsPaginator extends TweetListV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'lists/:id/tweets';\n }\n}\n",
202
- "import { TimelineV2Paginator } from './v2.paginator';\n/** A generic PreviousableTwitterPaginator able to consume UserV2 timelines. */\nclass UserTimelineV2Paginator extends TimelineV2Paginator {\n getItemArray() {\n return this.users;\n }\n /**\n * Users returned by paginator.\n */\n get users() {\n var _a;\n return (_a = this._realData.data) !== null && _a !== void 0 ? _a : [];\n }\n get meta() {\n return super.meta;\n }\n}\nexport class UserBlockingUsersV2Paginator extends UserTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/blocking';\n }\n}\nexport class UserMutingUsersV2Paginator extends UserTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/muting';\n }\n}\nexport class UserFollowersV2Paginator extends UserTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/followers';\n }\n}\nexport class UserFollowingV2Paginator extends UserTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/following';\n }\n}\nexport class UserListMembersV2Paginator extends UserTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'lists/:id/members';\n }\n}\nexport class UserListFollowersV2Paginator extends UserTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'lists/:id/followers';\n }\n}\nexport class TweetLikingUsersV2Paginator extends UserTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'tweets/:id/liking_users';\n }\n}\nexport class TweetRetweetersUsersV2Paginator extends UserTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'tweets/:id/retweeted_by';\n }\n}\n",
203
- "import { TimelineV2Paginator } from './v2.paginator';\nclass ListTimelineV2Paginator extends TimelineV2Paginator {\n getItemArray() {\n return this.lists;\n }\n /**\n * Lists returned by paginator.\n */\n get lists() {\n var _a;\n return (_a = this._realData.data) !== null && _a !== void 0 ? _a : [];\n }\n get meta() {\n return super.meta;\n }\n}\nexport class UserOwnedListsV2Paginator extends ListTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/owned_lists';\n }\n}\nexport class UserListMembershipsV2Paginator extends ListTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/list_memberships';\n }\n}\nexport class UserListFollowedV2Paginator extends ListTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'users/:id/followed_lists';\n }\n}\n",
204
- "import TwitterApiSubClient from '../client.subclient';\nimport { API_V2_LABS_PREFIX } from '../globals';\n/**\n * Base Twitter v2 labs client with only read right.\n */\nexport default class TwitterApiv2LabsReadOnly extends TwitterApiSubClient {\n constructor() {\n super(...arguments);\n this._prefix = API_V2_LABS_PREFIX;\n }\n}\n",
205
- "import { TimelineV2Paginator } from './v2.paginator';\nexport class DMTimelineV2Paginator extends TimelineV2Paginator {\n getItemArray() {\n return this.events;\n }\n /**\n * Events returned by paginator.\n */\n get events() {\n var _a;\n return (_a = this._realData.data) !== null && _a !== void 0 ? _a : [];\n }\n get meta() {\n return super.meta;\n }\n}\nexport class FullDMTimelineV2Paginator extends DMTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'dm_events';\n }\n}\nexport class OneToOneDMTimelineV2Paginator extends DMTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'dm_conversations/with/:participant_id/dm_events';\n }\n}\nexport class ConversationDMTimelineV2Paginator extends DMTimelineV2Paginator {\n constructor() {\n super(...arguments);\n this._endpoint = 'dm_conversations/:dm_conversation_id/dm_events';\n }\n}\n",
206
- "import TwitterApiSubClient from '../client.subclient';\nimport { API_V2_PREFIX } from '../globals';\nimport { TweetSearchAllV2Paginator, TweetSearchRecentV2Paginator, TweetUserMentionTimelineV2Paginator, TweetUserTimelineV2Paginator, TweetV2UserLikedTweetsPaginator, UserOwnedListsV2Paginator, UserListMembershipsV2Paginator, UserListFollowedV2Paginator, TweetV2ListTweetsPaginator, TweetBookmarksTimelineV2Paginator, QuotedTweetsTimelineV2Paginator, TweetHomeTimelineV2Paginator, } from '../paginators';\nimport TwitterApiv2LabsReadOnly from '../v2-labs/client.v2.labs.read';\nimport { TweetLikingUsersV2Paginator, TweetRetweetersUsersV2Paginator, UserBlockingUsersV2Paginator, UserFollowersV2Paginator, UserFollowingV2Paginator, UserListFollowersV2Paginator, UserListMembersV2Paginator, UserMutingUsersV2Paginator } from '../paginators/user.paginator.v2';\nimport { isTweetStreamV2ErrorPayload } from '../helpers';\nimport { ConversationDMTimelineV2Paginator, FullDMTimelineV2Paginator, OneToOneDMTimelineV2Paginator } from '../paginators/dm.paginator.v2';\n/**\n * Base Twitter v2 client with only read right.\n */\nexport default class TwitterApiv2ReadOnly extends TwitterApiSubClient {\n constructor() {\n super(...arguments);\n this._prefix = API_V2_PREFIX;\n }\n /* Sub-clients */\n /**\n * Get a client for v2 labs endpoints.\n */\n get labs() {\n if (this._labs)\n return this._labs;\n return this._labs = new TwitterApiv2LabsReadOnly(this);\n }\n async search(queryOrOptions, options = {}) {\n const queryParams = typeof queryOrOptions === 'string' ?\n { ...options, query: queryOrOptions } :\n { ...queryOrOptions };\n const initialRq = await this.get('tweets/search/recent', queryParams, { fullResponse: true });\n return new TweetSearchRecentV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * The full-archive search endpoint returns the complete history of public Tweets matching a search query;\n * since the first Tweet was created March 26, 2006.\n *\n * This endpoint is only available to those users who have been approved for the Academic Research product track.\n * https://developer.x.com/en/docs/twitter-api/tweets/search/api-reference/get-tweets-search-all\n */\n async searchAll(query, options = {}) {\n const queryParams = { ...options, query };\n const initialRq = await this.get('tweets/search/all', queryParams, { fullResponse: true });\n return new TweetSearchAllV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams,\n });\n }\n /**\n * Returns a variety of information about a single Tweet specified by the requested ID.\n * https://developer.x.com/en/docs/twitter-api/tweets/lookup/api-reference/get-tweets-id\n *\n * OAuth2 scope: `users.read`, `tweet.read`\n */\n singleTweet(tweetId, options = {}) {\n return this.get('tweets/:id', options, { params: { id: tweetId } });\n }\n /**\n * Returns a variety of information about tweets specified by list of IDs.\n * https://developer.x.com/en/docs/twitter-api/tweets/lookup/api-reference/get-tweets\n *\n * OAuth2 scope: `users.read`, `tweet.read`\n */\n tweets(tweetIds, options = {}) {\n return this.get('tweets', { ids: tweetIds, ...options });\n }\n /**\n * The recent Tweet counts endpoint returns count of Tweets from the last seven days that match a search query.\n * OAuth2 Bearer auth only.\n * https://developer.x.com/en/docs/twitter-api/tweets/counts/api-reference/get-tweets-counts-recent\n */\n tweetCountRecent(query, options = {}) {\n return this.get('tweets/counts/recent', { query, ...options });\n }\n /**\n * This endpoint is only available to those users who have been approved for the Academic Research product track.\n * The full-archive search endpoint returns the complete history of public Tweets matching a search query;\n * since the first Tweet was created March 26, 2006.\n * OAuth2 Bearer auth only.\n * **This endpoint has pagination, yet it is not supported by bundled paginators. Use `next_token` to fetch next page.**\n * https://developer.x.com/en/docs/twitter-api/tweets/counts/api-reference/get-tweets-counts-all\n */\n tweetCountAll(query, options = {}) {\n return this.get('tweets/counts/all', { query, ...options });\n }\n async tweetRetweetedBy(tweetId, options = {}) {\n const { asPaginator, ...parameters } = options;\n const initialRq = await this.get('tweets/:id/retweeted_by', parameters, {\n fullResponse: true,\n params: { id: tweetId },\n });\n if (!asPaginator) {\n return initialRq.data;\n }\n return new TweetRetweetersUsersV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: parameters,\n sharedParams: { id: tweetId },\n });\n }\n async tweetLikedBy(tweetId, options = {}) {\n const { asPaginator, ...parameters } = options;\n const initialRq = await this.get('tweets/:id/liking_users', parameters, {\n fullResponse: true,\n params: { id: tweetId },\n });\n if (!asPaginator) {\n return initialRq.data;\n }\n return new TweetLikingUsersV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: parameters,\n sharedParams: { id: tweetId },\n });\n }\n /**\n * Allows you to retrieve a collection of the most recent Tweets and Retweets posted by you and users you follow, also known as home timeline.\n * This endpoint returns up to the last 3200 Tweets.\n * https://developer.x.com/en/docs/twitter-api/tweets/timelines/api-reference/get-users-id-reverse-chronological\n *\n * OAuth 2 scopes: `tweet.read` `users.read`\n */\n async homeTimeline(options = {}) {\n const meUser = await this.getCurrentUserV2Object();\n const initialRq = await this.get('users/:id/timelines/reverse_chronological', options, {\n fullResponse: true,\n params: { id: meUser.data.id },\n });\n return new TweetHomeTimelineV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: options,\n sharedParams: { id: meUser.data.id },\n });\n }\n /**\n * Returns Tweets composed by a single user, specified by the requested user ID.\n * By default, the most recent ten Tweets are returned per request.\n * Using pagination, the most recent 3,200 Tweets can be retrieved.\n * https://developer.x.com/en/docs/twitter-api/tweets/timelines/api-reference/get-users-id-tweets\n */\n async userTimeline(userId, options = {}) {\n const initialRq = await this.get('users/:id/tweets', options, {\n fullResponse: true,\n params: { id: userId },\n });\n return new TweetUserTimelineV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: options,\n sharedParams: { id: userId },\n });\n }\n /**\n * Returns Tweets mentioning a single user specified by the requested user ID.\n * By default, the most recent ten Tweets are returned per request.\n * Using pagination, up to the most recent 800 Tweets can be retrieved.\n * https://developer.x.com/en/docs/twitter-api/tweets/timelines/api-reference/get-users-id-mentions\n */\n async userMentionTimeline(userId, options = {}) {\n const initialRq = await this.get('users/:id/mentions', options, {\n fullResponse: true,\n params: { id: userId },\n });\n return new TweetUserMentionTimelineV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: options,\n sharedParams: { id: userId },\n });\n }\n /**\n * Returns Quote Tweets for a Tweet specified by the requested Tweet ID.\n * https://developer.x.com/en/docs/twitter-api/tweets/quote-tweets/api-reference/get-tweets-id-quote_tweets\n *\n * OAuth2 scopes: `users.read` `tweet.read`\n */\n async quotes(tweetId, options = {}) {\n const initialRq = await this.get('tweets/:id/quote_tweets', options, {\n fullResponse: true,\n params: { id: tweetId },\n });\n return new QuotedTweetsTimelineV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: options,\n sharedParams: { id: tweetId },\n });\n }\n /* Bookmarks */\n /**\n * Allows you to get information about a authenticated user’s 800 most recent bookmarked Tweets.\n * https://developer.x.com/en/docs/twitter-api/tweets/bookmarks/api-reference/get-users-id-bookmarks\n *\n * OAuth2 scopes: `users.read` `tweet.read` `bookmark.read`\n */\n async bookmarks(options = {}) {\n const user = await this.getCurrentUserV2Object();\n const initialRq = await this.get('users/:id/bookmarks', options, {\n fullResponse: true,\n params: { id: user.data.id },\n });\n return new TweetBookmarksTimelineV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: options,\n sharedParams: { id: user.data.id },\n });\n }\n /* Users */\n /**\n * Returns information about an authorized user.\n * https://developer.x.com/en/docs/twitter-api/users/lookup/api-reference/get-users-me\n *\n * OAuth2 scopes: `tweet.read` & `users.read`\n */\n me(options = {}) {\n return this.get('users/me', options);\n }\n /**\n * Returns a variety of information about a single user specified by the requested ID.\n * https://developer.x.com/en/docs/twitter-api/users/lookup/api-reference/get-users-id\n */\n user(userId, options = {}) {\n return this.get('users/:id', options, { params: { id: userId } });\n }\n /**\n * Returns a variety of information about one or more users specified by the requested IDs.\n * https://developer.x.com/en/docs/twitter-api/users/lookup/api-reference/get-users\n */\n users(userIds, options = {}) {\n const ids = Array.isArray(userIds) ? userIds.join(',') : userIds;\n return this.get('users', { ...options, ids });\n }\n /**\n * Returns a variety of information about a single user specified by their username.\n * https://developer.x.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username\n */\n userByUsername(username, options = {}) {\n return this.get('users/by/username/:username', options, { params: { username } });\n }\n /**\n * Returns a variety of information about one or more users specified by their usernames.\n * https://developer.x.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by\n *\n * OAuth2 scope: `users.read`, `tweet.read`\n */\n usersByUsernames(usernames, options = {}) {\n usernames = Array.isArray(usernames) ? usernames.join(',') : usernames;\n return this.get('users/by', { ...options, usernames });\n }\n async followers(userId, options = {}) {\n const { asPaginator, ...parameters } = options;\n const params = { id: userId };\n if (!asPaginator) {\n return this.get('users/:id/followers', parameters, { params });\n }\n const initialRq = await this.get('users/:id/followers', parameters, { fullResponse: true, params });\n return new UserFollowersV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: parameters,\n sharedParams: params,\n });\n }\n async following(userId, options = {}) {\n const { asPaginator, ...parameters } = options;\n const params = { id: userId };\n if (!asPaginator) {\n return this.get('users/:id/following', parameters, { params });\n }\n const initialRq = await this.get('users/:id/following', parameters, { fullResponse: true, params });\n return new UserFollowingV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: parameters,\n sharedParams: params,\n });\n }\n /**\n * Allows you to get information about a user’s liked Tweets.\n * https://developer.x.com/en/docs/twitter-api/tweets/likes/api-reference/get-users-id-liked_tweets\n */\n async userLikedTweets(userId, options = {}) {\n const params = { id: userId };\n const initialRq = await this.get('users/:id/liked_tweets', options, { fullResponse: true, params });\n return new TweetV2UserLikedTweetsPaginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /**\n * Returns a list of users who are blocked by the authenticating user.\n * https://developer.x.com/en/docs/twitter-api/users/blocks/api-reference/get-users-blocking\n */\n async userBlockingUsers(userId, options = {}) {\n const params = { id: userId };\n const initialRq = await this.get('users/:id/blocking', options, { fullResponse: true, params });\n return new UserBlockingUsersV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /**\n * Returns a list of users who are muted by the authenticating user.\n * https://developer.x.com/en/docs/twitter-api/users/mutes/api-reference/get-users-muting\n */\n async userMutingUsers(userId, options = {}) {\n const params = { id: userId };\n const initialRq = await this.get('users/:id/muting', options, { fullResponse: true, params });\n return new UserMutingUsersV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /* Lists */\n /**\n * Returns the details of a specified List.\n * https://developer.x.com/en/docs/twitter-api/lists/list-lookup/api-reference/get-lists-id\n */\n list(id, options = {}) {\n return this.get('lists/:id', options, { params: { id } });\n }\n /**\n * Returns all Lists owned by the specified user.\n * https://developer.x.com/en/docs/twitter-api/lists/list-lookup/api-reference/get-users-id-owned_lists\n */\n async listsOwned(userId, options = {}) {\n const params = { id: userId };\n const initialRq = await this.get('users/:id/owned_lists', options, { fullResponse: true, params });\n return new UserOwnedListsV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /**\n * Returns all Lists a specified user is a member of.\n * https://developer.x.com/en/docs/twitter-api/lists/list-members/api-reference/get-users-id-list_memberships\n */\n async listMemberships(userId, options = {}) {\n const params = { id: userId };\n const initialRq = await this.get('users/:id/list_memberships', options, { fullResponse: true, params });\n return new UserListMembershipsV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /**\n * Returns all Lists a specified user follows.\n * https://developer.x.com/en/docs/twitter-api/lists/list-follows/api-reference/get-users-id-followed_lists\n */\n async listFollowed(userId, options = {}) {\n const params = { id: userId };\n const initialRq = await this.get('users/:id/followed_lists', options, { fullResponse: true, params });\n return new UserListFollowedV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /**\n * Returns a list of Tweets from the specified List.\n * https://developer.x.com/en/docs/twitter-api/lists/list-tweets/api-reference/get-lists-id-tweets\n */\n async listTweets(listId, options = {}) {\n const params = { id: listId };\n const initialRq = await this.get('lists/:id/tweets', options, { fullResponse: true, params });\n return new TweetV2ListTweetsPaginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /**\n * Returns a list of users who are members of the specified List.\n * https://developer.x.com/en/docs/twitter-api/lists/list-members/api-reference/get-lists-id-members\n */\n async listMembers(listId, options = {}) {\n const params = { id: listId };\n const initialRq = await this.get('lists/:id/members', options, { fullResponse: true, params });\n return new UserListMembersV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /**\n * Returns a list of users who are followers of the specified List.\n * https://developer.x.com/en/docs/twitter-api/lists/list-follows/api-reference/get-lists-id-followers\n */\n async listFollowers(listId, options = {}) {\n const params = { id: listId };\n const initialRq = await this.get('lists/:id/followers', options, { fullResponse: true, params });\n return new UserListFollowersV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /* Direct messages */\n /**\n * Returns a list of Direct Messages for the authenticated user, both sent and received.\n * Direct Message events are returned in reverse chronological order.\n * Supports retrieving events from the previous 30 days.\n *\n * OAuth 2 scopes: `dm.read`, `tweet.read`, `user.read`\n *\n * https://developer.x.com/en/docs/twitter-api/direct-messages/lookup/api-reference/get-dm_events\n */\n async listDmEvents(options = {}) {\n const initialRq = await this.get('dm_events', options, { fullResponse: true });\n return new FullDMTimelineV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n });\n }\n /**\n * Returns a list of Direct Messages (DM) events within a 1-1 conversation with the user specified in the participant_id path parameter.\n * Messages are returned in reverse chronological order.\n *\n * OAuth 2 scopes: `dm.read`, `tweet.read`, `user.read`\n *\n * https://developer.x.com/en/docs/twitter-api/direct-messages/lookup/api-reference/get-dm_conversations-dm_conversation_id-dm_events\n */\n async listDmEventsWithParticipant(participantId, options = {}) {\n const params = { participant_id: participantId };\n const initialRq = await this.get('dm_conversations/with/:participant_id/dm_events', options, { fullResponse: true, params });\n return new OneToOneDMTimelineV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /**\n * Returns a list of Direct Messages within a conversation specified in the dm_conversation_id path parameter.\n * Messages are returned in reverse chronological order.\n *\n * OAuth 2 scopes: `dm.read`, `tweet.read`, `user.read`\n *\n * https://developer.x.com/en/docs/twitter-api/direct-messages/lookup/api-reference/get-dm_conversations-dm_conversation_id-dm_events\n */\n async listDmEventsOfConversation(dmConversationId, options = {}) {\n const params = { dm_conversation_id: dmConversationId };\n const initialRq = await this.get('dm_conversations/:dm_conversation_id/dm_events', options, { fullResponse: true, params });\n return new ConversationDMTimelineV2Paginator({\n realData: initialRq.data,\n rateLimit: initialRq.rateLimit,\n instance: this,\n queryParams: { ...options },\n sharedParams: params,\n });\n }\n /* Spaces */\n /**\n * Get a single space by ID.\n * https://developer.x.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces-id\n *\n * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`.\n */\n space(spaceId, options = {}) {\n return this.get('spaces/:id', options, { params: { id: spaceId } });\n }\n /**\n * Get spaces using their IDs.\n * https://developer.x.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces\n *\n * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`.\n */\n spaces(spaceIds, options = {}) {\n return this.get('spaces', { ids: spaceIds, ...options });\n }\n /**\n * Get spaces using their creator user ID(s). (no pagination available)\n * https://developer.x.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces-by-creator-ids\n *\n * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`.\n */\n spacesByCreators(creatorIds, options = {}) {\n return this.get('spaces/by/creator_ids', { user_ids: creatorIds, ...options });\n }\n /**\n * Search through spaces using multiple params. (no pagination available)\n * https://developer.x.com/en/docs/twitter-api/spaces/search/api-reference/get-spaces-search\n */\n searchSpaces(options) {\n return this.get('spaces/search', options);\n }\n /**\n * Returns a list of user who purchased a ticket to the requested Space.\n * You must authenticate the request using the Access Token of the creator of the requested Space.\n *\n * **OAuth 2.0 Access Token required**\n *\n * https://developer.x.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces-id-buyers\n *\n * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`.\n */\n spaceBuyers(spaceId, options = {}) {\n return this.get('spaces/:id/buyers', options, { params: { id: spaceId } });\n }\n /**\n * Returns Tweets shared in the requested Spaces.\n * https://developer.x.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces-id-tweets\n *\n * OAuth2 scope: `users.read`, `tweet.read`, `space.read`\n */\n spaceTweets(spaceId, options = {}) {\n return this.get('spaces/:id/tweets', options, { params: { id: spaceId } });\n }\n searchStream({ autoConnect, ...options } = {}) {\n return this.getStream('tweets/search/stream', options, { payloadIsError: isTweetStreamV2ErrorPayload, autoConnect });\n }\n /**\n * Return a list of rules currently active on the streaming endpoint, either as a list or individually.\n * https://developer.x.com/en/docs/twitter-api/tweets/filtered-stream/api-reference/get-tweets-search-stream-rules\n */\n streamRules(options = {}) {\n return this.get('tweets/search/stream/rules', options);\n }\n updateStreamRules(options, query = {}) {\n return this.post('tweets/search/stream/rules', options, { query });\n }\n sampleStream({ autoConnect, ...options } = {}) {\n return this.getStream('tweets/sample/stream', options, { payloadIsError: isTweetStreamV2ErrorPayload, autoConnect });\n }\n sample10Stream({ autoConnect, ...options } = {}) {\n return this.getStream('tweets/sample10/stream', options, { payloadIsError: isTweetStreamV2ErrorPayload, autoConnect });\n }\n /* Batch compliance */\n /**\n * Returns a list of recent compliance jobs.\n * https://developer.x.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/get-compliance-jobs\n */\n complianceJobs(options) {\n return this.get('compliance/jobs', options);\n }\n /**\n * Get a single compliance job with the specified ID.\n * https://developer.x.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/get-compliance-jobs-id\n */\n complianceJob(jobId) {\n return this.get('compliance/jobs/:id', undefined, { params: { id: jobId } });\n }\n /**\n * Creates a new compliance job for Tweet IDs or user IDs, send your file, await result and parse it into an array.\n * You can run one batch job at a time. Returns the created job, but **not the job result!**.\n *\n * You can obtain the result (**after job is completed**) with `.complianceJobResult`.\n * https://developer.x.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/post-compliance-jobs\n */\n async sendComplianceJob(jobParams) {\n const job = await this.post('compliance/jobs', { type: jobParams.type, name: jobParams.name });\n // Send the IDs\n const rawIdsBody = jobParams.ids instanceof Buffer ? jobParams.ids : Buffer.from(jobParams.ids.join('\\n'));\n // Upload the IDs\n await this.put(job.data.upload_url, rawIdsBody, {\n forceBodyMode: 'raw',\n enableAuth: false,\n headers: { 'Content-Type': 'text/plain' },\n prefix: '',\n });\n return job;\n }\n /**\n * Get the result of a running or completed job, obtained through `.complianceJob`, `.complianceJobs` or `.sendComplianceJob`.\n * If job is still running (`in_progress`), it will await until job is completed. **This could be quite long!**\n * https://developer.x.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/post-compliance-jobs\n */\n async complianceJobResult(job) {\n let runningJob = job;\n while (runningJob.status !== 'complete') {\n if (runningJob.status === 'expired' || runningJob.status === 'failed') {\n throw new Error('Job failed to be completed.');\n }\n await new Promise(resolve => setTimeout(resolve, 3500));\n runningJob = (await this.complianceJob(job.id)).data;\n }\n // Download and parse result\n const result = await this.get(job.download_url, undefined, {\n enableAuth: false,\n prefix: '',\n });\n return result\n .trim()\n .split('\\n')\n .filter(line => line)\n .map(line => JSON.parse(line));\n }\n /* Usage */\n /**\n * Allows you to retrieve your project usage.\n *\n * https://developer.x.com/en/docs/x-api/usage/tweets/introduction\n */\n async usage(options = {}) {\n return this.get('usage/tweets', options);\n }\n /**\n * Returns a variety of information about a single Community specified by ID.\n * https://docs.x.com/x-api/communities/communities-lookup-by-community-id\n */\n community(communityId, options = {}) {\n return this.get('communities/:id', options, { params: { id: communityId } });\n }\n /**\n * Search for Communities based on keywords.\n * https://docs.x.com/x-api/communities/search-communities\n */\n searchCommunities(query, options = {}) {\n return this.get('communities/search', { query, ...options });\n }\n}\n",
207
- "import { API_V2_LABS_PREFIX } from '../globals';\nimport TwitterApiv2LabsReadOnly from './client.v2.labs.read';\n/**\n * Base Twitter v2 labs client with read/write rights.\n */\nexport default class TwitterApiv2LabsReadWrite extends TwitterApiv2LabsReadOnly {\n constructor() {\n super(...arguments);\n this._prefix = API_V2_LABS_PREFIX;\n }\n /**\n * Get a client with only read rights.\n */\n get readOnly() {\n return this;\n }\n}\n",
208
- "import { API_V2_PREFIX } from '../globals';\nimport TwitterApiv2ReadOnly from './client.v2.read';\nimport TwitterApiv2LabsReadWrite from '../v2-labs/client.v2.labs.write';\n/**\n * Base Twitter v2 client with read/write rights.\n */\nexport default class TwitterApiv2ReadWrite extends TwitterApiv2ReadOnly {\n constructor() {\n super(...arguments);\n this._prefix = API_V2_PREFIX;\n }\n /* Sub-clients */\n /**\n * Get a client with only read rights.\n */\n get readOnly() {\n return this;\n }\n /**\n * Get a client for v2 labs endpoints.\n */\n get labs() {\n if (this._labs)\n return this._labs;\n return this._labs = new TwitterApiv2LabsReadWrite(this);\n }\n /* Tweets */\n /**\n * Hides or unhides a reply to a Tweet.\n * https://developer.x.com/en/docs/twitter-api/tweets/hide-replies/api-reference/put-tweets-id-hidden\n */\n hideReply(tweetId, makeHidden) {\n return this.put('tweets/:id/hidden', { hidden: makeHidden }, { params: { id: tweetId } });\n }\n /**\n * Causes the user ID identified in the path parameter to Like the target Tweet.\n * https://developer.x.com/en/docs/twitter-api/tweets/likes/api-reference/post-users-user_id-likes\n *\n * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API.\n */\n like(loggedUserId, targetTweetId) {\n return this.post('users/:id/likes', { tweet_id: targetTweetId }, { params: { id: loggedUserId } });\n }\n /**\n * Allows a user or authenticated user ID to unlike a Tweet.\n * The request succeeds with no action when the user sends a request to a user they're not liking the Tweet or have already unliked the Tweet.\n * https://developer.x.com/en/docs/twitter-api/tweets/likes/api-reference/delete-users-id-likes-tweet_id\n *\n * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API.\n */\n unlike(loggedUserId, targetTweetId) {\n return this.delete('users/:id/likes/:tweet_id', undefined, {\n params: { id: loggedUserId, tweet_id: targetTweetId },\n });\n }\n /**\n * Causes the user ID identified in the path parameter to Retweet the target Tweet.\n * https://developer.x.com/en/docs/twitter-api/tweets/retweets/api-reference/post-users-id-retweets\n *\n * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API.\n */\n retweet(loggedUserId, targetTweetId) {\n return this.post('users/:id/retweets', { tweet_id: targetTweetId }, { params: { id: loggedUserId } });\n }\n /**\n * Allows a user or authenticated user ID to remove the Retweet of a Tweet.\n * The request succeeds with no action when the user sends a request to a user they're not Retweeting the Tweet or have already removed the Retweet of.\n * https://developer.x.com/en/docs/twitter-api/tweets/retweets/api-reference/delete-users-id-retweets-tweet_id\n *\n * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API.\n */\n unretweet(loggedUserId, targetTweetId) {\n return this.delete('users/:id/retweets/:tweet_id', undefined, {\n params: { id: loggedUserId, tweet_id: targetTweetId },\n });\n }\n tweet(status, payload = {}) {\n if (typeof status === 'object') {\n payload = status;\n }\n else {\n payload = { text: status, ...payload };\n }\n return this.post('tweets', payload);\n }\n /**\n * Uploads media to Twitter using chunked upload.\n * https://docs.x.com/x-api/media/media-upload\n *\n * @param media The media buffer to upload\n * @param options Upload options including media type and category, and additional owners\n * @param chunkSize Size of each chunk in bytes (default: 1MB)\n * @returns The media ID of the uploaded media\n */\n async uploadMedia(media, options, chunkSize = 1024 * 1024) {\n let media_category = options.media_category;\n // If no media category is provided, try to infer it from the media type\n if (!options.media_category) {\n if (options.media_type.includes('gif')) {\n media_category = 'tweet_gif';\n }\n else if (options.media_type.includes('image')) {\n media_category = 'tweet_image';\n }\n else if (options.media_type.includes('video')) {\n media_category = 'tweet_video';\n }\n }\n const initArguments = {\n additional_owners: options.additional_owners,\n media_type: options.media_type,\n total_bytes: media.length,\n media_category,\n };\n const initResponse = await this.post('media/upload/initialize', initArguments);\n const mediaId = initResponse.data.id;\n const chunksCount = Math.ceil(media.length / chunkSize);\n const mediaArray = new Uint8Array(media);\n for (let i = 0; i < chunksCount; i++) {\n const start = i * chunkSize;\n const end = Math.min(start + chunkSize, media.length);\n const mediaChunk = mediaArray.slice(start, end);\n const chunkedBuffer = Buffer.from(mediaChunk);\n const appendArguments = {\n segment_index: i,\n media: chunkedBuffer,\n };\n await this.post(`media/upload/${mediaId}/append`, appendArguments, { forceBodyMode: 'form-data' });\n }\n const finalizeResponse = await this.post(`media/upload/${mediaId}/finalize`);\n if (finalizeResponse.data.processing_info) {\n await this.waitForMediaProcessing(mediaId);\n }\n return mediaId;\n }\n async waitForMediaProcessing(mediaId) {\n var _a;\n const response = await this.get('media/upload', {\n command: 'STATUS',\n media_id: mediaId,\n });\n const info = response.data.processing_info;\n if (!info)\n return;\n switch (info.state) {\n case 'succeeded':\n return;\n case 'failed':\n throw new Error(`Media processing failed: ${(_a = info.error) === null || _a === void 0 ? void 0 : _a.message}`);\n case 'pending':\n case 'in_progress': {\n const waitTime = info === null || info === void 0 ? void 0 : info.check_after_secs;\n if (waitTime && waitTime > 0) {\n await new Promise(resolve => setTimeout(resolve, waitTime * 1000));\n await this.waitForMediaProcessing(mediaId);\n }\n }\n }\n }\n /**\n * Creates the metadata for media to be uploaded.\n * This feature is currently only supported for images and GIFs.\n * https://docs.x.com/x-api/media/metadata-create\n */\n createMediaMetadata(mediaId, metadata) {\n return this.post('media/metadata', { id: mediaId, metadata });\n }\n /**\n * Reply to a Tweet on behalf of an authenticated user.\n * https://developer.x.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets\n */\n reply(status, toTweetId, payload = {}) {\n var _a;\n const reply = { in_reply_to_tweet_id: toTweetId, ...(_a = payload.reply) !== null && _a !== void 0 ? _a : {} };\n return this.post('tweets', { text: status, ...payload, reply });\n }\n /**\n * Quote an existing Tweet on behalf of an authenticated user.\n * https://developer.x.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets\n */\n quote(status, quotedTweetId, payload = {}) {\n return this.tweet(status, { ...payload, quote_tweet_id: quotedTweetId });\n }\n /**\n * Post a series of tweets.\n * https://developer.x.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets\n */\n async tweetThread(tweets) {\n var _a, _b;\n const postedTweets = [];\n for (const tweet of tweets) {\n // Retrieve the last sent tweet\n const lastTweet = postedTweets.length ? postedTweets[postedTweets.length - 1] : null;\n // Build the tweet query params\n const queryParams = { ...(typeof tweet === 'string' ? ({ text: tweet }) : tweet) };\n // Reply to an existing tweet if needed\n const inReplyToId = lastTweet ? lastTweet.data.id : (_a = queryParams.reply) === null || _a === void 0 ? void 0 : _a.in_reply_to_tweet_id;\n const status = (_b = queryParams.text) !== null && _b !== void 0 ? _b : '';\n if (inReplyToId) {\n postedTweets.push(await this.reply(status, inReplyToId, queryParams));\n }\n else {\n postedTweets.push(await this.tweet(status, queryParams));\n }\n }\n return postedTweets;\n }\n /**\n * Allows a user or authenticated user ID to delete a Tweet\n * https://developer.x.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/delete-tweets-id\n */\n deleteTweet(tweetId) {\n return this.delete('tweets/:id', undefined, {\n params: {\n id: tweetId,\n },\n });\n }\n /* Bookmarks */\n /**\n * Causes the user ID of an authenticated user identified in the path parameter to Bookmark the target Tweet provided in the request body.\n * https://developer.x.com/en/docs/twitter-api/tweets/bookmarks/api-reference/post-users-id-bookmarks\n *\n * OAuth2 scopes: `users.read` `tweet.read` `bookmark.write`\n */\n async bookmark(tweetId) {\n const user = await this.getCurrentUserV2Object();\n return this.post('users/:id/bookmarks', { tweet_id: tweetId }, { params: { id: user.data.id } });\n }\n /**\n * Allows a user or authenticated user ID to remove a Bookmark of a Tweet.\n * https://developer.x.com/en/docs/twitter-api/tweets/bookmarks/api-reference/delete-users-id-bookmarks-tweet_id\n *\n * OAuth2 scopes: `users.read` `tweet.read` `bookmark.write`\n */\n async deleteBookmark(tweetId) {\n const user = await this.getCurrentUserV2Object();\n return this.delete('users/:id/bookmarks/:tweet_id', undefined, { params: { id: user.data.id, tweet_id: tweetId } });\n }\n /* Users */\n /**\n * Allows a user ID to follow another user.\n * If the target user does not have public Tweets, this endpoint will send a follow request.\n * https://developer.x.com/en/docs/twitter-api/users/follows/api-reference/post-users-source_user_id-following\n *\n * OAuth2 scope: `follows.write`\n *\n * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API.\n */\n follow(loggedUserId, targetUserId) {\n return this.post('users/:id/following', { target_user_id: targetUserId }, { params: { id: loggedUserId } });\n }\n /**\n * Allows a user ID to unfollow another user.\n * https://developer.x.com/en/docs/twitter-api/users/follows/api-reference/delete-users-source_id-following\n *\n * OAuth2 scope: `follows.write`\n *\n * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API.\n */\n unfollow(loggedUserId, targetUserId) {\n return this.delete('users/:source_user_id/following/:target_user_id', undefined, {\n params: { source_user_id: loggedUserId, target_user_id: targetUserId },\n });\n }\n /**\n * Causes the user (in the path) to block the target user.\n * The user (in the path) must match the user context authorizing the request.\n * https://developer.x.com/en/docs/twitter-api/users/blocks/api-reference/post-users-user_id-blocking\n *\n * **Note**: You must specify the currently logged user ID; you can obtain it through v1.1 API.\n */\n block(loggedUserId, targetUserId) {\n return this.post('users/:id/blocking', { target_user_id: targetUserId }, { params: { id: loggedUserId } });\n }\n /**\n * Allows a user or authenticated user ID to unblock another user.\n * https://developer.x.com/en/docs/twitter-api/users/blocks/api-reference/delete-users-user_id-blocking\n *\n * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API.\n */\n unblock(loggedUserId, targetUserId) {\n return this.delete('users/:source_user_id/blocking/:target_user_id', undefined, {\n params: { source_user_id: loggedUserId, target_user_id: targetUserId },\n });\n }\n /**\n * Allows an authenticated user ID to mute the target user.\n * https://developer.x.com/en/docs/twitter-api/users/mutes/api-reference/post-users-user_id-muting\n *\n * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API.\n */\n mute(loggedUserId, targetUserId) {\n return this.post('users/:id/muting', { target_user_id: targetUserId }, { params: { id: loggedUserId } });\n }\n /**\n * Allows an authenticated user ID to unmute the target user.\n * The request succeeds with no action when the user sends a request to a user they're not muting or have already unmuted.\n * https://developer.x.com/en/docs/twitter-api/users/mutes/api-reference/delete-users-user_id-muting\n *\n * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API.\n */\n unmute(loggedUserId, targetUserId) {\n return this.delete('users/:source_user_id/muting/:target_user_id', undefined, {\n params: { source_user_id: loggedUserId, target_user_id: targetUserId },\n });\n }\n /* Lists */\n /**\n * Creates a new list for the authenticated user.\n * https://developer.x.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-lists\n */\n createList(options) {\n return this.post('lists', options);\n }\n /**\n * Updates the specified list. The authenticated user must own the list to be able to update it.\n * https://developer.x.com/en/docs/twitter-api/lists/manage-lists/api-reference/put-lists-id\n */\n updateList(listId, options = {}) {\n return this.put('lists/:id', options, { params: { id: listId } });\n }\n /**\n * Deletes the specified list. The authenticated user must own the list to be able to destroy it.\n * https://developer.x.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-lists-id\n */\n removeList(listId) {\n return this.delete('lists/:id', undefined, { params: { id: listId } });\n }\n /**\n * Adds a member to a list.\n * https://developer.x.com/en/docs/twitter-api/lists/list-members/api-reference/post-lists-id-members\n */\n addListMember(listId, userId) {\n return this.post('lists/:id/members', { user_id: userId }, { params: { id: listId } });\n }\n /**\n * Remember a member to a list.\n * https://developer.x.com/en/docs/twitter-api/lists/list-members/api-reference/delete-lists-id-members-user_id\n */\n removeListMember(listId, userId) {\n return this.delete('lists/:id/members/:user_id', undefined, { params: { id: listId, user_id: userId } });\n }\n /**\n * Subscribes the authenticated user to the specified list.\n * https://developer.x.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-users-id-followed-lists\n */\n subscribeToList(loggedUserId, listId) {\n return this.post('users/:id/followed_lists', { list_id: listId }, { params: { id: loggedUserId } });\n }\n /**\n * Unsubscribes the authenticated user to the specified list.\n * https://developer.x.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-users-id-followed-lists-list_id\n */\n unsubscribeOfList(loggedUserId, listId) {\n return this.delete('users/:id/followed_lists/:list_id', undefined, { params: { id: loggedUserId, list_id: listId } });\n }\n /**\n * Enables the authenticated user to pin a List.\n * https://developer.x.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-users-id-pinned-lists\n */\n pinList(loggedUserId, listId) {\n return this.post('users/:id/pinned_lists', { list_id: listId }, { params: { id: loggedUserId } });\n }\n /**\n * Enables the authenticated user to unpin a List.\n * https://developer.x.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-users-id-pinned-lists-list_id\n */\n unpinList(loggedUserId, listId) {\n return this.delete('users/:id/pinned_lists/:list_id', undefined, { params: { id: loggedUserId, list_id: listId } });\n }\n /* Direct messages */\n /**\n * Creates a Direct Message on behalf of an authenticated user, and adds it to the specified conversation.\n * https://developer.x.com/en/docs/twitter-api/direct-messages/manage/api-reference/post-dm_conversations-dm_conversation_id-messages\n */\n sendDmInConversation(conversationId, message) {\n return this.post('dm_conversations/:dm_conversation_id/messages', message, { params: { dm_conversation_id: conversationId } });\n }\n /**\n * Creates a one-to-one Direct Message and adds it to the one-to-one conversation.\n * This method either creates a new one-to-one conversation or retrieves the current conversation and adds the Direct Message to it.\n * https://developer.x.com/en/docs/twitter-api/direct-messages/manage/api-reference/post-dm_conversations-with-participant_id-messages\n */\n sendDmToParticipant(participantId, message) {\n return this.post('dm_conversations/with/:participant_id/messages', message, { params: { participant_id: participantId } });\n }\n /**\n * Creates a new group conversation and adds a Direct Message to it on behalf of an authenticated user.\n * https://developer.x.com/en/docs/twitter-api/direct-messages/manage/api-reference/post-dm_conversations\n */\n createDmConversation(options) {\n return this.post('dm_conversations', options);\n }\n}\n",
209
- "import { API_V2_LABS_PREFIX } from '../globals';\nimport TwitterApiv2LabsReadWrite from './client.v2.labs.write';\n/**\n * Twitter v2 labs client with all rights (read/write/DMs)\n */\nexport class TwitterApiv2Labs extends TwitterApiv2LabsReadWrite {\n constructor() {\n super(...arguments);\n this._prefix = API_V2_LABS_PREFIX;\n }\n /**\n * Get a client with read/write rights.\n */\n get readWrite() {\n return this;\n }\n}\nexport default TwitterApiv2Labs;\n",
210
- "import { API_V2_PREFIX } from '../globals';\nimport TwitterApiv2ReadWrite from './client.v2.write';\nimport TwitterApiv2Labs from '../v2-labs/client.v2.labs';\n/**\n * Twitter v2 client with all rights (read/write/DMs)\n */\nexport class TwitterApiv2 extends TwitterApiv2ReadWrite {\n constructor() {\n super(...arguments);\n this._prefix = API_V2_PREFIX;\n /** API endpoints */\n }\n /* Sub-clients */\n /**\n * Get a client with read/write rights.\n */\n get readWrite() {\n return this;\n }\n /**\n * Get a client for v2 labs endpoints.\n */\n get labs() {\n if (this._labs)\n return this._labs;\n return this._labs = new TwitterApiv2Labs(this);\n }\n}\nexport default TwitterApiv2;\n",
211
- "import TwitterApiBase from '../client.base';\nimport TwitterApiv1ReadOnly from '../v1/client.v1.read';\nimport TwitterApiv2ReadOnly from '../v2/client.v2.read';\nimport { OAuth2Helper } from '../client-mixins/oauth2.helper';\nimport RequestParamHelpers from '../client-mixins/request-param.helper';\n/**\n * Twitter v1.1 and v2 API client.\n */\nexport default class TwitterApiReadOnly extends TwitterApiBase {\n /* Direct access to subclients */\n get v1() {\n if (this._v1)\n return this._v1;\n return this._v1 = new TwitterApiv1ReadOnly(this);\n }\n get v2() {\n if (this._v2)\n return this._v2;\n return this._v2 = new TwitterApiv2ReadOnly(this);\n }\n /**\n * Fetch and cache current user.\n * This method can only be called with a OAuth 1.0a user authentication.\n *\n * You can use this method to test if authentication was successful.\n * Next calls to this methods will use the cached user, unless `forceFetch: true` is given.\n */\n async currentUser(forceFetch = false) {\n return await this.getCurrentUserObject(forceFetch);\n }\n /**\n * Fetch and cache current user.\n * This method can only be called with a OAuth 1.0a or OAuth2 user authentication.\n *\n * This can only be the slimest available `UserV2` object, with only id, name and username properties defined.\n * To get a customized `UserV2Result`, use `.v2.me()`\n *\n * You can use this method to test if authentication was successful.\n * Next calls to this methods will use the cached user, unless `forceFetch: true` is given.\n *\n * OAuth2 scopes: `tweet.read` & `users.read`\n */\n async currentUserV2(forceFetch = false) {\n return await this.getCurrentUserV2Object(forceFetch);\n }\n /* Shortcuts to endpoints */\n search(what, options) {\n return this.v2.search(what, options);\n }\n /* Authentication */\n /**\n * Generate the OAuth request token link for user-based OAuth 1.0 auth.\n *\n * ```ts\n * // Instantiate TwitterApi with consumer keys\n * const client = new TwitterApi({ appKey: 'consumer_key', appSecret: 'consumer_secret' });\n *\n * const tokenRequest = await client.generateAuthLink('oob-or-your-callback-url');\n * // redirect end-user to tokenRequest.url\n *\n * // Save tokenRequest.oauth_token_secret somewhere, it will be needed for next auth step.\n * ```\n */\n async generateAuthLink(oauth_callback = 'oob', { authAccessType, linkMode = 'authenticate', forceLogin, screenName, } = {}) {\n const oauthResult = await this.post('https://api.x.com/oauth/request_token', { oauth_callback, x_auth_access_type: authAccessType });\n let url = `https://api.x.com/oauth/${linkMode}?oauth_token=${encodeURIComponent(oauthResult.oauth_token)}`;\n if (forceLogin !== undefined) {\n url += `&force_login=${encodeURIComponent(forceLogin)}`;\n }\n if (screenName !== undefined) {\n url += `&screen_name=${encodeURIComponent(screenName)}`;\n }\n if (this._requestMaker.hasPlugins()) {\n this._requestMaker.applyPluginMethod('onOAuth1RequestToken', {\n client: this._requestMaker,\n url,\n oauthResult,\n });\n }\n return {\n url,\n ...oauthResult,\n };\n }\n /**\n * Obtain access to user-based OAuth 1.0 auth.\n *\n * After user is redirect from your callback, use obtained oauth_token and oauth_verifier to\n * instantiate the new TwitterApi instance.\n *\n * ```ts\n * // Use the saved oauth_token_secret associated to oauth_token returned by callback\n * const requestClient = new TwitterApi({\n * appKey: 'consumer_key',\n * appSecret: 'consumer_secret',\n * accessToken: 'oauth_token',\n * accessSecret: 'oauth_token_secret'\n * });\n *\n * // Use oauth_verifier obtained from callback request\n * const { client: userClient } = await requestClient.login('oauth_verifier');\n *\n * // {userClient} is a valid {TwitterApi} object you can use for future requests\n * ```\n */\n async login(oauth_verifier) {\n const tokens = this.getActiveTokens();\n if (tokens.type !== 'oauth-1.0a')\n throw new Error('You must setup TwitterApi instance with consumer keys to accept OAuth 1.0 login');\n const oauth_result = await this.post('https://api.x.com/oauth/access_token', { oauth_token: tokens.accessToken, oauth_verifier });\n const client = new this.constructor({\n appKey: tokens.appKey,\n appSecret: tokens.appSecret,\n accessToken: oauth_result.oauth_token,\n accessSecret: oauth_result.oauth_token_secret,\n }, this._requestMaker.clientSettings);\n return {\n accessToken: oauth_result.oauth_token,\n accessSecret: oauth_result.oauth_token_secret,\n userId: oauth_result.user_id,\n screenName: oauth_result.screen_name,\n client,\n };\n }\n /**\n * Enable application-only authentication.\n *\n * To make the request, instantiate TwitterApi with consumer and secret.\n *\n * ```ts\n * const requestClient = new TwitterApi({ appKey: 'consumer', appSecret: 'secret' });\n * const appClient = await requestClient.appLogin();\n *\n * // Use {appClient} to make requests\n * ```\n */\n async appLogin() {\n const tokens = this.getActiveTokens();\n if (tokens.type !== 'oauth-1.0a')\n throw new Error('You must setup TwitterApi instance with consumer keys to accept app-only login');\n // Create a client with Basic authentication\n const basicClient = new this.constructor({ username: tokens.appKey, password: tokens.appSecret }, this._requestMaker.clientSettings);\n const res = await basicClient.post('https://api.x.com/oauth2/token', { grant_type: 'client_credentials' });\n // New object with Bearer token\n return new this.constructor(res.access_token, this._requestMaker.clientSettings);\n }\n /* OAuth 2 user authentication */\n /**\n * Generate the OAuth request token link for user-based OAuth 2.0 auth.\n *\n * - **You can only use v2 API endpoints with this authentication method.**\n * - **You need to specify which scope you want to have when you create your auth link. Make sure it matches your needs.**\n *\n * See https://developer.x.com/en/docs/authentication/oauth-2-0/user-access-token for details.\n *\n * ```ts\n * // Instantiate TwitterApi with client ID\n * const client = new TwitterApi({ clientId: 'yourClientId' });\n *\n * // Generate a link to callback URL that will gives a token with tweet+user read access\n * const link = client.generateOAuth2AuthLink('your-callback-url', { scope: ['tweet.read', 'users.read'] });\n *\n * // Extract props from generate link\n * const { url, state, codeVerifier } = link;\n *\n * // redirect end-user to url\n * // Save `state` and `codeVerifier` somewhere, it will be needed for next auth step.\n * ```\n */\n generateOAuth2AuthLink(redirectUri, options = {}) {\n var _a, _b;\n if (!this._requestMaker.clientId) {\n throw new Error('Twitter API instance is not initialized with client ID. You can find your client ID in Twitter Developer Portal. ' +\n 'Please build an instance with: new TwitterApi({ clientId: \\'<yourClientId>\\' })');\n }\n const state = (_a = options.state) !== null && _a !== void 0 ? _a : OAuth2Helper.generateRandomString(32);\n const codeVerifier = OAuth2Helper.getCodeVerifier();\n const codeChallenge = OAuth2Helper.getCodeChallengeFromVerifier(codeVerifier);\n const rawScope = (_b = options.scope) !== null && _b !== void 0 ? _b : '';\n const scope = Array.isArray(rawScope) ? rawScope.join(' ') : rawScope;\n const url = new URL('https://x.com/i/oauth2/authorize');\n const query = {\n response_type: 'code',\n client_id: this._requestMaker.clientId,\n redirect_uri: redirectUri,\n state,\n code_challenge: codeChallenge,\n code_challenge_method: 's256',\n scope,\n };\n RequestParamHelpers.addQueryParamsToUrl(url, query);\n const result = {\n url: url.toString(),\n state,\n codeVerifier,\n codeChallenge,\n };\n if (this._requestMaker.hasPlugins()) {\n this._requestMaker.applyPluginMethod('onOAuth2RequestToken', {\n client: this._requestMaker,\n result,\n redirectUri,\n });\n }\n return result;\n }\n /**\n * Obtain access to user-based OAuth 2.0 auth.\n *\n * After user is redirect from your callback, use obtained code to\n * instantiate the new TwitterApi instance.\n *\n * You need to obtain `codeVerifier` from a call to `.generateOAuth2AuthLink`.\n *\n * ```ts\n * // Use the saved codeVerifier associated to state (present in query string of callback)\n * const requestClient = new TwitterApi({ clientId: 'yourClientId' });\n *\n * const { client: userClient, refreshToken } = await requestClient.loginWithOAuth2({\n * code: 'codeFromQueryString',\n * // the same URL given to generateOAuth2AuthLink\n * redirectUri,\n * // the verifier returned by generateOAuth2AuthLink\n * codeVerifier,\n * });\n *\n * // {userClient} is a valid {TwitterApi} object you can use for future requests\n * // {refreshToken} is defined if 'offline.access' is in scope.\n * ```\n */\n async loginWithOAuth2({ code, codeVerifier, redirectUri }) {\n if (!this._requestMaker.clientId) {\n throw new Error('Twitter API instance is not initialized with client ID. ' +\n 'Please build an instance with: new TwitterApi({ clientId: \\'<yourClientId>\\' })');\n }\n const accessTokenResult = await this.post('https://api.x.com/2/oauth2/token', {\n code,\n code_verifier: codeVerifier,\n redirect_uri: redirectUri,\n grant_type: 'authorization_code',\n client_id: this._requestMaker.clientId,\n client_secret: this._requestMaker.clientSecret,\n });\n return this.parseOAuth2AccessTokenResult(accessTokenResult);\n }\n /**\n * Obtain a new access token to user-based OAuth 2.0 auth from a refresh token.\n *\n * ```ts\n * const requestClient = new TwitterApi({ clientId: 'yourClientId' });\n *\n * const { client: userClient } = await requestClient.refreshOAuth2Token('refreshToken');\n * // {userClient} is a valid {TwitterApi} object you can use for future requests\n * ```\n */\n async refreshOAuth2Token(refreshToken) {\n if (!this._requestMaker.clientId) {\n throw new Error('Twitter API instance is not initialized with client ID. ' +\n 'Please build an instance with: new TwitterApi({ clientId: \\'<yourClientId>\\' })');\n }\n const accessTokenResult = await this.post('https://api.x.com/2/oauth2/token', {\n refresh_token: refreshToken,\n grant_type: 'refresh_token',\n client_id: this._requestMaker.clientId,\n client_secret: this._requestMaker.clientSecret,\n });\n return this.parseOAuth2AccessTokenResult(accessTokenResult);\n }\n /**\n * Revoke a single user-based OAuth 2.0 token.\n *\n * You must specify its source, access token (directly after login)\n * or refresh token (if you've called `.refreshOAuth2Token` before).\n */\n async revokeOAuth2Token(token, tokenType = 'access_token') {\n if (!this._requestMaker.clientId) {\n throw new Error('Twitter API instance is not initialized with client ID. ' +\n 'Please build an instance with: new TwitterApi({ clientId: \\'<yourClientId>\\' })');\n }\n return await this.post('https://api.x.com/2/oauth2/revoke', {\n client_id: this._requestMaker.clientId,\n client_secret: this._requestMaker.clientSecret,\n token,\n token_type_hint: tokenType,\n });\n }\n parseOAuth2AccessTokenResult(result) {\n const client = new this.constructor(result.access_token, this._requestMaker.clientSettings);\n const scope = result.scope.split(' ').filter(e => e);\n return {\n client,\n expiresIn: result.expires_in,\n accessToken: result.access_token,\n scope,\n refreshToken: result.refresh_token,\n };\n }\n}\n",
212
- "import TwitterApiv1ReadWrite from '../v1/client.v1.write';\nimport TwitterApiv2ReadWrite from '../v2/client.v2.write';\nimport TwitterApiReadOnly from './readonly';\n/**\n * Twitter v1.1 and v2 API client.\n */\nexport default class TwitterApiReadWrite extends TwitterApiReadOnly {\n /* Direct access to subclients */\n get v1() {\n if (this._v1)\n return this._v1;\n return this._v1 = new TwitterApiv1ReadWrite(this);\n }\n get v2() {\n if (this._v2)\n return this._v2;\n return this._v2 = new TwitterApiv2ReadWrite(this);\n }\n /**\n * Get a client with read only rights.\n */\n get readOnly() {\n return this;\n }\n}\n",
213
- "import TwitterApiSubClient from '../client.subclient';\nimport { API_ADS_PREFIX } from '../globals';\n/**\n * Base Twitter ads client with only read rights.\n */\nexport default class TwitterAdsReadOnly extends TwitterApiSubClient {\n constructor() {\n super(...arguments);\n this._prefix = API_ADS_PREFIX;\n }\n}\n",
214
- "import { API_ADS_PREFIX } from '../globals';\nimport TwitterAdsReadOnly from './client.ads.read';\n/**\n * Base Twitter ads client with read/write rights.\n */\nexport default class TwitterAdsReadWrite extends TwitterAdsReadOnly {\n constructor() {\n super(...arguments);\n this._prefix = API_ADS_PREFIX;\n }\n /**\n * Get a client with only read rights.\n */\n get readOnly() {\n return this;\n }\n}\n",
215
- "import TwitterApiSubClient from '../client.subclient';\nimport { API_ADS_SANDBOX_PREFIX } from '../globals';\n/**\n * Base Twitter ads sandbox client with only read rights.\n */\nexport default class TwitterAdsSandboxReadOnly extends TwitterApiSubClient {\n constructor() {\n super(...arguments);\n this._prefix = API_ADS_SANDBOX_PREFIX;\n }\n}\n",
216
- "import { API_ADS_SANDBOX_PREFIX } from '../globals';\nimport TwitterAdsSandboxReadOnly from './client.ads-sandbox.read';\n/**\n * Base Twitter ads sandbox client with read/write rights.\n */\nexport default class TwitterAdsSandboxReadWrite extends TwitterAdsSandboxReadOnly {\n constructor() {\n super(...arguments);\n this._prefix = API_ADS_SANDBOX_PREFIX;\n }\n /**\n * Get a client with only read rights.\n */\n get readOnly() {\n return this;\n }\n}\n",
217
- "import { API_ADS_SANDBOX_PREFIX } from '../globals';\nimport TwitterAdsSandboxReadWrite from './client.ads-sandbox.write';\n/**\n * Twitter ads sandbox client with all rights (read/write)\n */\nexport class TwitterAdsSandbox extends TwitterAdsSandboxReadWrite {\n constructor() {\n super(...arguments);\n this._prefix = API_ADS_SANDBOX_PREFIX;\n }\n /**\n * Get a client with read/write rights.\n */\n get readWrite() {\n return this;\n }\n}\nexport default TwitterAdsSandbox;\n",
218
- "import { API_ADS_PREFIX } from '../globals';\nimport TwitterAdsReadWrite from './client.ads.write';\nimport TwitterAdsSandbox from '../ads-sandbox/client.ads-sandbox';\n/**\n * Twitter ads client with all rights (read/write)\n */\nexport class TwitterAds extends TwitterAdsReadWrite {\n constructor() {\n super(...arguments);\n this._prefix = API_ADS_PREFIX;\n }\n /**\n * Get a client with read/write rights.\n */\n get readWrite() {\n return this;\n }\n /**\n * Get Twitter Ads Sandbox API client\n */\n get sandbox() {\n if (this._sandbox)\n return this._sandbox;\n return this._sandbox = new TwitterAdsSandbox(this);\n }\n}\nexport default TwitterAds;\n",
219
- "import TwitterApiv1 from '../v1/client.v1';\nimport TwitterApiv2 from '../v2/client.v2';\nimport TwitterApiReadWrite from './readwrite';\nimport TwitterAds from '../ads/client.ads';\n// \"Real\" exported client for usage of TwitterApi.\n/**\n * Twitter v1.1 and v2 API client.\n */\nexport class TwitterApi extends TwitterApiReadWrite {\n /* Direct access to subclients */\n get v1() {\n if (this._v1)\n return this._v1;\n return this._v1 = new TwitterApiv1(this);\n }\n get v2() {\n if (this._v2)\n return this._v2;\n return this._v2 = new TwitterApiv2(this);\n }\n /**\n * Get a client with read/write rights.\n */\n get readWrite() {\n return this;\n }\n /**\n * Get Twitter Ads API client\n */\n get ads() {\n if (this._ads)\n return this._ads;\n return this._ads = new TwitterAds(this);\n }\n /* Static helpers */\n static getErrors(error) {\n var _a;\n if (typeof error !== 'object')\n return [];\n if (!('data' in error))\n return [];\n return (_a = error.data.errors) !== null && _a !== void 0 ? _a : [];\n }\n /** Extract another image size than obtained in a `profile_image_url` or `profile_image_url_https` field of a user object. */\n static getProfileImageInSize(profileImageUrl, size) {\n const lastPart = profileImageUrl.split('/').pop();\n const sizes = ['normal', 'bigger', 'mini'];\n let originalUrl = profileImageUrl;\n for (const availableSize of sizes) {\n if (lastPart.includes(`_${availableSize}`)) {\n originalUrl = profileImageUrl.replace(`_${availableSize}`, '');\n break;\n }\n }\n if (size === 'original') {\n return originalUrl;\n }\n const extPos = originalUrl.lastIndexOf('.');\n if (extPos !== -1) {\n const ext = originalUrl.slice(extPos + 1);\n return originalUrl.slice(0, extPos) + '_' + size + '.' + ext;\n }\n else {\n return originalUrl + '_' + size;\n }\n }\n}\nexport { default as TwitterApiReadWrite } from './readwrite';\nexport { default as TwitterApiReadOnly } from './readonly';\nexport default TwitterApi;\n",
220
- "import { TOAuth2Scope, TwitterApi } from \"twitter-api-v2\";\nimport { Redirect } from \"../../facades/Redirect\";\nimport { HttpRequest } from \"../../http/HttpRequest\";\nimport { OAuthProvider } from \"./OAuthProvider\";\n\ntype Config = {\n clientId: string;\n scope: TOAuth2Scope[];\n clientSecret: string;\n redirectPath: string;\n};\n\ntype OAuthState = {\n state: string;\n codeVerifier: string;\n};\n\nconst defaultConfig: Config = {\n clientId: process.env.X_CLIENT_ID!,\n clientSecret: process.env.X_SECRET!,\n redirectPath: \"/auth/oauth/x/callback\",\n scope: [\"tweet.read\", \"users.read\", \"offline.access\"],\n};\n\nexport class XOAuthProvider extends OAuthProvider {\n config: Config;\n client: TwitterApi;\n // Using a Map to store state and codeVerifier for different OAuth flows\n private oauthStates: Map<string, OAuthState> = new Map();\n\n constructor(config: Partial<Config> = {}) {\n super();\n this.config = { ...defaultConfig, ...config };\n this.client = new TwitterApi({\n clientId: this.config.clientId,\n clientSecret: this.config.clientSecret,\n });\n }\n\n getRedirectUrl() {\n const { url, codeVerifier, state } = this.client.generateOAuth2AuthLink(\n `${process.env.HOST_NAME}${this.config.redirectPath}`,\n { scope: this.config.scope },\n );\n\n // Store state and codeVerifier in a map with state as the key\n this.oauthStates.set(state, { state, codeVerifier });\n\n Redirect.to(url as never);\n return url;\n }\n\n async onCallback(req: HttpRequest) {\n const code = req.search.get(\"code\")!;\n const state = req.search.get(\"state\")!;\n\n // Retrieve the stored codeVerifier using the state from the callback\n const oauthState = this.oauthStates.get(state);\n\n if (!oauthState) {\n throw new Error(\"Invalid or expired OAuth state\");\n }\n\n const result = await this.client.loginWithOAuth2({\n code,\n codeVerifier: oauthState.codeVerifier,\n redirectUri: `${process.env.HOST_NAME}${this.config.redirectPath}`,\n });\n\n // Clean up the stored state after use\n this.oauthStates.delete(state);\n\n const { data } = await result.client.v2.me({\n \"user.fields\": [\"name\", \"username\", \"entities\"],\n });\n\n const { name, email, id = \"\", username } = data ?? ({} as any);\n return { name, email, username, providerId: id };\n }\n}\n",
221
- "import { ServiceProvider } from \"../ServiceProvider\";\nimport type { CronJob } from \"./CronJob\";\nimport type { Kernel } from \"../../kernel\";\n\nexport class CronServiceProvider extends ServiceProvider {\n jobs: (new () => CronJob)[] = [];\n\n constructor(public kernel: Kernel) {\n super();\n }\n\n boot() {}\n}\n",
222
- "import type { CronExpression } from \"cronbake\";\n\nexport class CronJob {\n name: string;\n cron: CronExpression;\n\n callback(): Promise<void> | void {}\n onTick(): Promise<void> | void {}\n onComplete(): Promise<void> | void {}\n\n static exp(expression: CronExpression) {\n return expression;\n }\n}\n"
223
- ],
224
- "mappings": "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",
225
- "debugId": "CEA5C40F53B8E77664756E2164756E21",
226
- "names": []
227
- }