diff --git a/.gitignore b/.gitignore index fe08657..f76c24f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + env venv .idea diff --git a/.licenserc.yaml b/.licenserc.yaml index b75160b..9145ceb 100644 --- a/.licenserc.yaml +++ b/.licenserc.yaml @@ -20,20 +20,20 @@ header: spdx-id: Apache-2.0 copyright-owner: Apache Software Foundation - paths-ignore: - - 'dist' - - 'licenses' - - 'LICENSE' - - 'NOTICE' - - 'logs' - - '**/*.json' - - '**/*.mjs' - - 'KEYS' - - '**/*.js.map' + paths: + - 'products/distill/distill/**' + - 'products/userale/packages/flagon-userale/build/**' + - 'products/userale/packages/flagon-userale/src/**' + - 'products/userale/packages/flagon-userale-ext/src/**' + paths-ignore: + - '**/*.map' comment: on-failure + dependency: files: - products/userale/package.json + - products/userale/packages/flagon-userale/package.json + - products/userale/packages/flagon-userale-ext/package.json - products/distill/pyproject.toml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1b87166..d6f0b5f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + repos: - repo: local hooks: diff --git a/README.md b/README.md index 0053b60..cff24ae 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,22 @@ + + Apache Flagon -------------------------------------- diff --git a/doap_flagon.rdf b/doap_flagon.rdf index 2e62468..9e42596 100755 --- a/doap_flagon.rdf +++ b/doap_flagon.rdf @@ -1,4 +1,23 @@ + + + # Example Docker deployment This directory contains a modified [elk stack](https://github.com/deviantony/docker-elk) along with an instrumented site diff --git a/examples/elk/docker/docker-compose.yml b/examples/elk/docker/docker-compose.yml index d263dbb..b7d607b 100644 --- a/examples/elk/docker/docker-compose.yml +++ b/examples/elk/docker/docker-compose.yml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + version: '3.7' services: diff --git a/examples/elk/docker/elasticsearch/.dockerignore b/examples/elk/docker/elasticsearch/.dockerignore index 37eef9d..e26b22b 100644 --- a/examples/elk/docker/elasticsearch/.dockerignore +++ b/examples/elk/docker/elasticsearch/.dockerignore @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + # Ignore Docker build files Dockerfile .dockerignore diff --git a/examples/elk/docker/elasticsearch/Dockerfile b/examples/elk/docker/elasticsearch/Dockerfile index 22528c6..05cdf5e 100644 --- a/examples/elk/docker/elasticsearch/Dockerfile +++ b/examples/elk/docker/elasticsearch/Dockerfile @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + ARG ELASTIC_VERSION # https://www.docker.elastic.co/ diff --git a/examples/elk/docker/elasticsearch/config/elasticsearch.yml b/examples/elk/docker/elasticsearch/config/elasticsearch.yml index d66f071..94edbd2 100644 --- a/examples/elk/docker/elasticsearch/config/elasticsearch.yml +++ b/examples/elk/docker/elasticsearch/config/elasticsearch.yml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + --- ## Default Elasticsearch configuration from Elasticsearch base image. ## https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/config/elasticsearch.yml diff --git a/examples/elk/docker/kibana/.dockerignore b/examples/elk/docker/kibana/.dockerignore index 37eef9d..e26b22b 100644 --- a/examples/elk/docker/kibana/.dockerignore +++ b/examples/elk/docker/kibana/.dockerignore @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + # Ignore Docker build files Dockerfile .dockerignore diff --git a/examples/elk/docker/kibana/Dockerfile b/examples/elk/docker/kibana/Dockerfile index 9a075be..bf5b603 100644 --- a/examples/elk/docker/kibana/Dockerfile +++ b/examples/elk/docker/kibana/Dockerfile @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + ARG ELASTIC_VERSION # https://www.docker.elastic.co/ diff --git a/examples/elk/docker/kibana/config/kibana.yml b/examples/elk/docker/kibana/config/kibana.yml index ef3f024..812afde 100644 --- a/examples/elk/docker/kibana/config/kibana.yml +++ b/examples/elk/docker/kibana/config/kibana.yml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + --- ## Default Kibana configuration from Kibana base image. ## https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/templates/kibana_yml.template.ts diff --git a/examples/elk/docker/logstash/.dockerignore b/examples/elk/docker/logstash/.dockerignore index 37eef9d..e26b22b 100644 --- a/examples/elk/docker/logstash/.dockerignore +++ b/examples/elk/docker/logstash/.dockerignore @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + # Ignore Docker build files Dockerfile .dockerignore diff --git a/examples/elk/docker/logstash/Dockerfile b/examples/elk/docker/logstash/Dockerfile index bde5808..aca3941 100644 --- a/examples/elk/docker/logstash/Dockerfile +++ b/examples/elk/docker/logstash/Dockerfile @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + ARG ELASTIC_VERSION # https://www.docker.elastic.co/ diff --git a/examples/elk/docker/logstash/config/logstash.yml b/examples/elk/docker/logstash/config/logstash.yml index a81b89b..3e03a3b 100644 --- a/examples/elk/docker/logstash/config/logstash.yml +++ b/examples/elk/docker/logstash/config/logstash.yml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + --- ## Default Logstash configuration from Logstash base image. ## https://github.com/elastic/logstash/blob/main/docker/data/logstash/config/logstash-full.yml diff --git a/examples/elk/docker/setup/.dockerignore b/examples/elk/docker/setup/.dockerignore index c5dd1c8..4d2d4f9 100644 --- a/examples/elk/docker/setup/.dockerignore +++ b/examples/elk/docker/setup/.dockerignore @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + # Ignore Docker build files Dockerfile .dockerignore diff --git a/examples/elk/docker/setup/Dockerfile b/examples/elk/docker/setup/Dockerfile index 1cb7538..b202ea7 100644 --- a/examples/elk/docker/setup/Dockerfile +++ b/examples/elk/docker/setup/Dockerfile @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + ARG ELASTIC_VERSION # https://www.docker.elastic.co/ diff --git a/examples/elk/docker/setup/entrypoint.sh b/examples/elk/docker/setup/entrypoint.sh index ac79321..2099f5a 100755 --- a/examples/elk/docker/setup/entrypoint.sh +++ b/examples/elk/docker/setup/entrypoint.sh @@ -1,4 +1,21 @@ #!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + set -eu set -o pipefail diff --git a/examples/elk/docker/setup/lib.sh b/examples/elk/docker/setup/lib.sh index 7e635c6..699722b 100644 --- a/examples/elk/docker/setup/lib.sh +++ b/examples/elk/docker/setup/lib.sh @@ -1,4 +1,21 @@ #!/usr/bin/env bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + # Log a message. function log { diff --git a/examples/elk/kubernetes/README.md b/examples/elk/kubernetes/README.md index 88af94b..2d5a3fd 100644 --- a/examples/elk/kubernetes/README.md +++ b/examples/elk/kubernetes/README.md @@ -1,3 +1,22 @@ + + # Example Kubernetes deployment This script and accompanying yaml files provide an example ELK stack kubernetes deployment. This is intended to be a starting point for deploying a userale logging end point. diff --git a/examples/elk/kubernetes/resources/elastic.yaml b/examples/elk/kubernetes/resources/elastic.yaml index ce201cd..7b5a605 100644 --- a/examples/elk/kubernetes/resources/elastic.yaml +++ b/examples/elk/kubernetes/resources/elastic.yaml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + apiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata: diff --git a/examples/elk/kubernetes/resources/logstash-auth.yaml b/examples/elk/kubernetes/resources/logstash-auth.yaml index 9935d5c..9a53a98 100644 --- a/examples/elk/kubernetes/resources/logstash-auth.yaml +++ b/examples/elk/kubernetes/resources/logstash-auth.yaml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + kind: Secret apiVersion: v1 metadata: diff --git a/examples/elk/kubernetes/resources/logstash.yaml b/examples/elk/kubernetes/resources/logstash.yaml index f96e877..234d465 100644 --- a/examples/elk/kubernetes/resources/logstash.yaml +++ b/examples/elk/kubernetes/resources/logstash.yaml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + apiVersion: logstash.k8s.elastic.co/v1alpha1 kind: Logstash metadata: diff --git a/examples/elk/kubernetes/run.sh b/examples/elk/kubernetes/run.sh index 2051b00..2de3db3 100755 --- a/examples/elk/kubernetes/run.sh +++ b/examples/elk/kubernetes/run.sh @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + kubectl create -f https://download.elastic.co/downloads/eck/2.11.0/crds.yaml kubectl apply -f https://download.elastic.co/downloads/eck/2.11.0/operator.yaml kubectl apply -f resources/logstash-auth.yaml diff --git a/examples/elk/kubernetes/test.py b/examples/elk/kubernetes/test.py index cf5ddf5..d60568e 100644 --- a/examples/elk/kubernetes/test.py +++ b/examples/elk/kubernetes/test.py @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + from elasticsearch_dsl import connections from elasticsearch_dsl import Search from elasticsearch_dsl import Q diff --git a/logos/flagon.svg b/logos/flagon.svg index 5bdd780..9e2bfa0 100644 --- a/logos/flagon.svg +++ b/logos/flagon.svg @@ -1,4 +1,23 @@ + + diff --git a/logos/flagon_copyright.svg b/logos/flagon_copyright.svg index a770412..eb1ea18 100644 --- a/logos/flagon_copyright.svg +++ b/logos/flagon_copyright.svg @@ -1,4 +1,23 @@ + + diff --git a/products/distill/AUTHORS.md b/products/distill/AUTHORS.md index 5c09681..270c736 100644 --- a/products/distill/AUTHORS.md +++ b/products/distill/AUTHORS.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/CONTRIBUTING.md b/products/distill/CONTRIBUTING.md index d7cda55..77e8db2 100644 --- a/products/distill/CONTRIBUTING.md +++ b/products/distill/CONTRIBUTING.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/distill/core/feature_definition.py b/products/distill/distill/core/feature_definition.py index 7708740..ab0c6e5 100644 --- a/products/distill/distill/core/feature_definition.py +++ b/products/distill/distill/core/feature_definition.py @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + from typing import Any, Dict, List, Callable class FeatureDefinition: diff --git a/products/distill/distill/core/types.py b/products/distill/distill/core/types.py index af72560..62da5b4 100644 --- a/products/distill/distill/core/types.py +++ b/products/distill/distill/core/types.py @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + from typing import Dict, List, Union from pydantic.type_adapter import TypeAdapter diff --git a/products/distill/docs/Combining_Segments_with_Set_Logic.md b/products/distill/docs/Combining_Segments_with_Set_Logic.md index b6851de..6d45396 100644 --- a/products/distill/docs/Combining_Segments_with_Set_Logic.md +++ b/products/distill/docs/Combining_Segments_with_Set_Logic.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Creating_Segments.md b/products/distill/docs/Creating_Segments.md index 1754163..1b46fbd 100644 --- a/products/distill/docs/Creating_Segments.md +++ b/products/distill/docs/Creating_Segments.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Example_Usage.md b/products/distill/docs/Example_Usage.md index b82a6cc..b092be6 100644 --- a/products/distill/docs/Example_Usage.md +++ b/products/distill/docs/Example_Usage.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Exporting_Segments.md b/products/distill/docs/Exporting_Segments.md index 388b6ca..7091fd2 100644 --- a/products/distill/docs/Exporting_Segments.md +++ b/products/distill/docs/Exporting_Segments.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Funnel_Function.md b/products/distill/docs/Funnel_Function.md index 766897d..ebc164e 100644 --- a/products/distill/docs/Funnel_Function.md +++ b/products/distill/docs/Funnel_Function.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Getting_Started.md b/products/distill/docs/Getting_Started.md index 54d4eb1..db75c98 100644 --- a/products/distill/docs/Getting_Started.md +++ b/products/distill/docs/Getting_Started.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Graph_Index.md b/products/distill/docs/Graph_Index.md index be0f5e0..d5fb545 100644 --- a/products/distill/docs/Graph_Index.md +++ b/products/distill/docs/Graph_Index.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Manipulating_Collections_of_Segment_Objects.md b/products/distill/docs/Manipulating_Collections_of_Segment_Objects.md index 8b5274c..0313f3b 100644 --- a/products/distill/docs/Manipulating_Collections_of_Segment_Objects.md +++ b/products/distill/docs/Manipulating_Collections_of_Segment_Objects.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Process.md b/products/distill/docs/Process.md index 5f81b61..1b40f54 100644 --- a/products/distill/docs/Process.md +++ b/products/distill/docs/Process.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Process_Docs.md b/products/distill/docs/Process_Docs.md index 020b3cc..320d854 100644 --- a/products/distill/docs/Process_Docs.md +++ b/products/distill/docs/Process_Docs.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Sankey_Function.md b/products/distill/docs/Sankey_Function.md index d56cda9..82a9b7c 100644 --- a/products/distill/docs/Sankey_Function.md +++ b/products/distill/docs/Sankey_Function.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Segmentation.md b/products/distill/docs/Segmentation.md index d7ffb28..27efdca 100644 --- a/products/distill/docs/Segmentation.md +++ b/products/distill/docs/Segmentation.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Utilities.md b/products/distill/docs/Utilities.md index 90af3f5..59c6d7c 100644 --- a/products/distill/docs/Utilities.md +++ b/products/distill/docs/Utilities.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Utility_Functions.md b/products/distill/docs/Utility_Functions.md index 6298dcd..4970d44 100644 --- a/products/distill/docs/Utility_Functions.md +++ b/products/distill/docs/Utility_Functions.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/Writing_Segments.md b/products/distill/docs/Writing_Segments.md index 799de77..03702f2 100644 --- a/products/distill/docs/Writing_Segments.md +++ b/products/distill/docs/Writing_Segments.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/docs/Combining_Segments_with_Set_Logic.html b/products/distill/docs/docs/Combining_Segments_with_Set_Logic.html index 5a18b2e..6e00555 100644 --- a/products/distill/docs/docs/Combining_Segments_with_Set_Logic.html +++ b/products/distill/docs/docs/Combining_Segments_with_Set_Logic.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Creating_Segments.html b/products/distill/docs/docs/Creating_Segments.html index cbb2239..e83b9ea 100644 --- a/products/distill/docs/docs/Creating_Segments.html +++ b/products/distill/docs/docs/Creating_Segments.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Example 2.html b/products/distill/docs/docs/Example 2.html index f780b56..4b55239 100644 --- a/products/distill/docs/docs/Example 2.html +++ b/products/distill/docs/docs/Example 2.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Example.html b/products/distill/docs/docs/Example.html index ef6176a..b21656d 100644 --- a/products/distill/docs/docs/Example.html +++ b/products/distill/docs/docs/Example.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Example_Usage.html b/products/distill/docs/docs/Example_Usage.html index 85161c9..9640276 100644 --- a/products/distill/docs/docs/Example_Usage.html +++ b/products/distill/docs/docs/Example_Usage.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Exporting_Segments.html b/products/distill/docs/docs/Exporting_Segments.html index 0dde093..878107d 100644 --- a/products/distill/docs/docs/Exporting_Segments.html +++ b/products/distill/docs/docs/Exporting_Segments.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Funnel_Function.html b/products/distill/docs/docs/Funnel_Function.html index 08314b7..0866979 100644 --- a/products/distill/docs/docs/Funnel_Function.html +++ b/products/distill/docs/docs/Funnel_Function.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Getting_Started.html b/products/distill/docs/docs/Getting_Started.html index 7bf5c48..c3d26bd 100644 --- a/products/distill/docs/docs/Getting_Started.html +++ b/products/distill/docs/docs/Getting_Started.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Graph 2.html b/products/distill/docs/docs/Graph 2.html index af678e6..189f7aa 100644 --- a/products/distill/docs/docs/Graph 2.html +++ b/products/distill/docs/docs/Graph 2.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Graph.html b/products/distill/docs/docs/Graph.html index 9bd44e6..e41674a 100644 --- a/products/distill/docs/docs/Graph.html +++ b/products/distill/docs/docs/Graph.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Graph_Index.html b/products/distill/docs/docs/Graph_Index.html index b6bd115..9fad435 100644 --- a/products/distill/docs/docs/Graph_Index.html +++ b/products/distill/docs/docs/Graph_Index.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Manipulating_Collections_of_Segment_Objects.html b/products/distill/docs/docs/Manipulating_Collections_of_Segment_Objects.html index 3948053..18b65ed 100644 --- a/products/distill/docs/docs/Manipulating_Collections_of_Segment_Objects.html +++ b/products/distill/docs/docs/Manipulating_Collections_of_Segment_Objects.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Process.html b/products/distill/docs/docs/Process.html index 5f1e44a..88eb0cf 100644 --- a/products/distill/docs/docs/Process.html +++ b/products/distill/docs/docs/Process.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Process_Docs.html b/products/distill/docs/docs/Process_Docs.html index 66e3f9c..2e2d278 100644 --- a/products/distill/docs/docs/Process_Docs.html +++ b/products/distill/docs/docs/Process_Docs.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Sankey_Function.html b/products/distill/docs/docs/Sankey_Function.html index ad4cfd1..cc29407 100644 --- a/products/distill/docs/docs/Sankey_Function.html +++ b/products/distill/docs/docs/Sankey_Function.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Segmentation.html b/products/distill/docs/docs/Segmentation.html index 84cb522..e4362c1 100644 --- a/products/distill/docs/docs/Segmentation.html +++ b/products/distill/docs/docs/Segmentation.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Utilities.html b/products/distill/docs/docs/Utilities.html index 0a8a34e..cd2e24b 100644 --- a/products/distill/docs/docs/Utilities.html +++ b/products/distill/docs/docs/Utilities.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Utility_Functions.html b/products/distill/docs/docs/Utility_Functions.html index 7fc6ead..d4ee06e 100644 --- a/products/distill/docs/docs/Utility_Functions.html +++ b/products/distill/docs/docs/Utility_Functions.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/Writing_Segments.html b/products/distill/docs/docs/Writing_Segments.html index 008ca80..4a3e855 100644 --- a/products/distill/docs/docs/Writing_Segments.html +++ b/products/distill/docs/docs/Writing_Segments.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/_sources/Combining_Segments_with_Set_Logic.rst.txt b/products/distill/docs/docs/_sources/Combining_Segments_with_Set_Logic.rst.txt index 4270eca..fe4786d 100644 --- a/products/distill/docs/docs/_sources/Combining_Segments_with_Set_Logic.rst.txt +++ b/products/distill/docs/docs/_sources/Combining_Segments_with_Set_Logic.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ================================= Combining Segments with Set Logic ================================= diff --git a/products/distill/docs/docs/_sources/Creating_Segments.rst.txt b/products/distill/docs/docs/_sources/Creating_Segments.rst.txt index a1bb80e..fe9d2a8 100644 --- a/products/distill/docs/docs/_sources/Creating_Segments.rst.txt +++ b/products/distill/docs/docs/_sources/Creating_Segments.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ======================== Creating Segment Objects ======================== diff --git a/products/distill/docs/docs/_sources/Example.rst.txt b/products/distill/docs/docs/_sources/Example.rst.txt index 65a27c3..5ae10d8 100644 --- a/products/distill/docs/docs/_sources/Example.rst.txt +++ b/products/distill/docs/docs/_sources/Example.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + Graph Function Examples ======================= diff --git a/products/distill/docs/docs/_sources/Example_Usage.rst.txt b/products/distill/docs/docs/_sources/Example_Usage.rst.txt index bfa0493..c508746 100644 --- a/products/distill/docs/docs/_sources/Example_Usage.rst.txt +++ b/products/distill/docs/docs/_sources/Example_Usage.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ======================== Example Usage of Distill ======================== diff --git a/products/distill/docs/docs/_sources/Exporting_Segments.rst.txt b/products/distill/docs/docs/_sources/Exporting_Segments.rst.txt index 72e8b29..a653433 100644 --- a/products/distill/docs/docs/_sources/Exporting_Segments.rst.txt +++ b/products/distill/docs/docs/_sources/Exporting_Segments.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ================== Exporting Segments ================== diff --git a/products/distill/docs/docs/_sources/Funnel_Function.rst.txt b/products/distill/docs/docs/_sources/Funnel_Function.rst.txt index 765bce3..9aa7043 100644 --- a/products/distill/docs/docs/_sources/Funnel_Function.rst.txt +++ b/products/distill/docs/docs/_sources/Funnel_Function.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + Funnel ====== diff --git a/products/distill/docs/docs/_sources/Getting_Started.rst.txt b/products/distill/docs/docs/_sources/Getting_Started.rst.txt index 055fdf9..e6a37e5 100644 --- a/products/distill/docs/docs/_sources/Getting_Started.rst.txt +++ b/products/distill/docs/docs/_sources/Getting_Started.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ================================= Getting Started with Segmentation ================================= diff --git a/products/distill/docs/docs/_sources/Graph.rst.txt b/products/distill/docs/docs/_sources/Graph.rst.txt index 860aa12..8e269c9 100644 --- a/products/distill/docs/docs/_sources/Graph.rst.txt +++ b/products/distill/docs/docs/_sources/Graph.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + Graph.py Documentation ====================== diff --git a/products/distill/docs/docs/_sources/Graph_Index.rst.txt b/products/distill/docs/docs/_sources/Graph_Index.rst.txt index 324cbe7..f7ccc29 100644 --- a/products/distill/docs/docs/_sources/Graph_Index.rst.txt +++ b/products/distill/docs/docs/_sources/Graph_Index.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ===== Graph ===== diff --git a/products/distill/docs/docs/_sources/Manipulating_Collections_of_Segment_Objects.rst.txt b/products/distill/docs/docs/_sources/Manipulating_Collections_of_Segment_Objects.rst.txt index af344a1..92cbd82 100644 --- a/products/distill/docs/docs/_sources/Manipulating_Collections_of_Segment_Objects.rst.txt +++ b/products/distill/docs/docs/_sources/Manipulating_Collections_of_Segment_Objects.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + =========================================== Manipulating Collections of Segment Objects =========================================== diff --git a/products/distill/docs/docs/_sources/Process.rst.txt b/products/distill/docs/docs/_sources/Process.rst.txt index bd51672..3f7bad7 100644 --- a/products/distill/docs/docs/_sources/Process.rst.txt +++ b/products/distill/docs/docs/_sources/Process.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ======= Process ======= diff --git a/products/distill/docs/docs/_sources/Process_Docs.rst.txt b/products/distill/docs/docs/_sources/Process_Docs.rst.txt index 7ee3f4e..8b4e78a 100644 --- a/products/distill/docs/docs/_sources/Process_Docs.rst.txt +++ b/products/distill/docs/docs/_sources/Process_Docs.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ==================== Processing Functions ==================== diff --git a/products/distill/docs/docs/_sources/Sankey_Function.rst.txt b/products/distill/docs/docs/_sources/Sankey_Function.rst.txt index f9598a9..25aebf1 100644 --- a/products/distill/docs/docs/_sources/Sankey_Function.rst.txt +++ b/products/distill/docs/docs/_sources/Sankey_Function.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + Sankey ====== diff --git a/products/distill/docs/docs/_sources/Segmentation.rst.txt b/products/distill/docs/docs/_sources/Segmentation.rst.txt index 4f070b6..93eb45a 100644 --- a/products/distill/docs/docs/_sources/Segmentation.rst.txt +++ b/products/distill/docs/docs/_sources/Segmentation.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ============ Segmentation ============ diff --git a/products/distill/docs/docs/_sources/Utilities.rst.txt b/products/distill/docs/docs/_sources/Utilities.rst.txt index 9b44efa..6e2bbce 100644 --- a/products/distill/docs/docs/_sources/Utilities.rst.txt +++ b/products/distill/docs/docs/_sources/Utilities.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ========= Utilities ========= diff --git a/products/distill/docs/docs/_sources/Utility_Functions.rst.txt b/products/distill/docs/docs/_sources/Utility_Functions.rst.txt index e813a83..65a0487 100644 --- a/products/distill/docs/docs/_sources/Utility_Functions.rst.txt +++ b/products/distill/docs/docs/_sources/Utility_Functions.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ================= Utility Functions ================= diff --git a/products/distill/docs/docs/_sources/Writing_Segments.rst.txt b/products/distill/docs/docs/_sources/Writing_Segments.rst.txt index 4d98e92..0dcb292 100644 --- a/products/distill/docs/docs/_sources/Writing_Segments.rst.txt +++ b/products/distill/docs/docs/_sources/Writing_Segments.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ================ Writing Segments ================ diff --git a/products/distill/docs/docs/_sources/distill.segmentation.combining_segments_with_set_logic.rst.txt b/products/distill/docs/docs/_sources/distill.segmentation.combining_segments_with_set_logic.rst.txt index 4270eca..fe4786d 100644 --- a/products/distill/docs/docs/_sources/distill.segmentation.combining_segments_with_set_logic.rst.txt +++ b/products/distill/docs/docs/_sources/distill.segmentation.combining_segments_with_set_logic.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ================================= Combining Segments with Set Logic ================================= diff --git a/products/distill/docs/docs/_sources/distill.segmentation.creating_segments.rst.txt b/products/distill/docs/docs/_sources/distill.segmentation.creating_segments.rst.txt index a1bb80e..fe9d2a8 100644 --- a/products/distill/docs/docs/_sources/distill.segmentation.creating_segments.rst.txt +++ b/products/distill/docs/docs/_sources/distill.segmentation.creating_segments.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ======================== Creating Segment Objects ======================== diff --git a/products/distill/docs/docs/_sources/distill.segmentation.exporting_segments.rst.txt b/products/distill/docs/docs/_sources/distill.segmentation.exporting_segments.rst.txt index 5e169ca..92ac735 100644 --- a/products/distill/docs/docs/_sources/distill.segmentation.exporting_segments.rst.txt +++ b/products/distill/docs/docs/_sources/distill.segmentation.exporting_segments.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ================== Exporting Segments ================== diff --git a/products/distill/docs/docs/_sources/distill.segmentation.getting_started.rst.txt b/products/distill/docs/docs/_sources/distill.segmentation.getting_started.rst.txt index 055fdf9..e6a37e5 100644 --- a/products/distill/docs/docs/_sources/distill.segmentation.getting_started.rst.txt +++ b/products/distill/docs/docs/_sources/distill.segmentation.getting_started.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ================================= Getting Started with Segmentation ================================= diff --git a/products/distill/docs/docs/_sources/distill.segmentation.manipulating_collections_of_segment_objects.rst.txt b/products/distill/docs/docs/_sources/distill.segmentation.manipulating_collections_of_segment_objects.rst.txt index 5546972..841fe4f 100644 --- a/products/distill/docs/docs/_sources/distill.segmentation.manipulating_collections_of_segment_objects.rst.txt +++ b/products/distill/docs/docs/_sources/distill.segmentation.manipulating_collections_of_segment_objects.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + =========================================== Manipulating Collections of Segment Objects =========================================== diff --git a/products/distill/docs/docs/_sources/distill.segmentation.writing_segments.rst.txt b/products/distill/docs/docs/_sources/distill.segmentation.writing_segments.rst.txt index 4d98e92..0dcb292 100644 --- a/products/distill/docs/docs/_sources/distill.segmentation.writing_segments.rst.txt +++ b/products/distill/docs/docs/_sources/distill.segmentation.writing_segments.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + ================ Writing Segments ================ diff --git a/products/distill/docs/docs/_sources/index copy.rst.txt b/products/distill/docs/docs/_sources/index copy.rst.txt index bc1e5fb..253ca35 100644 --- a/products/distill/docs/docs/_sources/index copy.rst.txt +++ b/products/distill/docs/docs/_sources/index copy.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + .. Graph Analytics Flagon Distill documentation master file, created by sphinx-quickstart on Tue Jan 25 10:30:49 2022. You can adapt this file completely to your liking, but it should at least diff --git a/products/distill/docs/docs/_sources/index.rst.txt b/products/distill/docs/docs/_sources/index.rst.txt index bad4184..09243a0 100644 --- a/products/distill/docs/docs/_sources/index.rst.txt +++ b/products/distill/docs/docs/_sources/index.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + .. Graph Analytics Flagon Distill documentation master file, created by sphinx-quickstart on Tue Jan 25 10:30:49 2022. You can adapt this file completely to your liking, but it should at least diff --git a/products/distill/docs/docs/_static/basic 2.css b/products/distill/docs/docs/_static/basic 2.css index 0d38a2f..50b3950 100644 --- a/products/distill/docs/docs/_static/basic 2.css +++ b/products/distill/docs/docs/_static/basic 2.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /* * basic.css * ~~~~~~~~~ diff --git a/products/distill/docs/docs/_static/basic.css b/products/distill/docs/docs/_static/basic.css index 0d38a2f..50b3950 100644 --- a/products/distill/docs/docs/_static/basic.css +++ b/products/distill/docs/docs/_static/basic.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /* * basic.css * ~~~~~~~~~ diff --git a/products/distill/docs/docs/_static/css/badge_only 2.css b/products/distill/docs/docs/_static/css/badge_only 2.css index b1a0fbf..33bfb17 100644 --- a/products/distill/docs/docs/_static/css/badge_only 2.css +++ b/products/distill/docs/docs/_static/css/badge_only 2.css @@ -1 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + .fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} diff --git a/products/distill/docs/docs/_static/css/badge_only.css b/products/distill/docs/docs/_static/css/badge_only.css index b1a0fbf..33bfb17 100644 --- a/products/distill/docs/docs/_static/css/badge_only.css +++ b/products/distill/docs/docs/_static/css/badge_only.css @@ -1 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + .fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} diff --git a/products/distill/docs/docs/_static/css/fonts/fontawesome-webfont.svg b/products/distill/docs/docs/_static/css/fonts/fontawesome-webfont.svg index 855c845..d976f43 100644 --- a/products/distill/docs/docs/_static/css/fonts/fontawesome-webfont.svg +++ b/products/distill/docs/docs/_static/css/fonts/fontawesome-webfont.svg @@ -1,4 +1,23 @@ + + diff --git a/products/distill/docs/docs/_static/css/theme 2.css b/products/distill/docs/docs/_static/css/theme 2.css index 42d82ec..87c7ecc 100644 --- a/products/distill/docs/docs/_static/css/theme 2.css +++ b/products/distill/docs/docs/_static/css/theme 2.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) diff --git a/products/distill/docs/docs/_static/css/theme.css b/products/distill/docs/docs/_static/css/theme.css index 42d82ec..87c7ecc 100644 --- a/products/distill/docs/docs/_static/css/theme.css +++ b/products/distill/docs/docs/_static/css/theme.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) diff --git a/products/distill/docs/docs/_static/dark_mode_css/custom.css b/products/distill/docs/docs/_static/dark_mode_css/custom.css index 989c2ad..8a5fb2f 100644 --- a/products/distill/docs/docs/_static/dark_mode_css/custom.css +++ b/products/distill/docs/docs/_static/dark_mode_css/custom.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + .wy-side-nav-search input[type='text'] { border-radius: 3px; } diff --git a/products/distill/docs/docs/_static/dark_mode_css/dark.css b/products/distill/docs/docs/_static/dark_mode_css/dark.css index fb8802d..30954ec 100644 --- a/products/distill/docs/docs/_static/dark_mode_css/dark.css +++ b/products/distill/docs/docs/_static/dark_mode_css/dark.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + :root { --dark-text-color: #c1c1c1; --dark-link-color: #249ee8; diff --git a/products/distill/docs/docs/_static/dark_mode_css/general.css b/products/distill/docs/docs/_static/dark_mode_css/general.css index aa614f8..f046fce 100644 --- a/products/distill/docs/docs/_static/dark_mode_css/general.css +++ b/products/distill/docs/docs/_static/dark_mode_css/general.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + input[type='color'], input[type='date'], input[type='datetime-local'], diff --git a/products/distill/docs/docs/_static/dark_mode_js/default_dark.js b/products/distill/docs/docs/_static/dark_mode_js/default_dark.js index ea63e07..e80904b 100644 --- a/products/distill/docs/docs/_static/dark_mode_js/default_dark.js +++ b/products/distill/docs/docs/_static/dark_mode_js/default_dark.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + const loadTheme = () => { let theme = localStorage.getItem('theme'); diff --git a/products/distill/docs/docs/_static/dark_mode_js/default_light.js b/products/distill/docs/docs/_static/dark_mode_js/default_light.js index 2b19f92..248d372 100644 --- a/products/distill/docs/docs/_static/dark_mode_js/default_light.js +++ b/products/distill/docs/docs/_static/dark_mode_js/default_light.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + const loadTheme = () => { let theme = localStorage.getItem('theme'); diff --git a/products/distill/docs/docs/_static/dark_mode_js/theme_switcher.js b/products/distill/docs/docs/_static/dark_mode_js/theme_switcher.js index 860bd5d..26e22ea 100644 --- a/products/distill/docs/docs/_static/dark_mode_js/theme_switcher.js +++ b/products/distill/docs/docs/_static/dark_mode_js/theme_switcher.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + const createThemeSwitcher = () => { let btn = document.createElement('BUTTON'); btn.className = 'theme-switcher'; diff --git a/products/distill/docs/docs/_static/doctools 2.js b/products/distill/docs/docs/_static/doctools 2.js index 61ac9d2..8cac06e 100644 --- a/products/distill/docs/docs/_static/doctools 2.js +++ b/products/distill/docs/docs/_static/doctools 2.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /* * doctools.js * ~~~~~~~~~~~ diff --git a/products/distill/docs/docs/_static/doctools.js b/products/distill/docs/docs/_static/doctools.js index 61ac9d2..8cac06e 100644 --- a/products/distill/docs/docs/_static/doctools.js +++ b/products/distill/docs/docs/_static/doctools.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /* * doctools.js * ~~~~~~~~~~~ diff --git a/products/distill/docs/docs/_static/documentation_options 2.js b/products/distill/docs/docs/_static/documentation_options 2.js index ced29de..37bb4ad 100644 --- a/products/distill/docs/docs/_static/documentation_options 2.js +++ b/products/distill/docs/docs/_static/documentation_options 2.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), VERSION: '', diff --git a/products/distill/docs/docs/_static/documentation_options.js b/products/distill/docs/docs/_static/documentation_options.js index ced29de..37bb4ad 100644 --- a/products/distill/docs/docs/_static/documentation_options.js +++ b/products/distill/docs/docs/_static/documentation_options.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), VERSION: '', diff --git a/products/distill/docs/docs/_static/jquery 2.js b/products/distill/docs/docs/_static/jquery 2.js index b061403..b2b2ce6 100644 --- a/products/distill/docs/docs/_static/jquery 2.js +++ b/products/distill/docs/docs/_static/jquery 2.js @@ -1,2 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t + diff --git a/products/distill/docs/docs/genindex.html b/products/distill/docs/docs/genindex.html index fde9436..b85c46e 100644 --- a/products/distill/docs/docs/genindex.html +++ b/products/distill/docs/docs/genindex.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/html/Example.html b/products/distill/docs/docs/html/Example.html index f780b56..4b55239 100644 --- a/products/distill/docs/docs/html/Example.html +++ b/products/distill/docs/docs/html/Example.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/html/Graph.html b/products/distill/docs/docs/html/Graph.html index af678e6..189f7aa 100644 --- a/products/distill/docs/docs/html/Graph.html +++ b/products/distill/docs/docs/html/Graph.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/html/_sources/Example.rst.txt b/products/distill/docs/docs/html/_sources/Example.rst.txt index 65a27c3..5ae10d8 100644 --- a/products/distill/docs/docs/html/_sources/Example.rst.txt +++ b/products/distill/docs/docs/html/_sources/Example.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + Graph Function Examples ======================= diff --git a/products/distill/docs/docs/html/_sources/Graph.rst.txt b/products/distill/docs/docs/html/_sources/Graph.rst.txt index 860aa12..8e269c9 100644 --- a/products/distill/docs/docs/html/_sources/Graph.rst.txt +++ b/products/distill/docs/docs/html/_sources/Graph.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + Graph.py Documentation ====================== diff --git a/products/distill/docs/docs/html/_sources/index copy.rst.txt b/products/distill/docs/docs/html/_sources/index copy.rst.txt index bc1e5fb..253ca35 100644 --- a/products/distill/docs/docs/html/_sources/index copy.rst.txt +++ b/products/distill/docs/docs/html/_sources/index copy.rst.txt @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, +.. software distributed under the License is distributed on an +.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +.. KIND, either express or implied. See the License for the +.. specific language governing permissions and limitations +.. under the License. + .. Graph Analytics Flagon Distill documentation master file, created by sphinx-quickstart on Tue Jan 25 10:30:49 2022. You can adapt this file completely to your liking, but it should at least diff --git a/products/distill/docs/docs/html/_static/alabaster.css b/products/distill/docs/docs/html/_static/alabaster.css index 969ce31..626f417 100644 --- a/products/distill/docs/docs/html/_static/alabaster.css +++ b/products/distill/docs/docs/html/_static/alabaster.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + @import url("basic.css"); /* -- page layout ----------------------------------------------------------- */ diff --git a/products/distill/docs/docs/html/_static/basic.css b/products/distill/docs/docs/html/_static/basic.css index 0d38a2f..50b3950 100644 --- a/products/distill/docs/docs/html/_static/basic.css +++ b/products/distill/docs/docs/html/_static/basic.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /* * basic.css * ~~~~~~~~~ diff --git a/products/distill/docs/docs/html/_static/css/badge_only.css b/products/distill/docs/docs/html/_static/css/badge_only.css index b1a0fbf..33bfb17 100644 --- a/products/distill/docs/docs/html/_static/css/badge_only.css +++ b/products/distill/docs/docs/html/_static/css/badge_only.css @@ -1 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + .fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} diff --git a/products/distill/docs/docs/html/_static/css/fonts/fontawesome-webfont.svg b/products/distill/docs/docs/html/_static/css/fonts/fontawesome-webfont.svg index 855c845..d976f43 100644 --- a/products/distill/docs/docs/html/_static/css/fonts/fontawesome-webfont.svg +++ b/products/distill/docs/docs/html/_static/css/fonts/fontawesome-webfont.svg @@ -1,4 +1,23 @@ + + diff --git a/products/distill/docs/docs/html/_static/css/theme.css b/products/distill/docs/docs/html/_static/css/theme.css index 42d82ec..87c7ecc 100644 --- a/products/distill/docs/docs/html/_static/css/theme.css +++ b/products/distill/docs/docs/html/_static/css/theme.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) diff --git a/products/distill/docs/docs/html/_static/custom.css b/products/distill/docs/docs/html/_static/custom.css index 2a924f1..412cd2e 100644 --- a/products/distill/docs/docs/html/_static/custom.css +++ b/products/distill/docs/docs/html/_static/custom.css @@ -1 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /* This file intentionally left blank. */ diff --git a/products/distill/docs/docs/html/_static/dark_mode_css/custom.css b/products/distill/docs/docs/html/_static/dark_mode_css/custom.css index 989c2ad..8a5fb2f 100644 --- a/products/distill/docs/docs/html/_static/dark_mode_css/custom.css +++ b/products/distill/docs/docs/html/_static/dark_mode_css/custom.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + .wy-side-nav-search input[type='text'] { border-radius: 3px; } diff --git a/products/distill/docs/docs/html/_static/dark_mode_css/dark.css b/products/distill/docs/docs/html/_static/dark_mode_css/dark.css index fb8802d..30954ec 100644 --- a/products/distill/docs/docs/html/_static/dark_mode_css/dark.css +++ b/products/distill/docs/docs/html/_static/dark_mode_css/dark.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + :root { --dark-text-color: #c1c1c1; --dark-link-color: #249ee8; diff --git a/products/distill/docs/docs/html/_static/dark_mode_css/general.css b/products/distill/docs/docs/html/_static/dark_mode_css/general.css index aa614f8..f046fce 100644 --- a/products/distill/docs/docs/html/_static/dark_mode_css/general.css +++ b/products/distill/docs/docs/html/_static/dark_mode_css/general.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + input[type='color'], input[type='date'], input[type='datetime-local'], diff --git a/products/distill/docs/docs/html/_static/dark_mode_js/default_dark.js b/products/distill/docs/docs/html/_static/dark_mode_js/default_dark.js index ea63e07..e80904b 100644 --- a/products/distill/docs/docs/html/_static/dark_mode_js/default_dark.js +++ b/products/distill/docs/docs/html/_static/dark_mode_js/default_dark.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + const loadTheme = () => { let theme = localStorage.getItem('theme'); diff --git a/products/distill/docs/docs/html/_static/dark_mode_js/default_light.js b/products/distill/docs/docs/html/_static/dark_mode_js/default_light.js index 2b19f92..248d372 100644 --- a/products/distill/docs/docs/html/_static/dark_mode_js/default_light.js +++ b/products/distill/docs/docs/html/_static/dark_mode_js/default_light.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + const loadTheme = () => { let theme = localStorage.getItem('theme'); diff --git a/products/distill/docs/docs/html/_static/dark_mode_js/theme_switcher.js b/products/distill/docs/docs/html/_static/dark_mode_js/theme_switcher.js index 860bd5d..26e22ea 100644 --- a/products/distill/docs/docs/html/_static/dark_mode_js/theme_switcher.js +++ b/products/distill/docs/docs/html/_static/dark_mode_js/theme_switcher.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + const createThemeSwitcher = () => { let btn = document.createElement('BUTTON'); btn.className = 'theme-switcher'; diff --git a/products/distill/docs/docs/html/_static/doctools.js b/products/distill/docs/docs/html/_static/doctools.js index 61ac9d2..8cac06e 100644 --- a/products/distill/docs/docs/html/_static/doctools.js +++ b/products/distill/docs/docs/html/_static/doctools.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /* * doctools.js * ~~~~~~~~~~~ diff --git a/products/distill/docs/docs/html/_static/documentation_options.js b/products/distill/docs/docs/html/_static/documentation_options.js index ced29de..37bb4ad 100644 --- a/products/distill/docs/docs/html/_static/documentation_options.js +++ b/products/distill/docs/docs/html/_static/documentation_options.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), VERSION: '', diff --git a/products/distill/docs/docs/html/_static/jquery-3.5.1.js b/products/distill/docs/docs/html/_static/jquery-3.5.1.js index 5093733..e3973ae 100644 --- a/products/distill/docs/docs/html/_static/jquery-3.5.1.js +++ b/products/distill/docs/docs/html/_static/jquery-3.5.1.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /*! * jQuery JavaScript Library v3.5.1 * https://jquery.com/ diff --git a/products/distill/docs/docs/html/_static/jquery.js b/products/distill/docs/docs/html/_static/jquery.js index b061403..b2b2ce6 100644 --- a/products/distill/docs/docs/html/_static/jquery.js +++ b/products/distill/docs/docs/html/_static/jquery.js @@ -1,2 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t + diff --git a/products/distill/docs/docs/html/index copy.html b/products/distill/docs/docs/html/index copy.html index b0a0966..a554991 100644 --- a/products/distill/docs/docs/html/index copy.html +++ b/products/distill/docs/docs/html/index copy.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/html/index.html b/products/distill/docs/docs/html/index.html index e5fd4b8..eaa5241 100644 --- a/products/distill/docs/docs/html/index.html +++ b/products/distill/docs/docs/html/index.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/html/search.html b/products/distill/docs/docs/html/search.html index c6d1f32..958d7aa 100644 --- a/products/distill/docs/docs/html/search.html +++ b/products/distill/docs/docs/html/search.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/html/searchindex.js b/products/distill/docs/docs/html/searchindex.js index 0e7dfe2..3ab90a1 100644 --- a/products/distill/docs/docs/html/searchindex.js +++ b/products/distill/docs/docs/html/searchindex.js @@ -1 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + Search.setIndex({docnames:["Example","Graph","index","index copy"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["Example.rst","Graph.rst","index.rst","index copy.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":1,"1":1,"1s":1,"2":1,"2s":1,"3s":1,"5":1,"65":1,"break":1,"default":[0,1],"function":3,"return":[0,1],A:0,And:0,If:1,The:0,add:0,addition:0,an:[0,1],append:1,ar:1,argument:[0,1],b:0,below:0,button:0,c:0,can:0,chart:0,col:1,collect:1,color:1,connect:1,connector:1,convert:1,correspond:0,count:1,counter1:1,counter2:1,counter3:1,counter:1,creat:[0,1],d:0,dash:1,data:1,deepskyblu:1,def:1,defin:1,diagram:0,dict:1,dictionari:[0,1],document:0,doe:1,dot:1,duplic:1,e:[0,1],each:1,edg:[0,1],edge_list:1,edge_list_count:1,edge_list_temp:1,edgelist_list:1,edges_segmentn:[0,1],element:1,els:1,end:0,exampl:3,exist:[0,1],extract:1,fals:[0,1],fig:1,figur:1,file:0,first_rung:1,flow:0,form:0,from:[0,1],funnel:3,funnel_target:1,funnel_targets_temp:1,g:[0,1],give:1,given:1,go:1,have:0,how:1,i:1,index:[1,2],initi:1,input:0,insid:1,interest:[0,1],item:1,kei:[0,1],label:[0,1],len:1,length:1,lightsalmon:1,lime:1,line:1,link:1,list:[0,1],mani:1,marker:1,mock:0,modul:2,most_common:1,name:1,new_edg:1,new_edge_list:1,new_edge_list_count:1,new_nod:1,node:[0,1],node_label:[0,1],none:1,now:0,number:1,occur:1,opac:1,option:[0,1],origin:1,output:0,p:0,page:2,pass:0,percent:1,plot:1,provid:[0,1],py:[0,3],python:0,quantiti:0,rang:1,receiv:1,recurs:1,remov:1,replac:[0,1],request:0,row:1,sankei:3,search:2,second_rung:1,self:1,send:1,show:1,sourc:1,source_list:1,split:1,string:[0,1],take:0,tan:1,target:[0,1],target_list:1,test_button:0,test_radio_input:0,test_text_input:0,textinfo:1,textposit:1,third_rung:1,time:1,tupl:[0,1],us:1,user:[0,1],user_specif:[0,1],userspec:0,valu:[0,1],value_list:1,wa:1,we:[0,1],weight:1,where:0,width:[0,1],x:1,y:1},titles:["Graph Function Examples","Graph.py Documentation","Indices and tables","Graph Analytics Documentation"],titleterms:{"function":[0,1],analyt:3,content:3,document:[1,3],exampl:0,funnel:[0,1],graph:[0,1,3],indic:2,py:1,sankei:[0,1],tabl:2}}) diff --git a/products/distill/docs/docs/index 2.html b/products/distill/docs/docs/index 2.html index e5fd4b8..eaa5241 100644 --- a/products/distill/docs/docs/index 2.html +++ b/products/distill/docs/docs/index 2.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/index.html b/products/distill/docs/docs/index.html index b718a35..9fd88cf 100644 --- a/products/distill/docs/docs/index.html +++ b/products/distill/docs/docs/index.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/search 2.html b/products/distill/docs/docs/search 2.html index c6d1f32..958d7aa 100644 --- a/products/distill/docs/docs/search 2.html +++ b/products/distill/docs/docs/search 2.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/search.html b/products/distill/docs/docs/search.html index 9fad919..a064097 100644 --- a/products/distill/docs/docs/search.html +++ b/products/distill/docs/docs/search.html @@ -1,3 +1,22 @@ + + diff --git a/products/distill/docs/docs/searchindex 2.js b/products/distill/docs/docs/searchindex 2.js index f9ec0f5..260084e 100644 --- a/products/distill/docs/docs/searchindex 2.js +++ b/products/distill/docs/docs/searchindex 2.js @@ -1 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + Search.setIndex({docnames:["Example","Graph","distill.segmentation.combining_segments_with_set_logic","distill.segmentation.creating_segments","distill.segmentation.exporting_segments","distill.segmentation.getting_started","distill.segmentation.manipulating_collections_of_segment_objects","distill.segmentation.writing_segments","index","index copy"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["Example.rst","Graph.rst","distill.segmentation.combining_segments_with_set_logic.rst","distill.segmentation.creating_segments.rst","distill.segmentation.exporting_segments.rst","distill.segmentation.getting_started.rst","distill.segmentation.manipulating_collections_of_segment_objects.rst","distill.segmentation.writing_segments.rst","index.rst","index copy.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[1,4,6],"1":[1,2,3,4,6],"1s":1,"2":[1,2,3,4,6],"20":3,"2s":1,"3":[4,6],"3s":1,"4":6,"5":[1,3,4,6],"6":4,"65":1,"7":6,"9":6,"abstract":5,"break":1,"case":3,"class":6,"default":[0,1,3],"do":[3,4,6,7],"final":3,"function":[2,3,4,5,6,7,9],"new":[2,3,4,6],"return":[0,1,2,3,6,7],"true":3,A:[0,2,3,5,6],And:0,For:3,If:[1,3],In:3,The:[0,2,3,4,5,6,7],There:3,These:[3,5,6],To:3,abil:[5,6],abov:[2,3,4,6,7],access:[5,7],add:[0,6],addit:[3,6],addition:0,after:[3,6,7],aid:[3,5],all:6,allow:[5,6,7],along:[4,7],alreadi:3,also:[3,5,6,7],an:[0,1,2,3,4,5,6],analysi:[4,5],analyst:[3,5,6,7],analyz:5,ani:[3,6],anoth:[3,5],append:[1,5],append_seg:6,ar:[1,3,4,5,6],argument:[0,1,3],assign:6,assist:7,associ:[5,7],attempt:6,attribut:4,avail:[3,5],avoid:3,b:0,back:3,base:[2,3,5],befor:[3,6],begin:3,behavior:3,behind:5,below:[0,2,3,4,6,7],between:3,bombard:5,both:[3,5],button:0,c:0,call:6,can:[0,2,3,4,6,7],capabl:[5,6],categori:3,chang:6,chart:0,click:[3,4],clienttim:[2,3,5],code:[2,3,4,6,7],col:1,collect:[1,5,7],color:1,compar:5,comprehens:[5,7],connect:1,connector:1,consid:3,consol:6,contain:[3,6],convert:1,correspond:0,could:3,count:1,counter1:1,counter2:1,counter3:1,counter:1,creat:[0,1,2,4,5,6,7],create_seg:[3,7],creation:[5,6,7],csv:4,curat:[5,6,7],current:[4,6],custom:5,d:0,dash:1,data:[1,5],datetim:3,deadspac:6,deepskyblu:1,def:1,defin:[1,3,4,7],delet:5,demonstr:3,denot:[3,5,6],describ:[3,5],detect_deadspac:3,diagram:0,dict:1,dictionari:[0,1,3,5,7],differ:5,directori:4,distil:[2,3,4,5,6,7],divis:3,document:[0,3],doe:[1,3],done:[3,6,7],dot:1,duplic:1,e:[0,1,7],each:[1,3,4,5,6,7],easi:[5,7],easier:5,easiest:5,easili:7,edg:[0,1],edge_list:1,edge_list_count:1,edge_list_temp:1,edgelist_list:1,edges_segmentn:[0,1],either:[3,6],element:1,els:1,end:[0,2,3,4,5,6,7],end_time_1:[3,7],end_time_2:[3,7],entir:[5,6],entitl:[3,4],enumer:5,even:5,event:3,exampl:[2,3,4,6,7,9],exist:[0,1,6],expect:3,export_seg:4,extract:1,fall:3,fals:[0,1],featur:6,field:[3,4,5],field_values_of_interest:3,fig:1,figur:1,file:[0,4,5],filter:5,first:[3,6],first_rung:1,fit:3,five:3,fix:6,fixed_tim:6,flow:0,follow:[3,4,5,6],form:[0,3],format:3,from:[0,1,6],functon:7,funnel:9,funnel_target:1,funnel_targets_temp:1,further:[4,5],g:[0,1],gener:[4,6],generate_collapsing_window_seg:[3,5],generate_collapsing_windows_seg:3,generate_field_nam:[5,6],generate_fixed_time_seg:3,generate_matched_valu:[5,6],generate_seg:[3,5],get:6,get_num_log:6,get_segment_list:6,get_segment_name_dict:6,get_segments_befor:6,get_segments_of_typ:6,get_uid:2,get_uuid:3,getuuid:3,give:[1,5],given:[1,2,3,5,6],go:1,group:5,ha:[3,5],had:6,happen:3,have:[0,3,6],held:6,help:5,hold:[3,5],how:[1,5,6,7],howev:[6,7],hundr:5,i:[1,7],id:3,identifi:3,idl:3,illustr:3,includ:[5,6],index:[1,6,8],indic:[3,6],individu:[6,7],inform:3,inher:4,initi:1,input:[0,6],insid:1,instal:5,instanc:3,integ:3,interchang:3,interest:[0,1,3],interv:3,involv:3,item:1,iter:[5,7],its:3,itself:3,kei:[0,1,3,6],know:3,label:[0,1,3],largest:2,last:3,least:6,len:1,length:1,less:6,lightsalmon:1,like:4,lime:1,line:[1,4],link:1,list:[0,1,2,3,5,7],liter:3,load:3,locat:6,log:[4,5,7],longer:3,look:[4,7],mai:3,make:5,manag:5,mani:1,manipul:5,map:7,marker:1,match:[3,4,5,6],meaning:5,metadata:5,method:6,mock:0,modif:5,modifi:6,modul:8,more:3,most:3,most_common:1,must:[3,6],name:[1,3,4,5,6,7],need:[5,7],nest:7,new_edg:1,new_edge_list:1,new_edge_list_count:1,new_nod:1,new_seg:2,new_segment1:2,new_segment2:2,new_segment_1:2,new_segment_2:2,nfilter:6,nmodifi:6,node:[0,1],node_label:[0,1],non:3,none:[1,6],note:[3,4,6],now:0,nsegment:6,num_log:[5,6],number:[1,4,5],numer:6,object:[2,4,7],occur:[1,3],off:3,onc:5,one:3,onli:6,opac:1,option:[0,1,3],order:3,origin:[1,6],out:6,output:[0,3,4,6],over:7,overlap:3,own:3,p:0,packag:[2,3,7],page:8,paramet:[3,6],particular:3,particularli:6,pass:0,path:[3,4],pattern:5,percent:1,perform:[2,6],place:4,plot:1,possibl:3,prefix:3,previou:3,print:6,prior:3,project:5,provid:[0,1,2,3,4,5],put:3,py:[0,9],python:[0,3,5],quantiti:0,rang:1,rather:[6,7],receiv:1,record:3,recurs:1,refer:6,remov:[1,6],replac:[0,1],repres:[2,3,5,6],represent:5,request:0,rest:3,result:[6,7],row:1,s:[2,3,5,7],sankei:9,scene:5,search:8,second:3,second_rung:1,section:5,seek:5,seen:4,segment0:6,segment1:[2,3,4,6,7],segment2:[2,3,4,7],segment_nam:[2,3,5,6,7],segment_typ:[4,5,6],segments1:6,segments2:6,segments_dict:6,segments_list:6,self:1,send:1,shorter:3,show:[1,6,7],shown:[2,3,6],similar:[5,7],similarli:2,simpl:[4,7],sinc:[5,6,7],smallest:2,some:7,sort:[3,7],sorted_dict:[3,7],sourc:1,source_list:1,specifi:6,split:1,start:[2,3,4,6,7],start_end_v:[3,5,7],start_time_1:[3,7],start_time_2:[3,7],step:3,string:[0,1,3],structur:[3,5],subscript:5,support:7,syntax:5,take:[0,3,4,6],taken:3,tan:1,target:[0,1],target_list:1,test:4,test_button:0,test_radio_input:0,test_text_input:0,textinfo:1,textposit:1,than:[3,6,7],thei:6,them:3,themselv:[5,6],thi:[2,3,4,5,6,7],third_rung:1,three:[2,3,6],threshold:3,through:[3,5,7],throughout:3,time:[1,4,7],togeth:5,top:5,trim:3,tupl:[0,1,3,7],two:[2,3,4,6],type:[3,4,5],uid1:2,uid2:2,uid3:2,uid4:2,uid5:2,uid6:2,uid9:2,uid:[2,3,5,7],under:[3,5],underli:6,uniqu:3,univers:3,updat:6,us:[1,2,3,4,5,6,7],usag:[2,3,6,7],user:[0,1,3,4,6],user_specif:[0,1],useral:[5,7],userspec:0,util:5,uuid:3,valu:[0,1,2,3,4,5,7],value_list:1,varieti:[5,6],via:[5,6],wa:[1,5],wai:[3,5,6,7],want:3,we:[0,1,3],weight:1,were:6,what:[3,4],when:[3,5,6],where:0,which:[3,6,7],whose:6,width:[0,1],within:[3,4,5,6],without:5,write_seg:7,written_seg:7,x:1,y:1},titles:["Graph Function Examples","Graph.py Documentation","Combining Segments with Set Logic","Creating Segment Objects","Exporting Segments","Getting Started with Segmentation","Manipulating Collections of Segment Objects","Writing Segments","Indices and tables","Graph Analytics Documentation"],titleterms:{"export":4,"function":[0,1],"import":5,access:6,analyt:9,append:6,automat:3,basic:3,collaps:3,collect:6,combin:2,comprehens:6,content:9,creat:3,creation:3,cutoff:6,data:6,deadspac:3,delet:6,detect:3,dictionari:6,differ:[2,6],document:[1,9],exampl:0,filter:6,fix:3,funnel:[0,1],gener:3,get:5,graph:[0,1,9],indic:8,intersect:2,iter:6,list:6,log:[3,6],logic:2,manipul:6,modif:6,number:6,object:[3,5,6],packag:5,preprocess:3,py:1,represent:6,sankei:[0,1],segment:[2,3,4,5,6,7],set:2,start:5,structur:6,subscript:6,tabl:8,through:6,time:[3,6],type:6,union:2,useral:3,what:5,why:5,window:3,write:7}}) diff --git a/products/distill/docs/docs/searchindex.js b/products/distill/docs/docs/searchindex.js index bd8245c..2dae0ce 100644 --- a/products/distill/docs/docs/searchindex.js +++ b/products/distill/docs/docs/searchindex.js @@ -1 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + Search.setIndex({docnames:["Combining_Segments_with_Set_Logic","Creating_Segments","Example_Usage","Exporting_Segments","Funnel_Function","Getting_Started","Graph_Index","Manipulating_Collections_of_Segment_Objects","Process","Process_Docs","Sankey_Function","Segmentation","Utilities","Utility_Functions","Writing_Segments","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["Combining_Segments_with_Set_Logic.rst","Creating_Segments.rst","Example_Usage.rst","Exporting_Segments.rst","Funnel_Function.rst","Getting_Started.rst","Graph_Index.rst","Manipulating_Collections_of_Segment_Objects.rst","Process.rst","Process_Docs.rst","Sankey_Function.rst","Segmentation.rst","Utilities.rst","Utility_Functions.rst","Writing_Segments.rst","index.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[2,3,4,7,10],"05":2,"1":[0,1,2,3,4,7,9,10],"1000":13,"110":2,"16":2,"18":2,"1s":4,"2":[0,1,2,3,4,7,9],"20":1,"2022":2,"21":2,"219":2,"236":2,"25":2,"27":2,"28":2,"283000":2,"2s":4,"3":[2,3,7,9],"30":2,"32":2,"33":2,"332":2,"34":2,"38":2,"3d":2,"3s":4,"4":[2,7,9],"427":2,"5":[1,3,4,7],"57":2,"59":2,"6":[2,3],"633000":2,"65":4,"7":7,"774000":2,"9":7,"935000":2,"abstract":5,"break":4,"case":1,"class":7,"default":[1,4],"do":[1,2,3,7,14],"export":[11,15],"final":1,"function":[0,1,2,3,5,6,7,8,12,14,15],"import":[3,11,15],"long":2,"new":[0,1,3,7],"return":[0,1,2,3,4,7,10,14],"true":[1,9],"try":2,"while":2,A:[0,1,2,4,5,7,13],And:4,By:[2,3],For:[1,2],If:[1,4,10],In:[1,2,3],It:2,One:[2,3],The:[0,1,2,3,5,6,7,13,14],There:1,These:[1,2,5,7,9],To:[1,2,3],abil:[3,5,7],abov:[0,1,3,7,14],access:[5,11,14],activ:2,actual:2,add:[4,7],addit:[1,3,7],addition:[4,10],after:[1,7,14],aid:[1,5,13],all:[2,7,9],allow:[2,5,7,14],along:[2,3,14],alreadi:1,also:[1,2,5,7,14],alwai:2,amount:2,an:[0,1,2,3,4,5,7,9,10,13],analysi:[2,3,5],analyst:[1,5,7,9,14],analyz:[2,5],ani:[1,2,7],anoth:[1,2,3,5],answer:2,append:[2,4,5,10,11],append_seg:[2,7],approxim:2,ar:[1,2,3,4,5,7,9,10],argument:[1,4,10],assert:2,assign:7,assist:14,associ:[5,14],assum:3,attempt:[7,9],attribut:3,automat:11,autorang:[2,3],avail:[1,5],averag:2,avoid:1,b:10,back:1,bar:3,base:[0,1,2,5,9],basic:11,been:3,befor:[1,7],begin:[1,2],behavior:1,behind:5,below:[0,1,2,3,4,7,9,10,13,14],benefit:3,better:2,between:[1,2],bit:2,blue:2,bombard:5,both:[1,3,5,9,13],build:3,button:4,c:10,calcul:2,call:7,can:[0,1,2,3,4,7,9,13,14],capabl:[5,7],captur:2,cat:2,categori:1,chang:7,chart:[2,3,10],circumst:2,click:[1,3],client_tim:2,clienttim:[0,1,2,5],code:[0,1,2,3,7,14],col:10,collect:[2,4,5,10,11,14,15],color:[2,3,4],color_map:2,combin:[11,15],compar:[2,5],complet:2,complex:2,comprehens:[5,9,11,14],comput:2,computation:2,connect:10,connector:4,consid:1,consol:7,contain:[1,2,7],convert:[2,4,13],correspond:10,could:1,count:10,counter1:4,counter2:4,counter3:4,counter:[4,10],creat:[0,2,3,4,5,7,9,10,11,14,15],create_seg:[1,14],createdigraph:2,creation:[2,5,7,11,14],css:2,csv:[2,3],curat:[5,7,14],current:[3,7],custom:5,d:10,dash:[3,4],dashboard:[2,3],data:[2,4,5,10,11],data_many_sess:2,date:2,date_typ:2,datetim:[1,2,3,12],deadspac:[7,11],deepskyblu:4,def:[2,10],defin:[1,2,3,4,10,14],delet:[5,11],demonstr:1,denot:[1,5,7],depend:2,describ:[1,5,9],detect:11,detect_deadspac:1,determin:2,develop:2,df:[2,3],diagram:[4,10],dict:[2,4,10],dictionari:[1,4,5,9,10,14],differ:[2,3,5,11],directori:3,displai:[2,3],display_seg:2,distanc:15,distil:[0,1,3,5,7,9,13,14],distort:2,div:2,divis:1,document:[1,4],doe:[1,10],done:[1,2,7,14],dot:4,draw:2,draw_digraph:2,duplic:4,dure:2,e:[2,4,14],each:[1,2,3,4,5,7,14],easi:[5,14],easier:5,easiest:5,easili:14,edg:[2,4,9,10],edge_list:[4,10],edge_list_count:[4,10],edge_list_temp:[4,10],edgelist_list:4,edges_segmentn:[4,10],edit:15,either:[1,7,13],element:[2,10],elif:2,els:[2,4,10],end:[0,1,2,3,5,7,10,14],end_time_1:[1,14],end_time_2:[1,14],entir:[5,7],entitl:[1,2,3],enumer:5,epoch:12,epoch_to_datetim:[2,13],equal:7,even:5,event:1,exact:2,exactli:2,exampl:[0,1,6,7,9,11,13,14,15],example_seg:3,exist:[2,3,4,7,10],expect:1,experi:2,export_seg:[2,3],express:[2,3],extract:10,fall:1,fals:[4,10],featur:7,few:3,ffe7i:2,field:[1,3,5,9],field_values_of_interest:1,fig:[2,3,4,10],figur:[4,10],file:[3,5],filter:[2,5,11],find:2,find_meta_valu:[2,9],first:[1,2,7],first_rung:4,fit:1,five:1,fix:7,fixed_tim:7,flow:10,follow:[1,2,3,5,7,13],form:[1,4],format:[1,2,3,13],found:3,four:2,from:[2,3,4,7,10],functon:14,funnel:[6,15],funnel_target:4,funnel_targets_temp:4,further:[3,5],g0:2,g1:2,g2:2,g3:2,g:4,game:2,game_filt:2,gantt:[2,3],gener:[2,3,7,11,13],generate_collapsing_window_seg:[1,2,5],generate_collapsing_windows_seg:1,generate_field_nam:[2,5,7],generate_fixed_time_seg:1,generate_matched_valu:[2,5,7],generate_seg:[1,5],get:[2,7,11,12,15],get_num_log:7,get_segment_list:[2,7],get_segment_name_dict:7,get_segments_aft:7,get_segments_befor:7,get_segments_of_typ:7,get_uid:0,get_uuid:[1,13],getuuid:[1,2,13],give:[5,10],given:[0,1,3,4,5,7,10],global:2,go:[4,10],graph:[2,3,4,10,15],graph_edit_dist:2,green:2,group:5,ha:[1,2,5],had:[2,7],happen:1,have:[1,2,3,4,7,10],held:7,help:[2,5,9],hold:[1,5],how:[2,4,5,7,10,14],howev:[2,7,14],hundr:5,i:[2,4,10,14],id:[1,2],identifi:[1,13],idl:1,illustr:1,improv:2,includ:[5,7,13],index:[2,4,7,10],indic:[1,3,7],individu:[7,14],inform:1,inher:3,initi:4,input:[2,4,7,10],insid:4,instal:5,instanc:[1,2],instanti:2,integ:[1,2,13],integer_tim:13,interact:2,interchang:1,interest:[1,4],intersect:11,interv:1,investig:2,involv:[1,2],isinst:2,issu:2,item:[2,4,10],iter:[5,9,11,14],its:1,itself:[1,2],json_fil:2,kart:2,kei:[1,2,4,7,9,10],know:1,kv:2,label:[1,4,10],lambda:2,larg:2,largest:0,last:1,least:7,len:[2,4,10],length:[2,4],less:7,let:2,lightsalmon:4,like:3,lime:4,line:[3,4],link:10,list:[0,1,2,4,5,9,10,11,14],liter:1,load:[1,2],locat:7,log:[2,3,5,9,11,13,14],logic:[2,11,15],longer:1,look:[2,3,14],lot:2,mai:1,main:9,make:[2,5],manag:5,mani:[2,4,10],manipul:[5,11,15],map:14,mario:2,marker:4,match:[1,2,3,5,7],meaning:5,meant:2,measur:15,metadata:5,method:7,metric:2,mock:4,modif:[5,11],modifi:7,modul:[],more:[1,2],most:[1,2],most_common:4,ms:2,must:[1,7],name:[1,2,3,4,5,7,10,14],necessari:2,need:[2,5,14],nest:14,networkx:2,new_edg:4,new_edge_list:4,new_edge_list_count:4,new_nod:10,new_seg:[0,2],new_segment1:0,new_segment2:0,new_segment_1:0,new_segment_2:0,newli:2,next:2,nfilter:7,nintendo:2,nintendog:2,nmodifi:7,node:[2,4,10],node_color:2,node_label:[4,10],non:1,none:[4,7],note:[1,2,3,7],now:[2,4],nsegment:7,num_log:[2,5,7],number:[2,3,4,5],numer:7,nx:2,object:[0,3,11,13,14,15],occas:2,occur:[1,4],off:1,onc:5,one:[1,2,9],onli:7,opac:4,open:2,optimize_graph_edit_dist:2,option:[1,4,10],order:1,origin:[2,7,10],os:2,other:2,our:[2,3],out:[2,7,9],output:[1,2,3,4,7,10,13],over:14,overarch:2,overlap:1,overview:13,own:1,p:4,packag:[0,1,2,11,14],page:[],pairwiseseq:[2,9],pairwisestag:9,panda:[2,3],paramet:[1,7],particular:1,particularli:[3,7,9,13],pass:[2,4,10],path:[1,2,3],pattern:5,pd:[2,3],percent:4,perform:[0,2,7],pie:3,place:3,plot:[3,4],png:[],possibl:1,pre:3,prefix:1,prepar:13,preprocess:[11,13],previou:1,previous:2,print:7,prior:1,problem:2,process:15,produc:2,project:5,provid:[0,1,3,4,5,9,10,13],put:1,px:[2,3],py:[],python:[1,3,5],quantiti:10,race:2,rang:[2,4,10],rather:[2,7,14],raw_data:2,re:2,read:13,read_csv:[2,3],readabl:2,receiv:10,record:1,recurs:10,refer:7,reflect:2,remov:[2,4,7,10],replac:[4,10],repres:[0,1,2,3,5,7,13],represent:[5,11,13],request:4,requir:[2,13],resourc:2,rest:1,result:[7,14],revers:[2,3],row:[4,10],run:2,s:[0,1,3,5,9,14],sale:2,same:2,sankei:[6,15],sankey0:[],scene:5,screenshot:[2,3],search:8,second:[1,2],second_rung:4,section:5,seek:5,seen:[2,3,9],segment0:7,segment1:[0,1,3,7,14],segment2:[0,1,3,14],segment:[13,15],segment_list:2,segment_map:2,segment_nam:[0,1,2,5,7,14],segment_typ:[2,3,5,7],segments1:7,segments2:7,segments_aft:7,segments_befor:7,segments_dict:7,segments_list:7,self:10,send:10,sens:2,seq_result:9,seri:9,session0:2,session1:2,session2:2,session3:2,session_0_seg:2,session_1_seg:2,session_2_seg:2,session_3_seg:2,session_id:2,sessionid:2,set:[2,11,15],setup:2,shorter:1,show:[2,3,4,7,10,14],shown:[0,1,2,3,7,13],similar:[3,5,14,15],similarli:[0,13],simpl:[3,14],simplifi:2,simul:2,sinc:[2,5,7,14],smallest:0,softwar:3,some:[2,14],sometim:13,sort:[1,2,9,14],sorted_data:2,sorted_dict:[1,2,9,14],sourc:10,source_list:10,specif:[3,9,13],specifi:[2,7],split:10,sport:2,stag_result:9,start:[0,1,2,3,7,11,14,15],start_end_v:[1,2,5,14],start_time_1:[1,14],start_time_2:[1,14],step:[1,2],str:2,string:[1,4,13],string_tim:13,structur:[1,5,11],studi:2,subscript:[5,11],success:3,superset:2,support:14,syntax:5,tabl:2,take:[1,2,3,4,7,13],taken:1,tan:4,target:[4,9,10],target_list:10,target_v:9,task:2,task_exampl:2,test:[2,3],test_button:4,test_list:9,test_radio_input:4,test_text_input:4,textinfo:4,textposit:4,than:[1,2,7,14],thei:[7,13],them:[1,2],themselv:[5,7],thi:[0,1,2,3,5,7,9,13,14],third_rung:4,those:[2,3],three:[0,1,2,7,9],threshold:1,through:[1,2,3,5,11,14],throughout:1,thu:2,time:[2,3,4,13,14],timelin:3,to_datetim:2,togeth:5,took:2,tool:3,top:5,transform:8,trim:1,tupl:[1,4,9,10,14],turn:2,two:[0,1,2,3,7,9,13],type:[1,2,3,5],uid1:0,uid2:0,uid3:0,uid4:0,uid5:0,uid6:0,uid9:0,uid:[0,1,2,5,14],under:[1,5],underli:7,understand:2,union:11,uniqu:[1,9,13],unit:2,univers:[1,13],unix:[2,13],updat:7,update_yax:[2,3],us:[0,1,2,3,5,7,9,10,13,14],usag:[0,1,7,9,13,14,15],user:[1,3,4,7,10],user_specif:4,useral:[2,5,9,11,13,14],userspec:4,util:[2,5,15],uuid:[1,12],valu:[0,1,3,4,5,9,10,14],value_list:10,variabl:2,varieti:[3,5,7],via:[5,7],video:[2,3],visual:[11,15],wa:[2,3,4,5],wai:[1,2,5,7,14],want:[1,2],we:[1,2,3,4,10,13],weight:10,were:7,what:[1,3,11],when:[1,2,5,7,9,13],where:10,which:[1,2,7,14],whose:7,why:11,width:[4,10],wii:2,window:2,within:[1,2,3,5,7],without:5,write:[2,11,15],write_seg:[2,14],written_seg:14,x:4,x_end:[2,3],x_start:[2,3],y:[2,3,4],yield:2},titles:["Combining Segments with Set Logic","Creating Segment Objects","Example Usage of Distill","Exporting Segments","Funnel","Getting Started with Segmentation","Graph","Manipulating Collections of Segment Objects","Process","Processing Functions","Sankey","Segmentation","Utilities","Utility Functions","Writing Segments","Flagon Distill"],titleterms:{"export":3,"function":[4,9,10,13],"import":[2,5],The:[4,10],access:7,analyt:[],apach:3,append:7,automat:1,basic:1,collaps:1,collect:7,combin:0,comprehens:7,content:[],creat:1,creation:1,cutoff:[],data:7,datetim:13,deadspac:1,delet:7,detect:1,dictionari:7,differ:[0,7],digraph:2,distanc:2,distil:[2,15],document:[],edit:2,epoch:13,exampl:[2,3,4,10],file:2,filter:7,fix:1,flagon:15,funnel:4,further:2,gener:1,get:[5,13],graph:6,indic:[],intersect:0,iter:7,json:2,list:7,log:[1,7],logic:0,manipul:7,measur:2,modif:7,number:7,object:[1,2,5,7],packag:5,plotli:[2,3],preprocess:1,process:[2,8,9],py:[],represent:7,s:2,sankei:10,search:9,segment:[0,1,2,3,5,7,11,14],session:2,set:0,similar:2,start:5,structur:7,subscript:7,superset:3,tabl:[],through:7,time:[1,7],timelin:2,transform:9,type:7,union:0,usag:2,user:2,useral:1,util:[12,13],uuid:13,visual:[2,3],what:5,why:5,window:1,workflow:2,write:14}}) diff --git a/products/distill/docs/index.md b/products/distill/docs/index.md index dd3485d..ab05981 100644 --- a/products/distill/docs/index.md +++ b/products/distill/docs/index.md @@ -1,3 +1,22 @@ + + > \ more contributor license agreements. See the NOTICE file distributed > with this work for additional information regarding copyright diff --git a/products/distill/docs/make.bat b/products/distill/docs/make.bat index 2119f51..5088e1b 100644 --- a/products/distill/docs/make.bat +++ b/products/distill/docs/make.bat @@ -1,3 +1,20 @@ +rem Licensed to the Apache Software Foundation (ASF) under one +rem or more contributor license agreements. See the NOTICE file +rem distributed with this work for additional information +rem regarding copyright ownership. The ASF licenses this file +rem to you under the Apache License, Version 2.0 (the +rem "License"); you may not use this file except in compliance +rem with the License. You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, +rem software distributed under the License is distributed on an +rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +rem KIND, either express or implied. See the License for the +rem specific language governing permissions and limitations +rem under the License. + @ECHO OFF pushd %~dp0 diff --git a/products/distill/examples/labels.py b/products/distill/examples/labels.py index 9b55efb..b876860 100644 --- a/products/distill/examples/labels.py +++ b/products/distill/examples/labels.py @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + import os import distill diff --git a/products/distill/install_py_versions.sh b/products/distill/install_py_versions.sh index 169014a..8b48364 100755 --- a/products/distill/install_py_versions.sh +++ b/products/distill/install_py_versions.sh @@ -1,4 +1,21 @@ #!/bin/bash +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + install_python_versions() { versions=("3.8" "3.9" "3.10" "3.11") diff --git a/products/distill/poetry.lock b/products/distill/poetry.lock index fe4ff61..b353635 100644 --- a/products/distill/poetry.lock +++ b/products/distill/poetry.lock @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + # This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] diff --git a/products/distill/poetry.toml b/products/distill/poetry.toml index 42159b2..deb3b5a 100644 --- a/products/distill/poetry.toml +++ b/products/distill/poetry.toml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + [virtualenvs] in-project = true diff --git a/products/distill/pytest_prev_init.ini b/products/distill/pytest_prev_init.ini index eaaf884..cdb7d96 100644 --- a/products/distill/pytest_prev_init.ini +++ b/products/distill/pytest_prev_init.ini @@ -1,3 +1,20 @@ +; Licensed to the Apache Software Foundation (ASF) under one +; or more contributor license agreements. See the NOTICE file +; distributed with this work for additional information +; regarding copyright ownership. The ASF licenses this file +; to you under the Apache License, Version 2.0 (the +; "License"); you may not use this file except in compliance +; with the License. You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, +; software distributed under the License is distributed on an +; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +; KIND, either express or implied. See the License for the +; specific language governing permissions and limitations +; under the License. + [pytest] addopts = -s --strict --pylint --pylint-rcfile=.pylintrc --ignore=build --ignore=dist --ignore=docs --junitxml=test-report.xml norecursedirs = docs docker example build *.eggs *env* .git diff --git a/products/distill/tox.ini b/products/distill/tox.ini index 3ef941a..f2a5b69 100644 --- a/products/distill/tox.ini +++ b/products/distill/tox.ini @@ -1,3 +1,20 @@ +; Licensed to the Apache Software Foundation (ASF) under one +; or more contributor license agreements. See the NOTICE file +; distributed with this work for additional information +; regarding copyright ownership. The ASF licenses this file +; to you under the Apache License, Version 2.0 (the +; "License"); you may not use this file except in compliance +; with the License. You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, +; software distributed under the License is distributed on an +; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +; KIND, either express or implied. See the License for the +; specific language governing permissions and limitations +; under the License. + [tox] requires = tox>=4 diff --git a/products/userale/eslint.config.js b/products/userale/eslint.config.js index 39b4fa0..6c1cf32 100644 --- a/products/userale/eslint.config.js +++ b/products/userale/eslint.config.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + const js = require('@eslint/js'); const tseslint = require('typescript-eslint'); const pluginJest = require('eslint-plugin-jest'); diff --git a/products/userale/example/server/server.js b/products/userale/example/server/server.js index 966e591..7ab21d6 100644 --- a/products/userale/example/server/server.js +++ b/products/userale/example/server/server.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file diff --git a/products/userale/packages/flagon-userale-ext/.gitignore b/products/userale/packages/flagon-userale-ext/.gitignore index 0fe0d52..6eb7882 100644 --- a/products/userale/packages/flagon-userale-ext/.gitignore +++ b/products/userale/packages/flagon-userale-ext/.gitignore @@ -1,3 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. diff --git a/products/userale/packages/flagon-userale-ext/README.md b/products/userale/packages/flagon-userale-ext/README.md index ca9c259..c718462 100644 --- a/products/userale/packages/flagon-userale-ext/README.md +++ b/products/userale/packages/flagon-userale-ext/README.md @@ -1,3 +1,22 @@ + + This is a [Plasmo extension](https://docs.plasmo.com/) project bootstrapped with [`plasmo init`](https://www.npmjs.com/package/plasmo). ## Getting Started diff --git a/products/userale/packages/flagon-userale-ext/postcss.config.js b/products/userale/packages/flagon-userale-ext/postcss.config.js index 1c62447..185af27 100644 --- a/products/userale/packages/flagon-userale-ext/postcss.config.js +++ b/products/userale/packages/flagon-userale-ext/postcss.config.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /** * @type {import('postcss').ProcessOptions} */ diff --git a/products/userale/packages/flagon-userale-ext/src/background/index.ts b/products/userale/packages/flagon-userale-ext/src/background/index.ts index d3f1b35..fd4a514 100644 --- a/products/userale/packages/flagon-userale-ext/src/background/index.ts +++ b/products/userale/packages/flagon-userale-ext/src/background/index.ts @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import { getStoredOptions } from "~/utils/storage" import { sendToContent } from "~utils/messaging" diff --git a/products/userale/packages/flagon-userale-ext/src/background/messages/config_change.ts b/products/userale/packages/flagon-userale-ext/src/background/messages/config_change.ts index 3dec31b..ec6b7c1 100644 --- a/products/userale/packages/flagon-userale-ext/src/background/messages/config_change.ts +++ b/products/userale/packages/flagon-userale-ext/src/background/messages/config_change.ts @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import * as userale from "flagon-userale" import type { PlasmoMessaging } from "@plasmohq/messaging" diff --git a/products/userale/packages/flagon-userale-ext/src/background/ports/log.ts b/products/userale/packages/flagon-userale-ext/src/background/ports/log.ts index eaade7f..a5aea48 100644 --- a/products/userale/packages/flagon-userale-ext/src/background/ports/log.ts +++ b/products/userale/packages/flagon-userale-ext/src/background/ports/log.ts @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import * as userale from "flagon-userale" import type { PlasmoMessaging } from "@plasmohq/messaging" diff --git a/products/userale/packages/flagon-userale-ext/src/content.ts b/products/userale/packages/flagon-userale-ext/src/content.ts index 46e67b0..e7a97b5 100644 --- a/products/userale/packages/flagon-userale-ext/src/content.ts +++ b/products/userale/packages/flagon-userale-ext/src/content.ts @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import * as userale from "flagon-userale" import type { PlasmoCSConfig } from "plasmo" diff --git a/products/userale/packages/flagon-userale-ext/src/options/auth.tsx b/products/userale/packages/flagon-userale-ext/src/options/auth.tsx index 7a0e774..eea931a 100644 --- a/products/userale/packages/flagon-userale-ext/src/options/auth.tsx +++ b/products/userale/packages/flagon-userale-ext/src/options/auth.tsx @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import pkceChallenge from "pkce-challenge" import { useState } from "react" import browser from "webextension-polyfill" diff --git a/products/userale/packages/flagon-userale-ext/src/options/index.tsx b/products/userale/packages/flagon-userale-ext/src/options/index.tsx index 4b94044..d2b837d 100644 --- a/products/userale/packages/flagon-userale-ext/src/options/index.tsx +++ b/products/userale/packages/flagon-userale-ext/src/options/index.tsx @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import Auth from "~/options/auth" import Logging from "~/options/logging" diff --git a/products/userale/packages/flagon-userale-ext/src/options/logging.tsx b/products/userale/packages/flagon-userale-ext/src/options/logging.tsx index 1e55f52..aa79e9a 100644 --- a/products/userale/packages/flagon-userale-ext/src/options/logging.tsx +++ b/products/userale/packages/flagon-userale-ext/src/options/logging.tsx @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import { useEffect, useState } from "react" import { getStoredOptions, setStoredOptions } from "~/utils/storage" diff --git a/products/userale/packages/flagon-userale-ext/src/popup.tsx b/products/userale/packages/flagon-userale-ext/src/popup.tsx index 15a858d..61a2e67 100644 --- a/products/userale/packages/flagon-userale-ext/src/popup.tsx +++ b/products/userale/packages/flagon-userale-ext/src/popup.tsx @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import { useState } from "react" import Options from "~/options" diff --git a/products/userale/packages/flagon-userale-ext/src/style.css b/products/userale/packages/flagon-userale-ext/src/style.css index bd6213e..50aa570 100644 --- a/products/userale/packages/flagon-userale-ext/src/style.css +++ b/products/userale/packages/flagon-userale-ext/src/style.css @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + @tailwind base; @tailwind components; @tailwind utilities; \ No newline at end of file diff --git a/products/userale/packages/flagon-userale-ext/src/utils/messaging.ts b/products/userale/packages/flagon-userale-ext/src/utils/messaging.ts index 18b3a8e..6ab78f7 100644 --- a/products/userale/packages/flagon-userale-ext/src/utils/messaging.ts +++ b/products/userale/packages/flagon-userale-ext/src/utils/messaging.ts @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /** * Sends a message to the content script from the popup, options, or background page */ diff --git a/products/userale/packages/flagon-userale-ext/src/utils/storage.ts b/products/userale/packages/flagon-userale-ext/src/utils/storage.ts index bc064d2..a8be357 100644 --- a/products/userale/packages/flagon-userale-ext/src/utils/storage.ts +++ b/products/userale/packages/flagon-userale-ext/src/utils/storage.ts @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import browser from "webextension-polyfill" import { sendToBackground } from "@plasmohq/messaging" diff --git a/products/userale/packages/flagon-userale-ext/tailwind.config.js b/products/userale/packages/flagon-userale-ext/tailwind.config.js index f6d1d1c..5a66f33 100644 --- a/products/userale/packages/flagon-userale-ext/tailwind.config.js +++ b/products/userale/packages/flagon-userale-ext/tailwind.config.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + /** @type {import('tailwindcss').Config} */ module.exports = { mode: "jit", diff --git a/products/userale/packages/flagon-userale/build/attachHandlers.d.ts b/products/userale/packages/flagon-userale/build/attachHandlers.d.ts index 2ae8cc5..0c73fc6 100644 --- a/products/userale/packages/flagon-userale/build/attachHandlers.d.ts +++ b/products/userale/packages/flagon-userale/build/attachHandlers.d.ts @@ -1,3 +1,19 @@ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { Events, Logging, Settings } from "@/types"; import { Configuration } from "@/configure"; /** diff --git a/products/userale/packages/flagon-userale/build/configure.d.ts b/products/userale/packages/flagon-userale/build/configure.d.ts index e2ca829..488f922 100644 --- a/products/userale/packages/flagon-userale/build/configure.d.ts +++ b/products/userale/packages/flagon-userale/build/configure.d.ts @@ -1,3 +1,19 @@ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import type { Settings } from "@/types"; export declare class Configuration { [key: string]: Settings.ConfigValueTypes; diff --git a/products/userale/packages/flagon-userale/build/getInitialSettings.d.ts b/products/userale/packages/flagon-userale/build/getInitialSettings.d.ts index 3dd3167..db51818 100644 --- a/products/userale/packages/flagon-userale/build/getInitialSettings.d.ts +++ b/products/userale/packages/flagon-userale/build/getInitialSettings.d.ts @@ -1,3 +1,19 @@ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the 'License'); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import type { Settings } from "./types"; /** * Extracts the initial configuration settings from the diff --git a/products/userale/packages/flagon-userale/build/main.d.ts b/products/userale/packages/flagon-userale/build/main.d.ts index f6df136..3052f9b 100644 --- a/products/userale/packages/flagon-userale/build/main.d.ts +++ b/products/userale/packages/flagon-userale/build/main.d.ts @@ -1,3 +1,19 @@ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import type { Settings, Logging } from "@/types"; export declare let started: boolean; export { defineCustomDetails as details } from "@/attachHandlers"; diff --git a/products/userale/packages/flagon-userale/build/main.global.js b/products/userale/packages/flagon-userale/build/main.global.js index 2a715da..043d727 100644 --- a/products/userale/packages/flagon-userale/build/main.global.js +++ b/products/userale/packages/flagon-userale/build/main.global.js @@ -902,4 +902,36 @@ }; } })(); +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the 'License'); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ //# sourceMappingURL=main.global.js.map \ No newline at end of file diff --git a/products/userale/packages/flagon-userale/build/main.global.js.map b/products/userale/packages/flagon-userale/build/main.global.js.map index 53a70f8..26355dc 100644 --- a/products/userale/packages/flagon-userale/build/main.global.js.map +++ b/products/userale/packages/flagon-userale/build/main.global.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/packageLogs.ts","../src/attachHandlers.ts","../src/utils/auth/index.ts","../src/utils/headers/index.ts","../src/getInitialSettings.ts","../src/configure.ts","../src/sendLogs.ts","../src/main.ts"],"sourcesContent":["/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Callbacks, Logging } from \"@/types\";\nimport { Configuration } from \"@/configure\";\n\nexport let logs: Array;\nlet config: Configuration;\n\n// Interval Logging Globals\nlet intervalId: string | null;\nlet intervalType: string | null;\nlet intervalPath: string[] | null;\nlet intervalTimer: number | null;\nlet intervalCounter: number | null;\nlet intervalLog: Logging.Log | null;\n\nexport const filterHandler: CallableFunction | null = null;\nexport const mapHandler: CallableFunction | null = null;\nexport let cbHandlers: Callbacks.CallbackMap = {};\n\n/**\n * Adds named callbacks to be executed when logging.\n * @param {Object } newCallbacks An object containing named callback functions.\n */\nexport function addCallbacks(\n ...newCallbacks: Record[]\n) {\n newCallbacks.forEach((source) => {\n let descriptors: { [key in string | symbol]: any } = {};\n\n descriptors = Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, descriptors);\n\n Object.getOwnPropertySymbols(source).forEach((sym) => {\n const descriptor = Object.getOwnPropertyDescriptor(source, sym);\n if (descriptor?.enumerable) {\n descriptors[sym] = descriptor;\n }\n });\n Object.defineProperties(cbHandlers, descriptors);\n });\n return cbHandlers;\n}\n\n/**\n * Removes callbacks by name.\n * @param {String[]} targetKeys A list of names of functions to remove.\n */\nexport function removeCallbacks(targetKeys: string[]) {\n targetKeys.forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(cbHandlers, key)) {\n delete cbHandlers[key];\n }\n });\n}\n\n/**\n * Assigns the config and log container to be used by the logging functions.\n * @param {Array} newLogs Log container.\n * @param {Object} newConfig Configuration to use while logging.\n */\nexport function initPackager(\n newLogs: Array,\n newConfig: Configuration,\n) {\n logs = newLogs;\n config = newConfig;\n cbHandlers = {};\n intervalId = null;\n intervalType = null;\n intervalPath = null;\n intervalTimer = null;\n intervalCounter = 0;\n intervalLog = null;\n}\n\n/**\n * Transforms the provided HTML event into a log and appends it to the log queue.\n * @param {Event} e The event to be logged.\n * @param {Function} detailFcn The function to extract additional log parameters from the event.\n * @return {boolean} Whether the event was logged.\n */\nexport function packageLog(\n e: Event,\n detailFcn?: Logging.DynamicDetailFunction | null,\n) {\n if (!config.on) {\n return false;\n }\n\n let details = null;\n if (detailFcn) {\n details = detailFcn(e);\n }\n\n const timeFields = extractTimeFields(\n e.timeStamp && e.timeStamp > 0 ? config.time(e.timeStamp) : Date.now(),\n );\n\n let log: Logging.Log = {\n target: e.target ? getSelector(e.target) : null,\n path: buildPath(e),\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n clientTime: timeFields.milli,\n microTime: timeFields.micro,\n location: getLocation(e),\n scrnRes: getScreenRes(),\n type: e.type,\n logType: \"raw\",\n userAction: true,\n details: details,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n attributes: buildAttrs(e),\n style: buildCSS(e),\n };\n\n if (typeof filterHandler === \"function\" && !filterHandler(log)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n log = mapHandler(log, e);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n log = func(log, e);\n if (!log) {\n return false;\n }\n }\n }\n\n logs.push(log);\n return true;\n}\n\n/**\n * Packages the provided customLog to include standard meta data and appends it to the log queue.\n * @param {Logging.CustomLog} customLog The behavior to be logged.\n * @param {Logging.DynamicDetailFunction} detailFcn The function to extract additional log parameters from the event.\n * @param {boolean} userAction Indicates user behavior (true) or system behavior (false)\n * @return {boolean} Whether the event was logged.\n */\nexport function packageCustomLog(\n customLog: Logging.CustomLog,\n detailFcn: Logging.DynamicDetailFunction | Logging.StaticDetailFunction,\n userAction: boolean,\n): boolean {\n if (!config.on) {\n return false;\n }\n\n let details = null;\n if (detailFcn.length === 0) {\n // In the case of a union, the type checker will default to the more stringent\n // type, i.e. the DetailFunction that expects an argument for safety purposes.\n // To avoid this, we must explicitly check the type by asserting it receives\n // no arguments (detailFcn.length === 0) and then cast it to the\n // StaticDetailFunction type.\n const staticDetailFcn = detailFcn as Logging.StaticDetailFunction;\n details = staticDetailFcn();\n }\n\n const metaData = {\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n clientTime: Date.now(),\n scrnRes: getScreenRes(),\n logType: \"custom\",\n userAction: userAction,\n details: details,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n };\n\n let log = Object.assign(metaData, customLog);\n\n if (typeof filterHandler === \"function\" && !filterHandler(log)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n log = mapHandler(log);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n log = func(log, null);\n if (!log) {\n return false;\n }\n }\n }\n\n logs.push(log);\n\n return true;\n}\n\n/**\n * Extract the millisecond and microsecond portions of a timestamp.\n * @param {Number} timeStamp The timestamp to split into millisecond and microsecond fields.\n * @return {Object} An object containing the millisecond\n * and microsecond portions of the timestamp.\n */\nexport function extractTimeFields(timeStamp: number) {\n return {\n milli: Math.floor(timeStamp),\n micro: Number((timeStamp % 1).toFixed(3)),\n };\n}\n\n/**\n * Track intervals and gather details about it.\n * @param {Object} e\n * @return boolean\n */\nexport function packageIntervalLog(e: Event) {\n try {\n const target = e.target ? getSelector(e.target) : null;\n const path = buildPath(e);\n const type = e.type;\n const timestamp = Math.floor(\n e.timeStamp && e.timeStamp > 0 ? config.time(e.timeStamp) : Date.now(),\n );\n\n // Init - this should only happen once on initialization\n if (intervalId == null) {\n intervalId = target;\n intervalType = type;\n intervalPath = path;\n intervalTimer = timestamp;\n intervalCounter = 0;\n }\n\n if ((intervalId !== target || intervalType !== type) && intervalTimer) {\n // When to create log? On transition end\n // @todo Possible for intervalLog to not be pushed in the event the interval never ends...\n\n intervalLog = {\n target: intervalId,\n path: intervalPath,\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n count: intervalCounter,\n duration: timestamp - intervalTimer, // microseconds\n startTime: intervalTimer,\n endTime: timestamp,\n type: intervalType,\n logType: \"interval\",\n targetChange: intervalId !== target,\n typeChange: intervalType !== type,\n userAction: false,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n };\n\n if (typeof filterHandler === \"function\" && !filterHandler(intervalLog)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n intervalLog = mapHandler(intervalLog, e);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n intervalLog = func(intervalLog, null);\n if (!intervalLog) {\n return false;\n }\n }\n }\n\n if (intervalLog) logs.push(intervalLog);\n\n // Reset\n intervalId = target;\n intervalType = type;\n intervalPath = path;\n intervalTimer = timestamp;\n intervalCounter = 0;\n }\n\n // Interval is still occuring, just update counter\n if (intervalId == target && intervalType == type && intervalCounter) {\n intervalCounter = intervalCounter + 1;\n }\n\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Extracts coordinate information from the event\n * depending on a few browser quirks.\n * @param {Event} e The event to extract coordinate information from.\n * @return {Object} An object containing nullable x and y coordinates for the event.\n */\nexport function getLocation(e: Event) {\n if (e instanceof MouseEvent) {\n if (e.pageX != null) {\n return { x: e.pageX, y: e.pageY };\n } else if (e.clientX != null) {\n return {\n x: document.documentElement.scrollLeft + e.clientX,\n y: document.documentElement.scrollTop + e.clientY,\n };\n }\n } else {\n return { x: null, y: null };\n }\n}\n\n/**\n * Extracts innerWidth and innerHeight to provide estimates of screen resolution\n * @return {Object} An object containing the innerWidth and InnerHeight\n */\nexport function getScreenRes() {\n return { width: self.innerWidth, height: self.innerHeight };\n}\n\n/**\n * Builds a string CSS selector from the provided element\n * @param {EventTarget} ele The element from which the selector is built.\n * @return {string} The CSS selector for the element, or Unknown if it can't be determined.\n */\nexport function getSelector(ele: EventTarget) {\n if (ele instanceof HTMLElement || ele instanceof Element) {\n if (ele.localName) {\n return (\n ele.localName +\n (ele.id ? \"#\" + ele.id : \"\") +\n (ele.className ? \".\" + ele.className : \"\")\n );\n } else if (ele.nodeName) {\n return (\n ele.nodeName +\n (ele.id ? \"#\" + ele.id : \"\") +\n (ele.className ? \".\" + ele.className : \"\")\n );\n }\n } else if (ele instanceof Document) {\n return \"#document\";\n } else if (ele === globalThis) {\n return \"Window\";\n }\n return \"Unknown\";\n}\n\n/**\n * Builds an array of elements from the provided event target, to the root element.\n * @param {Event} e Event from which the path should be built.\n * @return {HTMLElement[]} Array of elements, starting at the event target, ending at the root element.\n */\nexport function buildPath(e: Event) {\n const path = e.composedPath();\n return selectorizePath(path);\n}\n\n/**\n * Builds a CSS selector path from the provided list of elements.\n * @param {EventTarget[]} path Array of HTML Elements from which the path should be built.\n * @return {string[]} Array of string CSS selectors.\n */\nexport function selectorizePath(path: EventTarget[]) {\n let i = 0;\n let pathEle;\n const pathSelectors: string[] = [];\n while ((pathEle = path[i])) {\n pathSelectors.push(getSelector(pathEle));\n ++i;\n pathEle = path[i];\n }\n return pathSelectors;\n}\n\n/**\n * Builds an object containing attributes of an element.\n * Attempts to parse all attribute values as JSON text.\n * @param {Event} e Event from which the target element's attributes should be extracted.\n * @return {Record} Object with element attributes as key-value pairs.\n */\nexport function buildAttrs(e: Event): Record {\n const attributes: Record = {};\n const attributeBlackList = [\"style\"];\n\n if (e.target && e.target instanceof Element) {\n for (const attr of e.target.attributes) {\n if (attributeBlackList.includes(attr.name)) continue;\n let val: any = attr.value;\n try {\n val = JSON.parse(val);\n } catch {\n // Ignore parsing errors, fallback to raw string value\n }\n attributes[attr.name] = val;\n }\n }\n\n return attributes;\n}\n\n/**\n * Builds an object containing all CSS properties of an element.\n * @param {Event} e Event from which the target element's properties should be extracted.\n * @return {Record} Object with all CSS properties as key-value pairs.\n */\nexport function buildCSS(e: Event): Record {\n const properties: Record = {};\n if (e.target && e.target instanceof HTMLElement) {\n const styleObj = e.target.style;\n for (let i = 0; i < styleObj.length; i++) {\n const prop = styleObj[i];\n properties[prop] = styleObj.getPropertyValue(prop);\n }\n }\n return properties;\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { packageLog, packageIntervalLog } from \"@/packageLogs\";\nimport { Events, Logging, Settings } from \"@/types\";\nimport { Configuration } from \"@/configure\";\n\n//@todo: Investigate drag events and their behavior\nlet events: Events.EventDetailsMap;\nlet bufferBools: Events.EventBoolMap;\nlet bufferedEvents: Events.EventDetailsMap;\nlet refreshEvents: Events.EventDetailsMap;\nconst intervalEvents: Array = [\n \"click\",\n \"focus\",\n \"blur\",\n \"input\",\n \"change\",\n \"mouseover\",\n \"submit\",\n];\nconst windowEvents: Array = [\"load\", \"blur\", \"focus\"];\n\n/**\n * Maps a MouseEvent to an object containing useful information.\n * @param {MouseEvent} e Event to extract data from\n */\nexport function extractMouseDetails(e: MouseEvent) {\n return {\n clicks: e.detail,\n ctrl: e.ctrlKey,\n alt: e.altKey,\n shift: e.shiftKey,\n meta: e.metaKey,\n // 'text' : e.target.innerHTML\n };\n}\n\n/** Maps a KeyboardEvent to an object containing useful infromation\n * @param {KeyboardEvent} e Event to extract data from\n */\nexport function extractKeyboardDetails(e: KeyboardEvent) {\n return {\n key: e.key,\n code: e.code,\n ctrl: e.ctrlKey,\n alt: e.altKey,\n shift: e.shiftKey,\n meta: e.metaKey,\n };\n}\n\n/**\n * Maps an InputEvent to an object containing useful information.\n * @param {InputEvent} e Event to extract data from\n */\nexport function extractInputDetails(e: InputEvent) {\n return {\n value: (e.target as HTMLInputElement).value,\n };\n}\n\n/**\n * Maps a ChangeEvent to an object containing useful information.\n * @param {Events.ChangeEvent} e Event to extract data from\n */\nexport function extractChangeDetails(e: Events.ChangeEvent) {\n return {\n value: e.target.value,\n };\n}\n\n/**\n * Maps a WheelEvent to an object containing useful information.\n * @param {WheelEvent} e Event to extract data from\n */\nexport function extractWheelDetails(e: WheelEvent) {\n return {\n x: e.deltaX,\n y: e.deltaY,\n z: e.deltaZ,\n };\n}\n\n/**\n * Maps a ScrollEvent to an object containing useful information.\n */\nexport function extractScrollDetails() {\n return {\n x: window.scrollX,\n y: window.scrollY,\n };\n}\n\n/**\n * Maps a ResizeEvent to an object containing useful information.\n */\nexport function extractResizeDetails() {\n return {\n width: window.outerWidth,\n height: window.outerHeight,\n };\n}\n\n/**\n * Defines the way information is extracted from various events.\n * Also defines which events we will listen to.\n * @param {Settings.Config} config Configuration object to read from.\n */\nexport function defineDetails(config: Settings.DefaultConfig): void {\n // Events list\n // Keys are event types\n // Values are functions that return details object if applicable\n events = {\n click: extractMouseDetails,\n dblclick: extractMouseDetails,\n mousedown: extractMouseDetails,\n mouseup: extractMouseDetails,\n focus: null,\n blur: null,\n input: config.logDetails ? extractKeyboardDetails : null,\n change: config.logDetails ? extractChangeDetails : null,\n dragstart: null,\n dragend: null,\n drag: null,\n drop: null,\n keydown: config.logDetails ? extractKeyboardDetails : null,\n mouseover: null,\n };\n\n bufferBools = {};\n bufferedEvents = {\n wheel: extractWheelDetails,\n scroll: extractScrollDetails,\n resize: extractResizeDetails,\n };\n\n refreshEvents = {\n submit: null,\n };\n}\n\n/**\n * Defines the way information is extracted from various events.\n * Also defines which events we will listen to.\n * @param {Settings.Config} options UserALE Configuration object to read from.\n * @param {Events.AllowedEvents} type of html event (e.g., 'click', 'mouseover', etc.), such as passed to addEventListener methods.\n */\nexport function defineCustomDetails(\n options: Settings.DefaultConfig,\n type: Events.AllowedEvents,\n): Logging.DynamicDetailFunction | null | undefined {\n // Events list\n // Keys are event types\n // Values are functions that return details object if applicable\n const eventType: Events.EventDetailsMap = {\n click: extractMouseDetails,\n dblclick: extractMouseDetails,\n mousedown: extractMouseDetails,\n mouseup: extractMouseDetails,\n focus: null,\n blur: null,\n load: null,\n input: options.logDetails ? extractKeyboardDetails : null,\n change: options.logDetails ? extractChangeDetails : null,\n dragstart: null,\n dragend: null,\n drag: null,\n drop: null,\n keydown: options.logDetails ? extractKeyboardDetails : null,\n mouseover: null,\n wheel: extractWheelDetails,\n scroll: extractScrollDetails,\n resize: extractResizeDetails,\n submit: null,\n };\n return eventType[type];\n}\n\n/**\n * Hooks the event handlers for each event type of interest.\n * @param {Configuration} config Configuration singleton to use.\n * @return {boolean} Whether the operation succeeded\n */\nexport function attachHandlers(config: Configuration): boolean {\n try {\n defineDetails(config);\n\n (Object.keys(events) as Events.AllowedEvents[]).forEach(function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageLog(e, events[ev]);\n },\n true,\n );\n });\n\n intervalEvents.forEach(function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageIntervalLog(e);\n },\n true,\n );\n });\n\n (Object.keys(bufferedEvents) as Events.BufferedEvents[]).forEach(\n function (ev) {\n bufferBools[ev] = true;\n\n self.addEventListener(\n ev,\n function (e) {\n if (bufferBools[ev]) {\n bufferBools[ev] = false;\n packageLog(e, bufferedEvents[ev]);\n setTimeout(function () {\n bufferBools[ev] = true;\n }, config.resolution);\n }\n },\n true,\n );\n },\n );\n\n (Object.keys(refreshEvents) as Events.RefreshEvents[]).forEach(\n function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageLog(e, events[ev]);\n },\n true,\n );\n },\n );\n\n windowEvents.forEach(function (ev) {\n self.addEventListener(\n ev,\n function (e) {\n packageLog(e, function () {\n return { window: true };\n });\n },\n true,\n );\n });\n\n return true;\n } catch {\n return false;\n }\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Callbacks } from \"@/types\";\n\nexport let authCallback: Callbacks.AuthCallback | null = null;\n\n/**\n * Fetches the most up-to-date auth header string from the auth callback\n * and updates the config object with the new value.\n * @param {Configuration} config Configuration object to be updated.\n * @param {Function} authCallback Callback used to fetch the newest header.\n * @returns {void}\n */\nexport function updateAuthHeader(config: Configuration) {\n if (authCallback) {\n try {\n config.authHeader = authCallback();\n } catch (e) {\n // We should emit the error, but otherwise continue as this could be a temporary issue\n // due to network connectivity or some logic inside the authCallback which is the user's\n // responsibility.\n console.error(`Error encountered while setting the auth header: ${e}`);\n }\n }\n}\n\n/**\n * Registers the provided callback to be used when updating the auth header.\n * @param {Callbacks.AuthCallback} callback Callback used to fetch the newest header. Should return a string.\n * @returns {boolean} Whether the operation succeeded.\n */\nexport function registerAuthCallback(callback: Callbacks.AuthCallback) {\n try {\n verifyCallback(callback);\n authCallback = callback;\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Verify that the provided callback is a function which returns a string\n * @param {Function} callback Callback used to fetch the newest header. Should return a string.\n * @throws {Error} If the callback is not a function or does not return a string.\n * @returns {void}\n */\nexport function verifyCallback(callback: Callbacks.AuthCallback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Userale auth callback must be a function\");\n }\n const result = callback();\n if (typeof result !== \"string\") {\n throw new Error(\"Userale auth callback must return a string\");\n }\n}\n\n/**\n * Resets the authCallback to null. Used for primarily for testing, but could be used\n * to remove the callback in production.\n * @returns {void}\n */\nexport function resetAuthCallback() {\n authCallback = null;\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Callbacks } from \"@/types\";\n\nexport let headersCallback: Callbacks.HeadersCallback | null = null;\n\n/**\n * Fetches the most up-to-date custom headers object from the headers callback\n * and updates the config object with the new value.\n * @param {Configuration} config Configuration object to be updated.\n * @param {Callbacks.HeadersCallback} headersCallback Callback used to fetch the newest headers.\n * @returns {void}\n */\nexport function updateCustomHeaders(config: Configuration) {\n if (headersCallback) {\n try {\n config.headers = headersCallback();\n } catch (e) {\n // We should emit the error, but otherwise continue as this could be a temporary issue\n // due to network connectivity or some logic inside the headersCallback which is the user's\n // responsibility.\n console.error(`Error encountered while setting the headers: ${e}`);\n }\n }\n}\n\n/**\n * Registers the provided callback to be used when updating the auth header.\n * @param {Callbacks.HeadersCallback} callback Callback used to fetch the newest headers. Should return an object.\n * @returns {boolean} Whether the operation succeeded.\n */\nexport function registerHeadersCallback(callback: Callbacks.HeadersCallback) {\n try {\n verifyCallback(callback);\n headersCallback = callback;\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Verify that the provided callback is a function which returns a string\n * @param {Callbacks.HeadersCallback} callback Callback used to fetch the newest header. Should return an object.\n * @throws {Error} If the callback is not a function or does not return a string.\n * @returns {void}\n */\nexport function verifyCallback(callback: Callbacks.HeadersCallback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Userale headers callback must be a function\");\n }\n const result = callback();\n if (typeof result !== \"object\") {\n throw new Error(\"Userale headers callback must return an object\");\n }\n for (const [key, value] of Object.entries(result)) {\n if (typeof key !== \"string\" || typeof value !== \"string\") {\n throw new Error(\n \"Userale header callback must return an object with string keys and values\",\n );\n }\n }\n}\n\n/**\n * Resets the authCallback to null. Used for primarily for testing, but could be used\n * to remove the callback in production.\n * @returns {void}\n */\nexport function resetHeadersCallback() {\n headersCallback = null;\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the 'License'); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Settings } from \"./types\";\n\nlet sessionId: string | null = null;\nlet httpSessionId: string | null = null;\n\n/**\n * Extracts the initial configuration settings from the\n * currently executing script tag.\n * @return {Object} The extracted configuration object\n */\nexport function getInitialSettings(): Settings.Config {\n if (\n typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope\n ) {\n const settings: Settings.Config = {\n authHeader: null,\n autostart: true,\n browserSessionId: null,\n custIndex: null,\n headers: null,\n httpSessionId: null,\n logCountThreshold: +5,\n logDetails: false,\n resolution: +500,\n sessionId: sessionId,\n time: (ts?: number) => (ts !== undefined ? ts : Date.now()),\n toolName: null,\n toolVersion: null,\n transmitInterval: +5000,\n url: \"http://localhost:8000\",\n useraleVersion: null,\n userFromParams: null,\n userId: null,\n };\n return settings;\n }\n\n if (sessionId === null) {\n sessionId = getsessionId(\n \"userAlesessionId\",\n \"session_\" + String(Date.now()),\n );\n }\n\n if (httpSessionId === null) {\n httpSessionId = getsessionId(\n \"userAleHttpSessionId\",\n generatehttpSessionId(),\n );\n }\n\n const script =\n document.currentScript ||\n (function () {\n const scripts = document.getElementsByTagName(\"script\");\n return scripts[scripts.length - 1];\n })();\n\n const get = script\n ? script.getAttribute.bind(script)\n : function () {\n return null;\n };\n const headers = get(\"data-headers\");\n const settings: Settings.Config = {\n authHeader: get(\"data-auth\") || null,\n autostart: get(\"data-autostart\") === \"false\" ? false : true,\n browserSessionId: null,\n custIndex: get(\"data-index\") || null,\n headers: headers ? JSON.parse(headers) : null,\n httpSessionId: httpSessionId,\n logCountThreshold: +(get(\"data-threshold\") || 5),\n logDetails: get(\"data-log-details\") === \"true\" ? true : false,\n resolution: +(get(\"data-resolution\") || 500),\n sessionId: get(\"data-session\") || sessionId,\n time: timeStampScale(document.createEvent(\"CustomEvent\")),\n toolName: get(\"data-tool\") || null,\n toolVersion: get(\"data-version\") || null,\n transmitInterval: +(get(\"data-interval\") || 5000),\n url: get(\"data-url\") || \"http://localhost:8000\",\n useraleVersion: get(\"data-userale-version\") || null,\n userFromParams: get(\"data-user-from-params\") || null,\n userId: get(\"data-user\") || null,\n };\n return settings;\n}\n\n/**\n * defines sessionId, stores it in sessionStorage, checks to see if there is a sessionId in\n * storage when script is started. This prevents events like 'submit', which refresh page data\n * from refreshing the current user session\n *\n */\nexport function getsessionId(sessionKey: string, value: any) {\n if (self.sessionStorage.getItem(sessionKey) === null) {\n self.sessionStorage.setItem(sessionKey, JSON.stringify(value));\n return value;\n }\n\n return JSON.parse(self.sessionStorage.getItem(sessionKey) || \"\");\n}\n\n/**\n * Creates a function to normalize the timestamp of the provided event.\n * @param {Event} e An event containing a timeStamp property.\n * @return {typeof timeStampScale~tsScaler} The timestamp normalizing function.\n */\nexport function timeStampScale(e: Event): Settings.TimeFunction {\n let tsScaler: Settings.TimeFunction;\n if (e.timeStamp && e.timeStamp > 0) {\n const delta = Date.now() - e.timeStamp;\n /**\n * Returns a timestamp depending on various browser quirks.\n * @param {?Number} ts A timestamp to use for normalization.\n * @return {Number} A normalized timestamp.\n */\n\n if (delta < 0) {\n tsScaler = function () {\n return e.timeStamp / 1000;\n };\n } else if (delta > e.timeStamp) {\n const navStart = performance.timeOrigin;\n tsScaler = function (ts) {\n return ts + navStart;\n };\n } else {\n tsScaler = function (ts) {\n return ts;\n };\n }\n } else {\n tsScaler = function () {\n return Date.now();\n };\n }\n\n return tsScaler;\n}\n\n/**\n * Creates a cryptographiclly random string to represent this http session.\n * @return {String} A random 32 digit hex string\n */\nfunction generatehttpSessionId(): string {\n // 32 digit hex -> 128 bits of info -> 2^64 ~= 10^19 sessions needed for 50% chance of collison\n const len = 32;\n const arr = new Uint8Array(len / 2);\n window.crypto.getRandomValues(arr);\n return Array.from(arr, (dec) => {\n return dec.toString(16).padStart(2, \"0\");\n }).join(\"\");\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInitialSettings } from \"@/getInitialSettings\";\nimport type { Settings } from \"@/types\";\n\n// Singleton Configuration class\nexport class Configuration {\n [key: string]: Settings.ConfigValueTypes;\n // Private static property to hold the singleton instance\n private static instance: Configuration | null = null;\n\n // Public properties corresponding to fields in the Config interface\n public autostart: boolean = false;\n public authHeader: Settings.AuthHeader = null;\n public browserSessionId: Settings.SessionId = null;\n public custIndex: Settings.CustomIndex = null;\n public headers: Settings.Headers = null;\n public httpSessionId: Settings.SessionId = null;\n public logCountThreshold: number = 0;\n public logDetails: boolean = false;\n public on: boolean = false;\n public resolution: number = 0;\n public sessionId: Settings.SessionId = null;\n public time: Settings.TimeFunction = () => Date.now();\n public toolName: Settings.ToolName = null;\n public toolVersion: Settings.Version = null;\n public transmitInterval: number = 0;\n public url: string = \"\";\n public userFromParams: Settings.UserFromParams = null;\n public useraleVersion: Settings.Version = null;\n public userId: Settings.UserId = null;\n public version: Settings.Version = null;\n public websocketsEnabled: boolean = false;\n\n // Private constructor to prevent external instantiation\n private constructor() {\n // Call the initialization method only if it's the first time instantiating\n if (Configuration.instance === null) {\n this.initialize();\n }\n }\n\n // Static method to get the singleton instance\n public static getInstance(): Configuration {\n if (Configuration.instance === null) {\n Configuration.instance = new Configuration();\n }\n return Configuration.instance;\n }\n\n private initialize(): void {\n const settings = getInitialSettings();\n this.update(settings);\n }\n\n /**\n * Resets the configuration to its initial state.\n */\n public reset(): void {\n this.initialize();\n }\n\n /**\n * Shallow merges a newConfig with the configuration class, updating it.\n * Retrieves/updates the userid if userFromParams is provided.\n * @param {Partial} newConfig Configuration object to merge into the current config.\n */\n public update(newConfig: Partial): void {\n Object.keys(newConfig).forEach((option) => {\n if (option === \"userFromParams\") {\n const userParamString = newConfig[option] as Settings.UserFromParams;\n const userId = userParamString\n ? Configuration.getUserIdFromParams(userParamString)\n : null;\n if (userId) {\n this[\"userId\"] = userId;\n }\n }\n const hasNewUserFromParams = newConfig[\"userFromParams\"];\n const willNullifyUserId =\n option === \"userId\" && newConfig[option] === null;\n if (willNullifyUserId && hasNewUserFromParams) {\n return;\n }\n\n const newOption = newConfig[option];\n if (newOption !== undefined) {\n this[option] = newOption;\n }\n });\n }\n\n /**\n * Attempts to extract the userid from the query parameters of the URL.\n * @param {string} param The name of the query parameter containing the userid.\n * @return {string | null} The extracted/decoded userid, or null if none is found.\n */\n public static getUserIdFromParams(param: string) {\n const userField = param;\n const regex = new RegExp(\"[?&]\" + userField + \"(=([^&#]*)|&|#|$)\");\n const results = window.location.href.match(regex);\n\n if (results && results[2]) {\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n }\n return null;\n }\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Logging } from \"@/types\";\nimport { updateAuthHeader, updateCustomHeaders } from \"@/utils\";\n\nlet sendIntervalId: string | number | NodeJS.Timeout | undefined;\nlet wsock: WebSocket;\n\n/**\n * Initializes the log queue processors.\n * @param {Array} logs Array of logs to append to.\n * @param {Configuration} config Configuration object to use when logging.\n */\nexport function initSender(logs: Array, config: Configuration) {\n if (sendIntervalId) {\n clearInterval(sendIntervalId);\n }\n\n const url = new URL(config.url);\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n wsock = new WebSocket(config.url);\n }\n\n sendIntervalId = sendOnInterval(logs, config);\n sendOnClose(logs, config);\n}\n\n/**\n * Checks the provided log array on an interval, flushing the logs\n * if the queue has reached the threshold specified by the provided config.\n * @param {Array} logs Array of logs to read from.\n * @param {Configuration} config Configuration singleton to be read from.\n * @return {Number} The newly created interval id.\n */\nexport function sendOnInterval(\n logs: Array,\n config: Configuration,\n): NodeJS.Timeout {\n return setInterval(function () {\n if (!config.on) {\n return;\n }\n\n if (logs.length >= config.logCountThreshold) {\n sendLogs(logs.slice(0), config, 0); // Send a copy\n logs.splice(0); // Clear array reference (no reassignment)\n }\n }, config.transmitInterval);\n}\n\n// /**\n// * Attempts to flush the remaining logs when the window is closed.\n// * @param {Array} logs Array of logs to be flushed.\n// * @param {Configuration} config Configuration singleton to be read from.\n// */\nexport function sendOnClose(\n logs: Array,\n config: Configuration,\n): void {\n self.addEventListener(\"pagehide\", function () {\n if (!config.on) {\n return;\n }\n\n if (logs.length > 0) {\n const url = new URL(config.url);\n\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n const data = JSON.stringify(logs);\n wsock.send(data);\n } else {\n const headers: HeadersInit = new Headers();\n headers.set(\"Content-Type\", \"application/json;charset=UTF-8\");\n\n if (config.authHeader) {\n headers.set(\"Authorization\", config.authHeader.toString());\n }\n\n fetch(config.url, {\n keepalive: true,\n method: \"POST\",\n headers: headers,\n body: JSON.stringify(logs),\n }).catch((error) => {\n console.error(error);\n });\n }\n logs.splice(0); // clear log queue\n }\n });\n}\n\n/**\n * Sends the provided array of logs to the specified url,\n * retrying the request up to the specified number of retries.\n * @param {Array} logs Array of logs to send.\n * @param {Configuration} config configuration singleton.\n * @param {Number} retries Maximum number of attempts to send the logs.\n */\nexport async function sendLogs(\n logs: Array,\n config: Configuration,\n retries: number,\n): Promise {\n const data = JSON.stringify(logs);\n const url = new URL(config.url);\n\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n wsock.send(data);\n return;\n }\n\n // Build headers\n const headers = new Headers({\n \"Content-Type\": \"application/json;charset=UTF-8\",\n });\n\n updateAuthHeader(config);\n if (config.authHeader) {\n const authHeaderValue =\n typeof config.authHeader === \"function\"\n ? config.authHeader()\n : config.authHeader;\n headers.set(\"Authorization\", authHeaderValue);\n }\n\n // Update custom headers last to allow them to over-write the defaults. This assumes\n // the user knows what they are doing and may want to over-write the defaults.\n updateCustomHeaders(config);\n if (config.headers) {\n for (const [header, value] of Object.entries(config.headers)) {\n headers.set(header, value);\n }\n }\n\n async function attemptSend(remainingRetries: number): Promise {\n try {\n const response = await fetch(config.url, {\n method: \"POST\",\n headers,\n body: data,\n });\n\n if (!response.ok) {\n if (remainingRetries > 0) {\n return attemptSend(remainingRetries - 1);\n } else {\n throw new Error(`Failed to send logs: ${response.statusText}`);\n }\n }\n } catch (error) {\n if (remainingRetries > 0) {\n return attemptSend(remainingRetries - 1);\n }\n throw error;\n }\n }\n\n return attemptSend(retries);\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineCustomDetails } from \"@/attachHandlers\";\nimport { registerAuthCallback } from \"@/utils\";\nimport {\n addCallbacks,\n removeCallbacks,\n packageLog,\n packageCustomLog,\n getSelector,\n buildPath,\n initPackager,\n} from \"@/packageLogs\";\nimport { version as userAleVersion } from \"../package.json\";\nimport { Configuration } from \"@/configure\";\nimport { attachHandlers } from \"@/attachHandlers\";\nimport { initSender } from \"@/sendLogs\";\n\nimport type { Settings, Logging } from \"@/types\";\n\nconst config = Configuration.getInstance();\nconst logs: Array = [];\n\nconst startLoadTimestamp = Date.now();\nlet endLoadTimestamp: number;\nself.onload = function () {\n endLoadTimestamp = Date.now();\n};\n\nexport let started = false;\nexport { defineCustomDetails as details } from \"@/attachHandlers\";\nexport { registerAuthCallback as registerAuthCallback } from \"@/utils\";\nexport {\n addCallbacks as addCallbacks,\n removeCallbacks as removeCallbacks,\n packageLog as packageLog,\n packageCustomLog as packageCustomLog,\n getSelector as getSelector,\n buildPath as buildPath,\n} from \"@/packageLogs\";\nexport type { Logging } from \"@/types\";\n\nconfig.update({\n useraleVersion: userAleVersion,\n});\ninitPackager(logs, config);\nif (config.autostart) {\n setup(config);\n}\n\n/**\n * Hooks the global event listener, and starts up the\n * logging interval.\n * @param {Configuration} config Configuration settings for the logger\n */\nfunction setup(config: Configuration) {\n if (!started) {\n setTimeout(function () {\n let state;\n try {\n state = document.readyState;\n } catch (error) {\n // Assume there is no DOM and this is a web worker context\n state = \"complete\";\n }\n\n if (\n config.autostart &&\n (state === \"interactive\" || state === \"complete\")\n ) {\n attachHandlers(config);\n initSender(logs, config);\n started = config.on = true;\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n packageCustomLog(\n {\n type: \"load\",\n details: { pageLoadTime: endLoadTimestamp - startLoadTimestamp },\n },\n () => ({}),\n false,\n );\n }\n } else {\n setup(config);\n }\n }, 100);\n }\n}\n\n// Export the Userale API\nexport const version = userAleVersion;\n\n/**\n * Used to start the logging process if the\n * autostart configuration option is set to false.\n */\nexport function start(): void {\n if (!started || config.autostart === false) {\n started = config.on = true;\n config.update({ autostart: true });\n }\n}\n\n/**\n * Halts the logging process. Logs will no longer be sent.\n */\nexport function stop(): void {\n started = config.on = false;\n config.update({ autostart: false });\n}\n\n/**\n * Updates the current configuration\n * object with the provided values.\n * @param {Partial} newConfig The configuration options to use.\n * @return {Settings.Config} Returns the updated configuration.\n */\nexport function options(\n newConfig: Partial | undefined,\n): Settings.Config {\n if (newConfig) {\n config.update(newConfig);\n }\n\n return config;\n}\n\n/**\n * Appends a log to the log queue.\n * @param {Logging.CustomLog} customLog The log to append.\n * @return {boolean} Whether the operation succeeded.\n */\nexport function log(customLog: Logging.CustomLog | undefined) {\n if (customLog) {\n logs.push(customLog);\n return true;\n } else {\n return false;\n }\n}\n\n// Only attach to window in IIFE builds\nif (typeof window !== \"undefined\") {\n (window as any).userale = {\n start,\n stop,\n options,\n log,\n version: userAleVersion,\n details: defineCustomDetails,\n registerAuthCallback,\n addCallbacks,\n removeCallbacks,\n packageLog,\n packageCustomLog,\n getSelector,\n buildPath,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBO,MAAI;AACX,MAAI;AAGJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AAEG,MAAM,gBAAyC;AAC/C,MAAM,aAAsC;AAC5C,MAAI,aAAoC,CAAC;AAMzC,WAAS,gBACX,cACH;AACA,iBAAa,QAAQ,CAAC,WAAW;AAC/B,UAAI,cAAiD,CAAC;AAEtD,oBAAc,OAAO,KAAK,MAAM,EAAE,OAAO,CAACA,cAAa,QAAQ;AAC7D,QAAAA,aAAY,OAAO,OAAO,yBAAyB,QAAQ,GAAG;AAC9D,eAAOA;AAAA,MACT,GAAG,WAAW;AAEd,aAAO,sBAAsB,MAAM,EAAE,QAAQ,CAAC,QAAQ;AACpD,cAAM,aAAa,OAAO,yBAAyB,QAAQ,GAAG;AAC9D,YAAI,YAAY,YAAY;AAC1B,sBAAY,OAAO;AAAA,QACrB;AAAA,MACF,CAAC;AACD,aAAO,iBAAiB,YAAY,WAAW;AAAA,IACjD,CAAC;AACD,WAAO;AAAA,EACT;AAMO,WAAS,gBAAgB,YAAsB;AACpD,eAAW,QAAQ,CAAC,QAAQ;AAC1B,UAAI,OAAO,UAAU,eAAe,KAAK,YAAY,GAAG,GAAG;AACzD,eAAO,WAAW;AAAA,MACpB;AAAA,IACF,CAAC;AAAA,EACH;AAOO,WAAS,aACd,SACA,WACA;AACA,WAAO;AACP,aAAS;AACT,iBAAa,CAAC;AACd,iBAAa;AACb,mBAAe;AACf,mBAAe;AACf,oBAAgB;AAChB,sBAAkB;AAClB,kBAAc;AAAA,EAChB;AAQO,WAAS,WACd,GACA,WACA;AACA,QAAI,CAAC,OAAO,IAAI;AACd,aAAO;AAAA,IACT;AAEA,QAAI,UAAU;AACd,QAAI,WAAW;AACb,gBAAU,UAAU,CAAC;AAAA,IACvB;AAEA,UAAM,aAAa;AAAA,MACjB,EAAE,aAAa,EAAE,YAAY,IAAI,OAAO,KAAK,EAAE,SAAS,IAAI,KAAK,IAAI;AAAA,IACvE;AAEA,QAAIC,OAAmB;AAAA,MACrB,QAAQ,EAAE,SAAS,YAAY,EAAE,MAAM,IAAI;AAAA,MAC3C,MAAM,UAAU,CAAC;AAAA,MACjB,SAAS,KAAK,SAAS;AAAA,MACvB,WAAW,SAAS;AAAA,MACpB,cAAc,SAAS;AAAA,MACvB,WAAW,KAAK,UAAU;AAAA,MAC1B,YAAY,WAAW;AAAA,MACvB,WAAW,WAAW;AAAA,MACtB,UAAU,YAAY,CAAC;AAAA,MACvB,SAAS,aAAa;AAAA,MACtB,MAAM,EAAE;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA,MACZ;AAAA,MACA,QAAQ,OAAO;AAAA,MACf,aAAa,OAAO;AAAA,MACpB,UAAU,OAAO;AAAA,MACjB,gBAAgB,OAAO;AAAA,MACvB,WAAW,OAAO;AAAA,MAClB,eAAe,OAAO;AAAA,MACtB,kBAAkB,OAAO;AAAA,MACzB,YAAY,WAAW,CAAC;AAAA,MACxB,OAAO,SAAS,CAAC;AAAA,IACnB;AAEA,QAAI,OAAO,kBAAkB,cAAc,CAAC,cAAcA,IAAG,GAAG;AAC9D,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,eAAe,YAAY;AACpC,MAAAA,OAAM,WAAWA,MAAK,CAAC;AAAA,IACzB;AAEA,eAAW,QAAQ,OAAO,OAAO,UAAU,GAAG;AAC5C,UAAI,OAAO,SAAS,YAAY;AAC9B,QAAAA,OAAM,KAAKA,MAAK,CAAC;AACjB,YAAI,CAACA,MAAK;AACR,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,SAAK,KAAKA,IAAG;AACb,WAAO;AAAA,EACT;AASO,WAAS,iBACd,WACA,WACA,YACS;AACT,QAAI,CAAC,OAAO,IAAI;AACd,aAAO;AAAA,IACT;AAEA,QAAI,UAAU;AACd,QAAI,UAAU,WAAW,GAAG;AAM1B,YAAM,kBAAkB;AACxB,gBAAU,gBAAgB;AAAA,IAC5B;AAEA,UAAM,WAAW;AAAA,MACf,SAAS,KAAK,SAAS;AAAA,MACvB,WAAW,SAAS;AAAA,MACpB,cAAc,SAAS;AAAA,MACvB,WAAW,KAAK,UAAU;AAAA,MAC1B,YAAY,KAAK,IAAI;AAAA,MACrB,SAAS,aAAa;AAAA,MACtB,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,QAAQ,OAAO;AAAA,MACf,aAAa,OAAO;AAAA,MACpB,UAAU,OAAO;AAAA,MACjB,gBAAgB,OAAO;AAAA,MACvB,WAAW,OAAO;AAAA,MAClB,eAAe,OAAO;AAAA,MACtB,kBAAkB,OAAO;AAAA,IAC3B;AAEA,QAAIA,OAAM,OAAO,OAAO,UAAU,SAAS;AAE3C,QAAI,OAAO,kBAAkB,cAAc,CAAC,cAAcA,IAAG,GAAG;AAC9D,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,eAAe,YAAY;AACpC,MAAAA,OAAM,WAAWA,IAAG;AAAA,IACtB;AAEA,eAAW,QAAQ,OAAO,OAAO,UAAU,GAAG;AAC5C,UAAI,OAAO,SAAS,YAAY;AAC9B,QAAAA,OAAM,KAAKA,MAAK,IAAI;AACpB,YAAI,CAACA,MAAK;AACR,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,SAAK,KAAKA,IAAG;AAEb,WAAO;AAAA,EACT;AAQO,WAAS,kBAAkB,WAAmB;AACnD,WAAO;AAAA,MACL,OAAO,KAAK,MAAM,SAAS;AAAA,MAC3B,OAAO,QAAQ,YAAY,GAAG,QAAQ,CAAC,CAAC;AAAA,IAC1C;AAAA,EACF;AAOO,WAAS,mBAAmB,GAAU;AAC3C,QAAI;AACF,YAAM,SAAS,EAAE,SAAS,YAAY,EAAE,MAAM,IAAI;AAClD,YAAM,OAAO,UAAU,CAAC;AACxB,YAAM,OAAO,EAAE;AACf,YAAM,YAAY,KAAK;AAAA,QACrB,EAAE,aAAa,EAAE,YAAY,IAAI,OAAO,KAAK,EAAE,SAAS,IAAI,KAAK,IAAI;AAAA,MACvE;AAGA,UAAI,cAAc,MAAM;AACtB,qBAAa;AACb,uBAAe;AACf,uBAAe;AACf,wBAAgB;AAChB,0BAAkB;AAAA,MACpB;AAEA,WAAK,eAAe,UAAU,iBAAiB,SAAS,eAAe;AAIrE,sBAAc;AAAA,UACZ,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,SAAS,KAAK,SAAS;AAAA,UACvB,WAAW,SAAS;AAAA,UACpB,cAAc,SAAS;AAAA,UACvB,WAAW,KAAK,UAAU;AAAA,UAC1B,OAAO;AAAA,UACP,UAAU,YAAY;AAAA,UACtB,WAAW;AAAA,UACX,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,cAAc,eAAe;AAAA,UAC7B,YAAY,iBAAiB;AAAA,UAC7B,YAAY;AAAA,UACZ,QAAQ,OAAO;AAAA,UACf,aAAa,OAAO;AAAA,UACpB,UAAU,OAAO;AAAA,UACjB,gBAAgB,OAAO;AAAA,UACvB,WAAW,OAAO;AAAA,UAClB,eAAe,OAAO;AAAA,UACtB,kBAAkB,OAAO;AAAA,QAC3B;AAEA,YAAI,OAAO,kBAAkB,cAAc,CAAC,cAAc,WAAW,GAAG;AACtE,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,eAAe,YAAY;AACpC,wBAAc,WAAW,aAAa,CAAC;AAAA,QACzC;AAEA,mBAAW,QAAQ,OAAO,OAAO,UAAU,GAAG;AAC5C,cAAI,OAAO,SAAS,YAAY;AAC9B,0BAAc,KAAK,aAAa,IAAI;AACpC,gBAAI,CAAC,aAAa;AAChB,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI;AAAa,eAAK,KAAK,WAAW;AAGtC,qBAAa;AACb,uBAAe;AACf,uBAAe;AACf,wBAAgB;AAChB,0BAAkB;AAAA,MACpB;AAGA,UAAI,cAAc,UAAU,gBAAgB,QAAQ,iBAAiB;AACnE,0BAAkB,kBAAkB;AAAA,MACtC;AAEA,aAAO;AAAA,IACT,QAAE;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAQO,WAAS,YAAY,GAAU;AACpC,QAAI,aAAa,YAAY;AAC3B,UAAI,EAAE,SAAS,MAAM;AACnB,eAAO,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,MAAM;AAAA,MAClC,WAAW,EAAE,WAAW,MAAM;AAC5B,eAAO;AAAA,UACL,GAAG,SAAS,gBAAgB,aAAa,EAAE;AAAA,UAC3C,GAAG,SAAS,gBAAgB,YAAY,EAAE;AAAA,QAC5C;AAAA,MACF;AAAA,IACF,OAAO;AACL,aAAO,EAAE,GAAG,MAAM,GAAG,KAAK;AAAA,IAC5B;AAAA,EACF;AAMO,WAAS,eAAe;AAC7B,WAAO,EAAE,OAAO,KAAK,YAAY,QAAQ,KAAK,YAAY;AAAA,EAC5D;AAOO,WAAS,YAAY,KAAkB;AAC5C,QAAI,eAAe,eAAe,eAAe,SAAS;AACxD,UAAI,IAAI,WAAW;AACjB,eACE,IAAI,aACH,IAAI,KAAK,MAAM,IAAI,KAAK,OACxB,IAAI,YAAY,MAAM,IAAI,YAAY;AAAA,MAE3C,WAAW,IAAI,UAAU;AACvB,eACE,IAAI,YACH,IAAI,KAAK,MAAM,IAAI,KAAK,OACxB,IAAI,YAAY,MAAM,IAAI,YAAY;AAAA,MAE3C;AAAA,IACF,WAAW,eAAe,UAAU;AAClC,aAAO;AAAA,IACT,WAAW,QAAQ,YAAY;AAC7B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAOO,WAAS,UAAU,GAAU;AAClC,UAAM,OAAO,EAAE,aAAa;AAC5B,WAAO,gBAAgB,IAAI;AAAA,EAC7B;AAOO,WAAS,gBAAgB,MAAqB;AACnD,QAAI,IAAI;AACR,QAAI;AACJ,UAAM,gBAA0B,CAAC;AACjC,WAAQ,UAAU,KAAK,IAAK;AAC1B,oBAAc,KAAK,YAAY,OAAO,CAAC;AACvC,QAAE;AACF,gBAAU,KAAK;AAAA,IACjB;AACA,WAAO;AAAA,EACT;AAQO,WAAS,WAAW,GAA+B;AACxD,UAAM,aAAkC,CAAC;AACzC,UAAM,qBAAqB,CAAC,OAAO;AAEnC,QAAI,EAAE,UAAU,EAAE,kBAAkB,SAAS;AAC3C,iBAAW,QAAQ,EAAE,OAAO,YAAY;AACtC,YAAI,mBAAmB,SAAS,KAAK,IAAI;AAAG;AAC5C,YAAI,MAAW,KAAK;AACpB,YAAI;AACF,gBAAM,KAAK,MAAM,GAAG;AAAA,QACtB,QAAE;AAAA,QAEF;AACA,mBAAW,KAAK,QAAQ;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAOO,WAAS,SAAS,GAAkC;AACzD,UAAM,aAAqC,CAAC;AAC5C,QAAI,EAAE,UAAU,EAAE,kBAAkB,aAAa;AAC/C,YAAM,WAAW,EAAE,OAAO;AAC1B,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,cAAM,OAAO,SAAS;AACtB,mBAAW,QAAQ,SAAS,iBAAiB,IAAI;AAAA,MACnD;AAAA,IACF;AACA,WAAO;AAAA,EACT;;;ACvbA,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAM,iBAA+C;AAAA,IACnD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAM,eAA2C,CAAC,QAAQ,QAAQ,OAAO;AAMlE,WAAS,oBAAoB,GAAe;AACjD,WAAO;AAAA,MACL,QAAQ,EAAE;AAAA,MACV,MAAM,EAAE;AAAA,MACR,KAAK,EAAE;AAAA,MACP,OAAO,EAAE;AAAA,MACT,MAAM,EAAE;AAAA,IAEV;AAAA,EACF;AAKO,WAAS,uBAAuB,GAAkB;AACvD,WAAO;AAAA,MACL,KAAK,EAAE;AAAA,MACP,MAAM,EAAE;AAAA,MACR,MAAM,EAAE;AAAA,MACR,KAAK,EAAE;AAAA,MACP,OAAO,EAAE;AAAA,MACT,MAAM,EAAE;AAAA,IACV;AAAA,EACF;AAgBO,WAAS,qBAAqB,GAAuB;AAC1D,WAAO;AAAA,MACL,OAAO,EAAE,OAAO;AAAA,IAClB;AAAA,EACF;AAMO,WAAS,oBAAoB,GAAe;AACjD,WAAO;AAAA,MACL,GAAG,EAAE;AAAA,MACL,GAAG,EAAE;AAAA,MACL,GAAG,EAAE;AAAA,IACP;AAAA,EACF;AAKO,WAAS,uBAAuB;AACrC,WAAO;AAAA,MACL,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,IACZ;AAAA,EACF;AAKO,WAAS,uBAAuB;AACrC,WAAO;AAAA,MACL,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,IACjB;AAAA,EACF;AAOO,WAAS,cAAcC,SAAsC;AAIlE,aAAS;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,MACV,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAOA,QAAO,aAAa,yBAAyB;AAAA,MACpD,QAAQA,QAAO,aAAa,uBAAuB;AAAA,MACnD,WAAW;AAAA,MACX,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAASA,QAAO,aAAa,yBAAyB;AAAA,MACtD,WAAW;AAAA,IACb;AAEA,kBAAc,CAAC;AACf,qBAAiB;AAAA,MACf,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAEA,oBAAgB;AAAA,MACd,QAAQ;AAAA,IACV;AAAA,EACF;AAQO,WAAS,oBACdC,UACA,MACkD;AAIlD,UAAM,YAA0D;AAAA,MAC9D,OAAO;AAAA,MACP,UAAU;AAAA,MACV,WAAW;AAAA,MACX,SAAS;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAOA,SAAQ,aAAa,yBAAyB;AAAA,MACrD,QAAQA,SAAQ,aAAa,uBAAuB;AAAA,MACpD,WAAW;AAAA,MACX,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAASA,SAAQ,aAAa,yBAAyB;AAAA,MACvD,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AACA,WAAO,UAAU;AAAA,EACnB;AAOO,WAAS,eAAeD,SAAgC;AAC7D,QAAI;AACF,oBAAcA,OAAM;AAEpB,MAAC,OAAO,KAAK,MAAM,EAA6B,QAAQ,SAAU,IAAI;AACpE,iBAAS;AAAA,UACP;AAAA,UACA,SAAU,GAAG;AACX,uBAAW,GAAG,OAAO,GAAG;AAAA,UAC1B;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AAED,qBAAe,QAAQ,SAAU,IAAI;AACnC,iBAAS;AAAA,UACP;AAAA,UACA,SAAU,GAAG;AACX,+BAAmB,CAAC;AAAA,UACtB;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AAED,MAAC,OAAO,KAAK,cAAc,EAA8B;AAAA,QACvD,SAAU,IAAI;AACZ,sBAAY,MAAM;AAElB,eAAK;AAAA,YACH;AAAA,YACA,SAAU,GAAG;AACX,kBAAI,YAAY,KAAK;AACnB,4BAAY,MAAM;AAClB,2BAAW,GAAG,eAAe,GAAG;AAChC,2BAAW,WAAY;AACrB,8BAAY,MAAM;AAAA,gBACpB,GAAGA,QAAO,UAAU;AAAA,cACtB;AAAA,YACF;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,MAAC,OAAO,KAAK,aAAa,EAA6B;AAAA,QACrD,SAAU,IAAI;AACZ,mBAAS;AAAA,YACP;AAAA,YACA,SAAU,GAAG;AACX,yBAAW,GAAG,OAAO,GAAG;AAAA,YAC1B;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,mBAAa,QAAQ,SAAU,IAAI;AACjC,aAAK;AAAA,UACH;AAAA,UACA,SAAU,GAAG;AACX,uBAAW,GAAG,WAAY;AACxB,qBAAO,EAAE,QAAQ,KAAK;AAAA,YACxB,CAAC;AAAA,UACH;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC;AAED,aAAO;AAAA,IACT,QAAE;AACA,aAAO;AAAA,IACT;AAAA,EACF;;;AC1PO,MAAI,eAA8C;AASlD,WAAS,iBAAiBE,SAAuB;AACtD,QAAI,cAAc;AAChB,UAAI;AACF,QAAAA,QAAO,aAAa,aAAa;AAAA,MACnC,SAAS,GAAP;AAIA,gBAAQ,MAAM,oDAAoD,GAAG;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAOO,WAAS,qBAAqB,UAAkC;AACrE,QAAI;AACF,qBAAe,QAAQ;AACvB,qBAAe;AACf,aAAO;AAAA,IACT,QAAE;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAQO,WAAS,eAAe,UAAkC;AAC/D,QAAI,OAAO,aAAa,YAAY;AAClC,YAAM,IAAI,MAAM,0CAA0C;AAAA,IAC5D;AACA,UAAM,SAAS,SAAS;AACxB,QAAI,OAAO,WAAW,UAAU;AAC9B,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAAA,EACF;;;ACnDO,MAAI,kBAAoD;AASxD,WAAS,oBAAoBC,SAAuB;AACzD,QAAI,iBAAiB;AACnB,UAAI;AACF,QAAAA,QAAO,UAAU,gBAAgB;AAAA,MACnC,SAAS,GAAP;AAIA,gBAAQ,MAAM,gDAAgD,GAAG;AAAA,MACnE;AAAA,IACF;AAAA,EACF;;;;;;ACrBA,MAAI,YAA2B;AAC/B,MAAI,gBAA+B;AAO5B,WAAS,qBAAsC;AACpD,QACE,OAAO,sBAAsB,eAC7B,gBAAgB,mBAChB;AACA,YAAMC,YAA4B;AAAA,QAChC,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,kBAAkB;AAAA,QAClB,WAAW;AAAA,QACX,SAAS;AAAA,QACT,eAAe;AAAA,QACf,mBAAmB;AAAA,QACnB,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ;AAAA,QACA,MAAM,CAAC,OAAiB,OAAO,SAAY,KAAK,KAAK,IAAI;AAAA,QACzD,UAAU;AAAA,QACV,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,KAAK;AAAA,QACL,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,QAAQ;AAAA,MACV;AACA,aAAOA;AAAA,IACT;AAEA,QAAI,cAAc,MAAM;AACtB,kBAAY;AAAA,QACV;AAAA,QACA,aAAa,OAAO,KAAK,IAAI,CAAC;AAAA,MAChC;AAAA,IACF;AAEA,QAAI,kBAAkB,MAAM;AAC1B,sBAAgB;AAAA,QACd;AAAA,QACA,sBAAsB;AAAA,MACxB;AAAA,IACF;AAEA,UAAM,SACJ,SAAS,iBACR,WAAY;AACX,YAAM,UAAU,SAAS,qBAAqB,QAAQ;AACtD,aAAO,QAAQ,QAAQ,SAAS;AAAA,IAClC,EAAG;AAEL,UAAM,MAAM,SACR,OAAO,aAAa,KAAK,MAAM,IAC/B,WAAY;AACV,aAAO;AAAA,IACT;AACJ,UAAM,UAAU,IAAI,cAAc;AAClC,UAAM,WAA4B;AAAA,MAChC,YAAY,IAAI,WAAW,KAAK;AAAA,MAChC,WAAW,IAAI,gBAAgB,MAAM,UAAU,QAAQ;AAAA,MACvD,kBAAkB;AAAA,MAClB,WAAW,IAAI,YAAY,KAAK;AAAA,MAChC,SAAS,UAAU,KAAK,MAAM,OAAO,IAAI;AAAA,MACzC;AAAA,MACA,mBAAmB,EAAE,IAAI,gBAAgB,KAAK;AAAA,MAC9C,YAAY,IAAI,kBAAkB,MAAM,SAAS,OAAO;AAAA,MACxD,YAAY,EAAE,IAAI,iBAAiB,KAAK;AAAA,MACxC,WAAW,IAAI,cAAc,KAAK;AAAA,MAClC,MAAM,eAAe,SAAS,YAAY,aAAa,CAAC;AAAA,MACxD,UAAU,IAAI,WAAW,KAAK;AAAA,MAC9B,aAAa,IAAI,cAAc,KAAK;AAAA,MACpC,kBAAkB,EAAE,IAAI,eAAe,KAAK;AAAA,MAC5C,KAAK,IAAI,UAAU,KAAK;AAAA,MACxB,gBAAgB,IAAI,sBAAsB,KAAK;AAAA,MAC/C,gBAAgB,IAAI,uBAAuB,KAAK;AAAA,MAChD,QAAQ,IAAI,WAAW,KAAK;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAQO,WAAS,aAAa,YAAoB,OAAY;AAC3D,QAAI,KAAK,eAAe,QAAQ,UAAU,MAAM,MAAM;AACpD,WAAK,eAAe,QAAQ,YAAY,KAAK,UAAU,KAAK,CAAC;AAC7D,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,MAAM,KAAK,eAAe,QAAQ,UAAU,KAAK,EAAE;AAAA,EACjE;AAOO,WAAS,eAAe,GAAiC;AAC9D,QAAI;AACJ,QAAI,EAAE,aAAa,EAAE,YAAY,GAAG;AAClC,YAAM,QAAQ,KAAK,IAAI,IAAI,EAAE;AAO7B,UAAI,QAAQ,GAAG;AACb,mBAAW,WAAY;AACrB,iBAAO,EAAE,YAAY;AAAA,QACvB;AAAA,MACF,WAAW,QAAQ,EAAE,WAAW;AAC9B,cAAM,WAAW,YAAY;AAC7B,mBAAW,SAAU,IAAI;AACvB,iBAAO,KAAK;AAAA,QACd;AAAA,MACF,OAAO;AACL,mBAAW,SAAU,IAAI;AACvB,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,OAAO;AACL,iBAAW,WAAY;AACrB,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAMA,WAAS,wBAAgC;AAEvC,UAAM,MAAM;AACZ,UAAM,MAAM,IAAI,WAAW,MAAM,CAAC;AAClC,WAAO,OAAO,gBAAgB,GAAG;AACjC,WAAO,MAAM,KAAK,KAAK,CAAC,QAAQ;AAC9B,aAAO,IAAI,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,IACzC,CAAC,EAAE,KAAK,EAAE;AAAA,EACZ;;;ACrJO,MAAM,iBAAN,MAAoB;AAAA,IA6BjB,cAAc;AAvBtB,WAAO,YAAqB;AAC5B,WAAO,aAAkC;AACzC,WAAO,mBAAuC;AAC9C,WAAO,YAAkC;AACzC,WAAO,UAA4B;AACnC,WAAO,gBAAoC;AAC3C,WAAO,oBAA4B;AACnC,WAAO,aAAsB;AAC7B,WAAO,KAAc;AACrB,WAAO,aAAqB;AAC5B,WAAO,YAAgC;AACvC,WAAO,OAA8B,MAAM,KAAK,IAAI;AACpD,WAAO,WAA8B;AACrC,WAAO,cAAgC;AACvC,WAAO,mBAA2B;AAClC,WAAO,MAAc;AACrB,WAAO,iBAA0C;AACjD,WAAO,iBAAmC;AAC1C,WAAO,SAA0B;AACjC,WAAO,UAA4B;AACnC,WAAO,oBAA6B;AAKlC,UAAI,eAAc,aAAa,MAAM;AACnC,aAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAAA,IAGA,OAAc,cAA6B;AACzC,UAAI,eAAc,aAAa,MAAM;AACnC,uBAAc,WAAW,IAAI,eAAc;AAAA,MAC7C;AACA,aAAO,eAAc;AAAA,IACvB;AAAA,IAEQ,aAAmB;AACzB,YAAM,WAAW,mBAAmB;AACpC,WAAK,OAAO,QAAQ;AAAA,IACtB;AAAA,IAKO,QAAc;AACnB,WAAK,WAAW;AAAA,IAClB;AAAA,IAOO,OAAO,WAA2C;AACvD,aAAO,KAAK,SAAS,EAAE,QAAQ,CAAC,WAAW;AACzC,YAAI,WAAW,kBAAkB;AAC/B,gBAAM,kBAAkB,UAAU;AAClC,gBAAM,SAAS,kBACX,eAAc,oBAAoB,eAAe,IACjD;AACJ,cAAI,QAAQ;AACV,iBAAK,YAAY;AAAA,UACnB;AAAA,QACF;AACA,cAAM,uBAAuB,UAAU;AACvC,cAAM,oBACJ,WAAW,YAAY,UAAU,YAAY;AAC/C,YAAI,qBAAqB,sBAAsB;AAC7C;AAAA,QACF;AAEA,cAAM,YAAY,UAAU;AAC5B,YAAI,cAAc,QAAW;AAC3B,eAAK,UAAU;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAOA,OAAc,oBAAoB,OAAe;AAC/C,YAAM,YAAY;AAClB,YAAM,QAAQ,IAAI,OAAO,SAAS,YAAY,mBAAmB;AACjE,YAAM,UAAU,OAAO,SAAS,KAAK,MAAM,KAAK;AAEhD,UAAI,WAAW,QAAQ,IAAI;AACzB,eAAO,mBAAmB,QAAQ,GAAG,QAAQ,OAAO,GAAG,CAAC;AAAA,MAC1D;AACA,aAAO;AAAA,IACT;AAAA,EACF;AArGO,MAAM,gBAAN;AAGL,EAHW,cAGI,WAAiC;;;ACHlD,MAAI;AACJ,MAAI;AAOG,WAAS,WAAWC,OAA0BC,SAAuB;AAC1E,QAAI,gBAAgB;AAClB,oBAAc,cAAc;AAAA,IAC9B;AAEA,UAAM,MAAM,IAAI,IAAIA,QAAO,GAAG;AAC9B,QAAI,IAAI,aAAa,SAAS,IAAI,aAAa,QAAQ;AACrD,cAAQ,IAAI,UAAUA,QAAO,GAAG;AAAA,IAClC;AAEA,qBAAiB,eAAeD,OAAMC,OAAM;AAC5C,gBAAYD,OAAMC,OAAM;AAAA,EAC1B;AASO,WAAS,eACdD,OACAC,SACgB;AAChB,WAAO,YAAY,WAAY;AAC7B,UAAI,CAACA,QAAO,IAAI;AACd;AAAA,MACF;AAEA,UAAID,MAAK,UAAUC,QAAO,mBAAmB;AAC3C,iBAASD,MAAK,MAAM,CAAC,GAAGC,SAAQ,CAAC;AACjC,QAAAD,MAAK,OAAO,CAAC;AAAA,MACf;AAAA,IACF,GAAGC,QAAO,gBAAgB;AAAA,EAC5B;AAOO,WAAS,YACdD,OACAC,SACM;AACN,SAAK,iBAAiB,YAAY,WAAY;AAC5C,UAAI,CAACA,QAAO,IAAI;AACd;AAAA,MACF;AAEA,UAAID,MAAK,SAAS,GAAG;AACnB,cAAM,MAAM,IAAI,IAAIC,QAAO,GAAG;AAE9B,YAAI,IAAI,aAAa,SAAS,IAAI,aAAa,QAAQ;AACrD,gBAAM,OAAO,KAAK,UAAUD,KAAI;AAChC,gBAAM,KAAK,IAAI;AAAA,QACjB,OAAO;AACL,gBAAM,UAAuB,IAAI,QAAQ;AACzC,kBAAQ,IAAI,gBAAgB,gCAAgC;AAE5D,cAAIC,QAAO,YAAY;AACrB,oBAAQ,IAAI,iBAAiBA,QAAO,WAAW,SAAS,CAAC;AAAA,UAC3D;AAEA,gBAAMA,QAAO,KAAK;AAAA,YAChB,WAAW;AAAA,YACX,QAAQ;AAAA,YACR;AAAA,YACA,MAAM,KAAK,UAAUD,KAAI;AAAA,UAC3B,CAAC,EAAE,MAAM,CAAC,UAAU;AAClB,oBAAQ,MAAM,KAAK;AAAA,UACrB,CAAC;AAAA,QACH;AACA,QAAAA,MAAK,OAAO,CAAC;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH;AASA,iBAAsB,SACpBA,OACAC,SACA,SACe;AACf,UAAM,OAAO,KAAK,UAAUD,KAAI;AAChC,UAAM,MAAM,IAAI,IAAIC,QAAO,GAAG;AAE9B,QAAI,IAAI,aAAa,SAAS,IAAI,aAAa,QAAQ;AACrD,YAAM,KAAK,IAAI;AACf;AAAA,IACF;AAGA,UAAM,UAAU,IAAI,QAAQ;AAAA,MAC1B,gBAAgB;AAAA,IAClB,CAAC;AAED,qBAAiBA,OAAM;AACvB,QAAIA,QAAO,YAAY;AACrB,YAAM,kBACJ,OAAOA,QAAO,eAAe,aACzBA,QAAO,WAAW,IAClBA,QAAO;AACb,cAAQ,IAAI,iBAAiB,eAAe;AAAA,IAC9C;AAIA,wBAAoBA,OAAM;AAC1B,QAAIA,QAAO,SAAS;AAClB,iBAAW,CAAC,QAAQ,KAAK,KAAK,OAAO,QAAQA,QAAO,OAAO,GAAG;AAC5D,gBAAQ,IAAI,QAAQ,KAAK;AAAA,MAC3B;AAAA,IACF;AAEA,mBAAe,YAAY,kBAAyC;AAClE,UAAI;AACF,cAAM,WAAW,MAAM,MAAMA,QAAO,KAAK;AAAA,UACvC,QAAQ;AAAA,UACR;AAAA,UACA,MAAM;AAAA,QACR,CAAC;AAED,YAAI,CAAC,SAAS,IAAI;AAChB,cAAI,mBAAmB,GAAG;AACxB,mBAAO,YAAY,mBAAmB,CAAC;AAAA,UACzC,OAAO;AACL,kBAAM,IAAI,MAAM,wBAAwB,SAAS,YAAY;AAAA,UAC/D;AAAA,QACF;AAAA,MACF,SAAS,OAAP;AACA,YAAI,mBAAmB,GAAG;AACxB,iBAAO,YAAY,mBAAmB,CAAC;AAAA,QACzC;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAEA,WAAO,YAAY,OAAO;AAAA,EAC5B;;;AC5IA,MAAMC,UAAS,cAAc,YAAY;AACzC,MAAMC,QAA2B,CAAC;AAElC,MAAM,qBAAqB,KAAK,IAAI;AACpC,MAAI;AACJ,OAAK,SAAS,WAAY;AACxB,uBAAmB,KAAK,IAAI;AAAA,EAC9B;AAEO,MAAI,UAAU;AAarB,EAAAD,QAAO,OAAO;AAAA,IACZ,gBAAgB;AAAA,EAClB,CAAC;AACD,eAAaC,OAAMD,OAAM;AACzB,MAAIA,QAAO,WAAW;AACpB,UAAMA,OAAM;AAAA,EACd;AAOA,WAAS,MAAMA,SAAuB;AACpC,QAAI,CAAC,SAAS;AACZ,iBAAW,WAAY;AACrB,YAAI;AACJ,YAAI;AACF,kBAAQ,SAAS;AAAA,QACnB,SAAS,OAAP;AAEA,kBAAQ;AAAA,QACV;AAEA,YACEA,QAAO,cACN,UAAU,iBAAiB,UAAU,aACtC;AACA,yBAAeA,OAAM;AACrB,qBAAWC,OAAMD,OAAM;AACvB,oBAAUA,QAAO,KAAK;AACtB,cAAI,OAAO,WAAW,eAAe,OAAO,aAAa,aAAa;AACpE;AAAA,cACE;AAAA,gBACE,MAAM;AAAA,gBACN,SAAS,EAAE,cAAc,mBAAmB,mBAAmB;AAAA,cACjE;AAAA,cACA,OAAO,CAAC;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF,OAAO;AACL,gBAAMA,OAAM;AAAA,QACd;AAAA,MACF,GAAG,GAAG;AAAA,IACR;AAAA,EACF;AAGO,MAAME,WAAU;AAMhB,WAAS,QAAc;AAC5B,QAAI,CAAC,WAAWF,QAAO,cAAc,OAAO;AAC1C,gBAAUA,QAAO,KAAK;AACtB,MAAAA,QAAO,OAAO,EAAE,WAAW,KAAK,CAAC;AAAA,IACnC;AAAA,EACF;AAKO,WAAS,OAAa;AAC3B,cAAUA,QAAO,KAAK;AACtB,IAAAA,QAAO,OAAO,EAAE,WAAW,MAAM,CAAC;AAAA,EACpC;AAQO,WAAS,QACd,WACiB;AACjB,QAAI,WAAW;AACb,MAAAA,QAAO,OAAO,SAAS;AAAA,IACzB;AAEA,WAAOA;AAAA,EACT;AAOO,WAAS,IAAI,WAA0C;AAC5D,QAAI,WAAW;AACb,MAAAC,MAAK,KAAK,SAAS;AACnB,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAGA,MAAI,OAAO,WAAW,aAAa;AACjC,IAAC,OAAe,UAAU;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;","names":["descriptors","log","config","options","config","config","settings","logs","config","config","logs","version"]} \ No newline at end of file +{"version":3,"sources":["../src/packageLogs.ts","../src/attachHandlers.ts","../src/utils/auth/index.ts","../src/utils/headers/index.ts","../src/getInitialSettings.ts","../src/configure.ts","../src/sendLogs.ts","../src/main.ts"],"sourcesContent":["/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Callbacks, Logging } from \"@/types\";\nimport { Configuration } from \"@/configure\";\n\nexport let logs: Array;\nlet config: Configuration;\n\n// Interval Logging Globals\nlet intervalId: string | null;\nlet intervalType: string | null;\nlet intervalPath: string[] | null;\nlet intervalTimer: number | null;\nlet intervalCounter: number | null;\nlet intervalLog: Logging.Log | null;\n\nexport const filterHandler: CallableFunction | null = null;\nexport const mapHandler: CallableFunction | null = null;\nexport let cbHandlers: Callbacks.CallbackMap = {};\n\n/**\n * Adds named callbacks to be executed when logging.\n * @param {Object } newCallbacks An object containing named callback functions.\n */\nexport function addCallbacks(\n ...newCallbacks: Record[]\n) {\n newCallbacks.forEach((source) => {\n let descriptors: { [key in string | symbol]: any } = {};\n\n descriptors = Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, descriptors);\n\n Object.getOwnPropertySymbols(source).forEach((sym) => {\n const descriptor = Object.getOwnPropertyDescriptor(source, sym);\n if (descriptor?.enumerable) {\n descriptors[sym] = descriptor;\n }\n });\n Object.defineProperties(cbHandlers, descriptors);\n });\n return cbHandlers;\n}\n\n/**\n * Removes callbacks by name.\n * @param {String[]} targetKeys A list of names of functions to remove.\n */\nexport function removeCallbacks(targetKeys: string[]) {\n targetKeys.forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(cbHandlers, key)) {\n delete cbHandlers[key];\n }\n });\n}\n\n/**\n * Assigns the config and log container to be used by the logging functions.\n * @param {Array} newLogs Log container.\n * @param {Object} newConfig Configuration to use while logging.\n */\nexport function initPackager(\n newLogs: Array,\n newConfig: Configuration,\n) {\n logs = newLogs;\n config = newConfig;\n cbHandlers = {};\n intervalId = null;\n intervalType = null;\n intervalPath = null;\n intervalTimer = null;\n intervalCounter = 0;\n intervalLog = null;\n}\n\n/**\n * Transforms the provided HTML event into a log and appends it to the log queue.\n * @param {Event} e The event to be logged.\n * @param {Function} detailFcn The function to extract additional log parameters from the event.\n * @return {boolean} Whether the event was logged.\n */\nexport function packageLog(\n e: Event,\n detailFcn?: Logging.DynamicDetailFunction | null,\n) {\n if (!config.on) {\n return false;\n }\n\n let details = null;\n if (detailFcn) {\n details = detailFcn(e);\n }\n\n const timeFields = extractTimeFields(\n e.timeStamp && e.timeStamp > 0 ? config.time(e.timeStamp) : Date.now(),\n );\n\n let log: Logging.Log = {\n target: e.target ? getSelector(e.target) : null,\n path: buildPath(e),\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n clientTime: timeFields.milli,\n microTime: timeFields.micro,\n location: getLocation(e),\n scrnRes: getScreenRes(),\n type: e.type,\n logType: \"raw\",\n userAction: true,\n details: details,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n attributes: buildAttrs(e),\n style: buildCSS(e),\n };\n\n if (typeof filterHandler === \"function\" && !filterHandler(log)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n log = mapHandler(log, e);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n log = func(log, e);\n if (!log) {\n return false;\n }\n }\n }\n\n logs.push(log);\n return true;\n}\n\n/**\n * Packages the provided customLog to include standard meta data and appends it to the log queue.\n * @param {Logging.CustomLog} customLog The behavior to be logged.\n * @param {Logging.DynamicDetailFunction} detailFcn The function to extract additional log parameters from the event.\n * @param {boolean} userAction Indicates user behavior (true) or system behavior (false)\n * @return {boolean} Whether the event was logged.\n */\nexport function packageCustomLog(\n customLog: Logging.CustomLog,\n detailFcn: Logging.DynamicDetailFunction | Logging.StaticDetailFunction,\n userAction: boolean,\n): boolean {\n if (!config.on) {\n return false;\n }\n\n let details = null;\n if (detailFcn.length === 0) {\n // In the case of a union, the type checker will default to the more stringent\n // type, i.e. the DetailFunction that expects an argument for safety purposes.\n // To avoid this, we must explicitly check the type by asserting it receives\n // no arguments (detailFcn.length === 0) and then cast it to the\n // StaticDetailFunction type.\n const staticDetailFcn = detailFcn as Logging.StaticDetailFunction;\n details = staticDetailFcn();\n }\n\n const metaData = {\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n clientTime: Date.now(),\n scrnRes: getScreenRes(),\n logType: \"custom\",\n userAction: userAction,\n details: details,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n };\n\n let log = Object.assign(metaData, customLog);\n\n if (typeof filterHandler === \"function\" && !filterHandler(log)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n log = mapHandler(log);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n log = func(log, null);\n if (!log) {\n return false;\n }\n }\n }\n\n logs.push(log);\n\n return true;\n}\n\n/**\n * Extract the millisecond and microsecond portions of a timestamp.\n * @param {Number} timeStamp The timestamp to split into millisecond and microsecond fields.\n * @return {Object} An object containing the millisecond\n * and microsecond portions of the timestamp.\n */\nexport function extractTimeFields(timeStamp: number) {\n return {\n milli: Math.floor(timeStamp),\n micro: Number((timeStamp % 1).toFixed(3)),\n };\n}\n\n/**\n * Track intervals and gather details about it.\n * @param {Object} e\n * @return boolean\n */\nexport function packageIntervalLog(e: Event) {\n try {\n const target = e.target ? getSelector(e.target) : null;\n const path = buildPath(e);\n const type = e.type;\n const timestamp = Math.floor(\n e.timeStamp && e.timeStamp > 0 ? config.time(e.timeStamp) : Date.now(),\n );\n\n // Init - this should only happen once on initialization\n if (intervalId == null) {\n intervalId = target;\n intervalType = type;\n intervalPath = path;\n intervalTimer = timestamp;\n intervalCounter = 0;\n }\n\n if ((intervalId !== target || intervalType !== type) && intervalTimer) {\n // When to create log? On transition end\n // @todo Possible for intervalLog to not be pushed in the event the interval never ends...\n\n intervalLog = {\n target: intervalId,\n path: intervalPath,\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n count: intervalCounter,\n duration: timestamp - intervalTimer, // microseconds\n startTime: intervalTimer,\n endTime: timestamp,\n type: intervalType,\n logType: \"interval\",\n targetChange: intervalId !== target,\n typeChange: intervalType !== type,\n userAction: false,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n };\n\n if (typeof filterHandler === \"function\" && !filterHandler(intervalLog)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n intervalLog = mapHandler(intervalLog, e);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n intervalLog = func(intervalLog, null);\n if (!intervalLog) {\n return false;\n }\n }\n }\n\n if (intervalLog) logs.push(intervalLog);\n\n // Reset\n intervalId = target;\n intervalType = type;\n intervalPath = path;\n intervalTimer = timestamp;\n intervalCounter = 0;\n }\n\n // Interval is still occuring, just update counter\n if (intervalId == target && intervalType == type && intervalCounter) {\n intervalCounter = intervalCounter + 1;\n }\n\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Extracts coordinate information from the event\n * depending on a few browser quirks.\n * @param {Event} e The event to extract coordinate information from.\n * @return {Object} An object containing nullable x and y coordinates for the event.\n */\nexport function getLocation(e: Event) {\n if (e instanceof MouseEvent) {\n if (e.pageX != null) {\n return { x: e.pageX, y: e.pageY };\n } else if (e.clientX != null) {\n return {\n x: document.documentElement.scrollLeft + e.clientX,\n y: document.documentElement.scrollTop + e.clientY,\n };\n }\n } else {\n return { x: null, y: null };\n }\n}\n\n/**\n * Extracts innerWidth and innerHeight to provide estimates of screen resolution\n * @return {Object} An object containing the innerWidth and InnerHeight\n */\nexport function getScreenRes() {\n return { width: self.innerWidth, height: self.innerHeight };\n}\n\n/**\n * Builds a string CSS selector from the provided element\n * @param {EventTarget} ele The element from which the selector is built.\n * @return {string} The CSS selector for the element, or Unknown if it can't be determined.\n */\nexport function getSelector(ele: EventTarget) {\n if (ele instanceof HTMLElement || ele instanceof Element) {\n if (ele.localName) {\n return (\n ele.localName +\n (ele.id ? \"#\" + ele.id : \"\") +\n (ele.className ? \".\" + ele.className : \"\")\n );\n } else if (ele.nodeName) {\n return (\n ele.nodeName +\n (ele.id ? \"#\" + ele.id : \"\") +\n (ele.className ? \".\" + ele.className : \"\")\n );\n }\n } else if (ele instanceof Document) {\n return \"#document\";\n } else if (ele === globalThis) {\n return \"Window\";\n }\n return \"Unknown\";\n}\n\n/**\n * Builds an array of elements from the provided event target, to the root element.\n * @param {Event} e Event from which the path should be built.\n * @return {HTMLElement[]} Array of elements, starting at the event target, ending at the root element.\n */\nexport function buildPath(e: Event) {\n const path = e.composedPath();\n return selectorizePath(path);\n}\n\n/**\n * Builds a CSS selector path from the provided list of elements.\n * @param {EventTarget[]} path Array of HTML Elements from which the path should be built.\n * @return {string[]} Array of string CSS selectors.\n */\nexport function selectorizePath(path: EventTarget[]) {\n let i = 0;\n let pathEle;\n const pathSelectors: string[] = [];\n while ((pathEle = path[i])) {\n pathSelectors.push(getSelector(pathEle));\n ++i;\n pathEle = path[i];\n }\n return pathSelectors;\n}\n\n/**\n * Builds an object containing attributes of an element.\n * Attempts to parse all attribute values as JSON text.\n * @param {Event} e Event from which the target element's attributes should be extracted.\n * @return {Record} Object with element attributes as key-value pairs.\n */\nexport function buildAttrs(e: Event): Record {\n const attributes: Record = {};\n const attributeBlackList = [\"style\"];\n\n if (e.target && e.target instanceof Element) {\n for (const attr of e.target.attributes) {\n if (attributeBlackList.includes(attr.name)) continue;\n let val: any = attr.value;\n try {\n val = JSON.parse(val);\n } catch {\n // Ignore parsing errors, fallback to raw string value\n }\n attributes[attr.name] = val;\n }\n }\n\n return attributes;\n}\n\n/**\n * Builds an object containing all CSS properties of an element.\n * @param {Event} e Event from which the target element's properties should be extracted.\n * @return {Record} Object with all CSS properties as key-value pairs.\n */\nexport function buildCSS(e: Event): Record {\n const properties: Record = {};\n if (e.target && e.target instanceof HTMLElement) {\n const styleObj = e.target.style;\n for (let i = 0; i < styleObj.length; i++) {\n const prop = styleObj[i];\n properties[prop] = styleObj.getPropertyValue(prop);\n }\n }\n return properties;\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { packageLog, packageIntervalLog } from \"@/packageLogs\";\nimport { Events, Logging, Settings } from \"@/types\";\nimport { Configuration } from \"@/configure\";\n\n//@todo: Investigate drag events and their behavior\nlet events: Events.EventDetailsMap;\nlet bufferBools: Events.EventBoolMap;\nlet bufferedEvents: Events.EventDetailsMap;\nlet refreshEvents: Events.EventDetailsMap;\nconst intervalEvents: Array = [\n \"click\",\n \"focus\",\n \"blur\",\n \"input\",\n \"change\",\n \"mouseover\",\n \"submit\",\n];\nconst windowEvents: Array = [\"load\", \"blur\", \"focus\"];\n\n/**\n * Maps a MouseEvent to an object containing useful information.\n * @param {MouseEvent} e Event to extract data from\n */\nexport function extractMouseDetails(e: MouseEvent) {\n return {\n clicks: e.detail,\n ctrl: e.ctrlKey,\n alt: e.altKey,\n shift: e.shiftKey,\n meta: e.metaKey,\n // 'text' : e.target.innerHTML\n };\n}\n\n/** Maps a KeyboardEvent to an object containing useful infromation\n * @param {KeyboardEvent} e Event to extract data from\n */\nexport function extractKeyboardDetails(e: KeyboardEvent) {\n return {\n key: e.key,\n code: e.code,\n ctrl: e.ctrlKey,\n alt: e.altKey,\n shift: e.shiftKey,\n meta: e.metaKey,\n };\n}\n\n/**\n * Maps an InputEvent to an object containing useful information.\n * @param {InputEvent} e Event to extract data from\n */\nexport function extractInputDetails(e: InputEvent) {\n return {\n value: (e.target as HTMLInputElement).value,\n };\n}\n\n/**\n * Maps a ChangeEvent to an object containing useful information.\n * @param {Events.ChangeEvent} e Event to extract data from\n */\nexport function extractChangeDetails(e: Events.ChangeEvent) {\n return {\n value: e.target.value,\n };\n}\n\n/**\n * Maps a WheelEvent to an object containing useful information.\n * @param {WheelEvent} e Event to extract data from\n */\nexport function extractWheelDetails(e: WheelEvent) {\n return {\n x: e.deltaX,\n y: e.deltaY,\n z: e.deltaZ,\n };\n}\n\n/**\n * Maps a ScrollEvent to an object containing useful information.\n */\nexport function extractScrollDetails() {\n return {\n x: window.scrollX,\n y: window.scrollY,\n };\n}\n\n/**\n * Maps a ResizeEvent to an object containing useful information.\n */\nexport function extractResizeDetails() {\n return {\n width: window.outerWidth,\n height: window.outerHeight,\n };\n}\n\n/**\n * Defines the way information is extracted from various events.\n * Also defines which events we will listen to.\n * @param {Settings.Config} config Configuration object to read from.\n */\nexport function defineDetails(config: Settings.DefaultConfig): void {\n // Events list\n // Keys are event types\n // Values are functions that return details object if applicable\n events = {\n click: extractMouseDetails,\n dblclick: extractMouseDetails,\n mousedown: extractMouseDetails,\n mouseup: extractMouseDetails,\n focus: null,\n blur: null,\n input: config.logDetails ? extractKeyboardDetails : null,\n change: config.logDetails ? extractChangeDetails : null,\n dragstart: null,\n dragend: null,\n drag: null,\n drop: null,\n keydown: config.logDetails ? extractKeyboardDetails : null,\n mouseover: null,\n };\n\n bufferBools = {};\n bufferedEvents = {\n wheel: extractWheelDetails,\n scroll: extractScrollDetails,\n resize: extractResizeDetails,\n };\n\n refreshEvents = {\n submit: null,\n };\n}\n\n/**\n * Defines the way information is extracted from various events.\n * Also defines which events we will listen to.\n * @param {Settings.Config} options UserALE Configuration object to read from.\n * @param {Events.AllowedEvents} type of html event (e.g., 'click', 'mouseover', etc.), such as passed to addEventListener methods.\n */\nexport function defineCustomDetails(\n options: Settings.DefaultConfig,\n type: Events.AllowedEvents,\n): Logging.DynamicDetailFunction | null | undefined {\n // Events list\n // Keys are event types\n // Values are functions that return details object if applicable\n const eventType: Events.EventDetailsMap = {\n click: extractMouseDetails,\n dblclick: extractMouseDetails,\n mousedown: extractMouseDetails,\n mouseup: extractMouseDetails,\n focus: null,\n blur: null,\n load: null,\n input: options.logDetails ? extractKeyboardDetails : null,\n change: options.logDetails ? extractChangeDetails : null,\n dragstart: null,\n dragend: null,\n drag: null,\n drop: null,\n keydown: options.logDetails ? extractKeyboardDetails : null,\n mouseover: null,\n wheel: extractWheelDetails,\n scroll: extractScrollDetails,\n resize: extractResizeDetails,\n submit: null,\n };\n return eventType[type];\n}\n\n/**\n * Hooks the event handlers for each event type of interest.\n * @param {Configuration} config Configuration singleton to use.\n * @return {boolean} Whether the operation succeeded\n */\nexport function attachHandlers(config: Configuration): boolean {\n try {\n defineDetails(config);\n\n (Object.keys(events) as Events.AllowedEvents[]).forEach(function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageLog(e, events[ev]);\n },\n true,\n );\n });\n\n intervalEvents.forEach(function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageIntervalLog(e);\n },\n true,\n );\n });\n\n (Object.keys(bufferedEvents) as Events.BufferedEvents[]).forEach(\n function (ev) {\n bufferBools[ev] = true;\n\n self.addEventListener(\n ev,\n function (e) {\n if (bufferBools[ev]) {\n bufferBools[ev] = false;\n packageLog(e, bufferedEvents[ev]);\n setTimeout(function () {\n bufferBools[ev] = true;\n }, config.resolution);\n }\n },\n true,\n );\n },\n );\n\n (Object.keys(refreshEvents) as Events.RefreshEvents[]).forEach(\n function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageLog(e, events[ev]);\n },\n true,\n );\n },\n );\n\n windowEvents.forEach(function (ev) {\n self.addEventListener(\n ev,\n function (e) {\n packageLog(e, function () {\n return { window: true };\n });\n },\n true,\n );\n });\n\n return true;\n } catch {\n return false;\n }\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Callbacks } from \"@/types\";\n\nexport let authCallback: Callbacks.AuthCallback | null = null;\n\n/**\n * Fetches the most up-to-date auth header string from the auth callback\n * and updates the config object with the new value.\n * @param {Configuration} config Configuration object to be updated.\n * @param {Function} authCallback Callback used to fetch the newest header.\n * @returns {void}\n */\nexport function updateAuthHeader(config: Configuration) {\n if (authCallback) {\n try {\n config.authHeader = authCallback();\n } catch (e) {\n // We should emit the error, but otherwise continue as this could be a temporary issue\n // due to network connectivity or some logic inside the authCallback which is the user's\n // responsibility.\n console.error(`Error encountered while setting the auth header: ${e}`);\n }\n }\n}\n\n/**\n * Registers the provided callback to be used when updating the auth header.\n * @param {Callbacks.AuthCallback} callback Callback used to fetch the newest header. Should return a string.\n * @returns {boolean} Whether the operation succeeded.\n */\nexport function registerAuthCallback(callback: Callbacks.AuthCallback) {\n try {\n verifyCallback(callback);\n authCallback = callback;\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Verify that the provided callback is a function which returns a string\n * @param {Function} callback Callback used to fetch the newest header. Should return a string.\n * @throws {Error} If the callback is not a function or does not return a string.\n * @returns {void}\n */\nexport function verifyCallback(callback: Callbacks.AuthCallback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Userale auth callback must be a function\");\n }\n const result = callback();\n if (typeof result !== \"string\") {\n throw new Error(\"Userale auth callback must return a string\");\n }\n}\n\n/**\n * Resets the authCallback to null. Used for primarily for testing, but could be used\n * to remove the callback in production.\n * @returns {void}\n */\nexport function resetAuthCallback() {\n authCallback = null;\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Callbacks } from \"@/types\";\n\nexport let headersCallback: Callbacks.HeadersCallback | null = null;\n\n/**\n * Fetches the most up-to-date custom headers object from the headers callback\n * and updates the config object with the new value.\n * @param {Configuration} config Configuration object to be updated.\n * @param {Callbacks.HeadersCallback} headersCallback Callback used to fetch the newest headers.\n * @returns {void}\n */\nexport function updateCustomHeaders(config: Configuration) {\n if (headersCallback) {\n try {\n config.headers = headersCallback();\n } catch (e) {\n // We should emit the error, but otherwise continue as this could be a temporary issue\n // due to network connectivity or some logic inside the headersCallback which is the user's\n // responsibility.\n console.error(`Error encountered while setting the headers: ${e}`);\n }\n }\n}\n\n/**\n * Registers the provided callback to be used when updating the auth header.\n * @param {Callbacks.HeadersCallback} callback Callback used to fetch the newest headers. Should return an object.\n * @returns {boolean} Whether the operation succeeded.\n */\nexport function registerHeadersCallback(callback: Callbacks.HeadersCallback) {\n try {\n verifyCallback(callback);\n headersCallback = callback;\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Verify that the provided callback is a function which returns a string\n * @param {Callbacks.HeadersCallback} callback Callback used to fetch the newest header. Should return an object.\n * @throws {Error} If the callback is not a function or does not return a string.\n * @returns {void}\n */\nexport function verifyCallback(callback: Callbacks.HeadersCallback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Userale headers callback must be a function\");\n }\n const result = callback();\n if (typeof result !== \"object\") {\n throw new Error(\"Userale headers callback must return an object\");\n }\n for (const [key, value] of Object.entries(result)) {\n if (typeof key !== \"string\" || typeof value !== \"string\") {\n throw new Error(\n \"Userale header callback must return an object with string keys and values\",\n );\n }\n }\n}\n\n/**\n * Resets the authCallback to null. Used for primarily for testing, but could be used\n * to remove the callback in production.\n * @returns {void}\n */\nexport function resetHeadersCallback() {\n headersCallback = null;\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the 'License'); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Settings } from \"./types\";\n\nlet sessionId: string | null = null;\nlet httpSessionId: string | null = null;\n\n/**\n * Extracts the initial configuration settings from the\n * currently executing script tag.\n * @return {Object} The extracted configuration object\n */\nexport function getInitialSettings(): Settings.Config {\n if (\n typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope\n ) {\n const settings: Settings.Config = {\n authHeader: null,\n autostart: true,\n browserSessionId: null,\n custIndex: null,\n headers: null,\n httpSessionId: null,\n logCountThreshold: +5,\n logDetails: false,\n resolution: +500,\n sessionId: sessionId,\n time: (ts?: number) => (ts !== undefined ? ts : Date.now()),\n toolName: null,\n toolVersion: null,\n transmitInterval: +5000,\n url: \"http://localhost:8000\",\n useraleVersion: null,\n userFromParams: null,\n userId: null,\n };\n return settings;\n }\n\n if (sessionId === null) {\n sessionId = getsessionId(\n \"userAlesessionId\",\n \"session_\" + String(Date.now()),\n );\n }\n\n if (httpSessionId === null) {\n httpSessionId = getsessionId(\n \"userAleHttpSessionId\",\n generatehttpSessionId(),\n );\n }\n\n const script =\n document.currentScript ||\n (function () {\n const scripts = document.getElementsByTagName(\"script\");\n return scripts[scripts.length - 1];\n })();\n\n const get = script\n ? script.getAttribute.bind(script)\n : function () {\n return null;\n };\n const headers = get(\"data-headers\");\n const settings: Settings.Config = {\n authHeader: get(\"data-auth\") || null,\n autostart: get(\"data-autostart\") === \"false\" ? false : true,\n browserSessionId: null,\n custIndex: get(\"data-index\") || null,\n headers: headers ? JSON.parse(headers) : null,\n httpSessionId: httpSessionId,\n logCountThreshold: +(get(\"data-threshold\") || 5),\n logDetails: get(\"data-log-details\") === \"true\" ? true : false,\n resolution: +(get(\"data-resolution\") || 500),\n sessionId: get(\"data-session\") || sessionId,\n time: timeStampScale(document.createEvent(\"CustomEvent\")),\n toolName: get(\"data-tool\") || null,\n toolVersion: get(\"data-version\") || null,\n transmitInterval: +(get(\"data-interval\") || 5000),\n url: get(\"data-url\") || \"http://localhost:8000\",\n useraleVersion: get(\"data-userale-version\") || null,\n userFromParams: get(\"data-user-from-params\") || null,\n userId: get(\"data-user\") || null,\n };\n return settings;\n}\n\n/**\n * defines sessionId, stores it in sessionStorage, checks to see if there is a sessionId in\n * storage when script is started. This prevents events like 'submit', which refresh page data\n * from refreshing the current user session\n *\n */\nexport function getsessionId(sessionKey: string, value: any) {\n if (self.sessionStorage.getItem(sessionKey) === null) {\n self.sessionStorage.setItem(sessionKey, JSON.stringify(value));\n return value;\n }\n\n return JSON.parse(self.sessionStorage.getItem(sessionKey) || \"\");\n}\n\n/**\n * Creates a function to normalize the timestamp of the provided event.\n * @param {Event} e An event containing a timeStamp property.\n * @return {typeof timeStampScale~tsScaler} The timestamp normalizing function.\n */\nexport function timeStampScale(e: Event): Settings.TimeFunction {\n let tsScaler: Settings.TimeFunction;\n if (e.timeStamp && e.timeStamp > 0) {\n const delta = Date.now() - e.timeStamp;\n /**\n * Returns a timestamp depending on various browser quirks.\n * @param {?Number} ts A timestamp to use for normalization.\n * @return {Number} A normalized timestamp.\n */\n\n if (delta < 0) {\n tsScaler = function () {\n return e.timeStamp / 1000;\n };\n } else if (delta > e.timeStamp) {\n const navStart = performance.timeOrigin;\n tsScaler = function (ts) {\n return ts + navStart;\n };\n } else {\n tsScaler = function (ts) {\n return ts;\n };\n }\n } else {\n tsScaler = function () {\n return Date.now();\n };\n }\n\n return tsScaler;\n}\n\n/**\n * Creates a cryptographiclly random string to represent this http session.\n * @return {String} A random 32 digit hex string\n */\nfunction generatehttpSessionId(): string {\n // 32 digit hex -> 128 bits of info -> 2^64 ~= 10^19 sessions needed for 50% chance of collison\n const len = 32;\n const arr = new Uint8Array(len / 2);\n window.crypto.getRandomValues(arr);\n return Array.from(arr, (dec) => {\n return dec.toString(16).padStart(2, \"0\");\n }).join(\"\");\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInitialSettings } from \"@/getInitialSettings\";\nimport type { Settings } from \"@/types\";\n\n// Singleton Configuration class\nexport class Configuration {\n [key: string]: Settings.ConfigValueTypes;\n // Private static property to hold the singleton instance\n private static instance: Configuration | null = null;\n\n // Public properties corresponding to fields in the Config interface\n public autostart: boolean = false;\n public authHeader: Settings.AuthHeader = null;\n public browserSessionId: Settings.SessionId = null;\n public custIndex: Settings.CustomIndex = null;\n public headers: Settings.Headers = null;\n public httpSessionId: Settings.SessionId = null;\n public logCountThreshold: number = 0;\n public logDetails: boolean = false;\n public on: boolean = false;\n public resolution: number = 0;\n public sessionId: Settings.SessionId = null;\n public time: Settings.TimeFunction = () => Date.now();\n public toolName: Settings.ToolName = null;\n public toolVersion: Settings.Version = null;\n public transmitInterval: number = 0;\n public url: string = \"\";\n public userFromParams: Settings.UserFromParams = null;\n public useraleVersion: Settings.Version = null;\n public userId: Settings.UserId = null;\n public version: Settings.Version = null;\n public websocketsEnabled: boolean = false;\n\n // Private constructor to prevent external instantiation\n private constructor() {\n // Call the initialization method only if it's the first time instantiating\n if (Configuration.instance === null) {\n this.initialize();\n }\n }\n\n // Static method to get the singleton instance\n public static getInstance(): Configuration {\n if (Configuration.instance === null) {\n Configuration.instance = new Configuration();\n }\n return Configuration.instance;\n }\n\n private initialize(): void {\n const settings = getInitialSettings();\n this.update(settings);\n }\n\n /**\n * Resets the configuration to its initial state.\n */\n public reset(): void {\n this.initialize();\n }\n\n /**\n * Shallow merges a newConfig with the configuration class, updating it.\n * Retrieves/updates the userid if userFromParams is provided.\n * @param {Partial} newConfig Configuration object to merge into the current config.\n */\n public update(newConfig: Partial): void {\n Object.keys(newConfig).forEach((option) => {\n if (option === \"userFromParams\") {\n const userParamString = newConfig[option] as Settings.UserFromParams;\n const userId = userParamString\n ? Configuration.getUserIdFromParams(userParamString)\n : null;\n if (userId) {\n this[\"userId\"] = userId;\n }\n }\n const hasNewUserFromParams = newConfig[\"userFromParams\"];\n const willNullifyUserId =\n option === \"userId\" && newConfig[option] === null;\n if (willNullifyUserId && hasNewUserFromParams) {\n return;\n }\n\n const newOption = newConfig[option];\n if (newOption !== undefined) {\n this[option] = newOption;\n }\n });\n }\n\n /**\n * Attempts to extract the userid from the query parameters of the URL.\n * @param {string} param The name of the query parameter containing the userid.\n * @return {string | null} The extracted/decoded userid, or null if none is found.\n */\n public static getUserIdFromParams(param: string) {\n const userField = param;\n const regex = new RegExp(\"[?&]\" + userField + \"(=([^&#]*)|&|#|$)\");\n const results = window.location.href.match(regex);\n\n if (results && results[2]) {\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n }\n return null;\n }\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Logging } from \"@/types\";\nimport { updateAuthHeader, updateCustomHeaders } from \"@/utils\";\n\nlet sendIntervalId: string | number | NodeJS.Timeout | undefined;\nlet wsock: WebSocket;\n\n/**\n * Initializes the log queue processors.\n * @param {Array} logs Array of logs to append to.\n * @param {Configuration} config Configuration object to use when logging.\n */\nexport function initSender(logs: Array, config: Configuration) {\n if (sendIntervalId) {\n clearInterval(sendIntervalId);\n }\n\n const url = new URL(config.url);\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n wsock = new WebSocket(config.url);\n }\n\n sendIntervalId = sendOnInterval(logs, config);\n sendOnClose(logs, config);\n}\n\n/**\n * Checks the provided log array on an interval, flushing the logs\n * if the queue has reached the threshold specified by the provided config.\n * @param {Array} logs Array of logs to read from.\n * @param {Configuration} config Configuration singleton to be read from.\n * @return {Number} The newly created interval id.\n */\nexport function sendOnInterval(\n logs: Array,\n config: Configuration,\n): NodeJS.Timeout {\n return setInterval(function () {\n if (!config.on) {\n return;\n }\n\n if (logs.length >= config.logCountThreshold) {\n sendLogs(logs.slice(0), config, 0); // Send a copy\n logs.splice(0); // Clear array reference (no reassignment)\n }\n }, config.transmitInterval);\n}\n\n// /**\n// * Attempts to flush the remaining logs when the window is closed.\n// * @param {Array} logs Array of logs to be flushed.\n// * @param {Configuration} config Configuration singleton to be read from.\n// */\nexport function sendOnClose(\n logs: Array,\n config: Configuration,\n): void {\n self.addEventListener(\"pagehide\", function () {\n if (!config.on) {\n return;\n }\n\n if (logs.length > 0) {\n const url = new URL(config.url);\n\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n const data = JSON.stringify(logs);\n wsock.send(data);\n } else {\n const headers: HeadersInit = new Headers();\n headers.set(\"Content-Type\", \"application/json;charset=UTF-8\");\n\n if (config.authHeader) {\n headers.set(\"Authorization\", config.authHeader.toString());\n }\n\n fetch(config.url, {\n keepalive: true,\n method: \"POST\",\n headers: headers,\n body: JSON.stringify(logs),\n }).catch((error) => {\n console.error(error);\n });\n }\n logs.splice(0); // clear log queue\n }\n });\n}\n\n/**\n * Sends the provided array of logs to the specified url,\n * retrying the request up to the specified number of retries.\n * @param {Array} logs Array of logs to send.\n * @param {Configuration} config configuration singleton.\n * @param {Number} retries Maximum number of attempts to send the logs.\n */\nexport async function sendLogs(\n logs: Array,\n config: Configuration,\n retries: number,\n): Promise {\n const data = JSON.stringify(logs);\n const url = new URL(config.url);\n\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n wsock.send(data);\n return;\n }\n\n // Build headers\n const headers = new Headers({\n \"Content-Type\": \"application/json;charset=UTF-8\",\n });\n\n updateAuthHeader(config);\n if (config.authHeader) {\n const authHeaderValue =\n typeof config.authHeader === \"function\"\n ? config.authHeader()\n : config.authHeader;\n headers.set(\"Authorization\", authHeaderValue);\n }\n\n // Update custom headers last to allow them to over-write the defaults. This assumes\n // the user knows what they are doing and may want to over-write the defaults.\n updateCustomHeaders(config);\n if (config.headers) {\n for (const [header, value] of Object.entries(config.headers)) {\n headers.set(header, value);\n }\n }\n\n async function attemptSend(remainingRetries: number): Promise {\n try {\n const response = await fetch(config.url, {\n method: \"POST\",\n headers,\n body: data,\n });\n\n if (!response.ok) {\n if (remainingRetries > 0) {\n return attemptSend(remainingRetries - 1);\n } else {\n throw new Error(`Failed to send logs: ${response.statusText}`);\n }\n }\n } catch (error) {\n if (remainingRetries > 0) {\n return attemptSend(remainingRetries - 1);\n }\n throw error;\n }\n }\n\n return attemptSend(retries);\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineCustomDetails } from \"@/attachHandlers\";\nimport { registerAuthCallback } from \"@/utils\";\nimport {\n addCallbacks,\n removeCallbacks,\n packageLog,\n packageCustomLog,\n getSelector,\n buildPath,\n initPackager,\n} from \"@/packageLogs\";\nimport { version as userAleVersion } from \"../package.json\";\nimport { Configuration } from \"@/configure\";\nimport { attachHandlers } from \"@/attachHandlers\";\nimport { initSender } from \"@/sendLogs\";\n\nimport type { Settings, Logging } from \"@/types\";\n\nconst config = Configuration.getInstance();\nconst logs: Array = [];\n\nconst startLoadTimestamp = Date.now();\nlet endLoadTimestamp: number;\nself.onload = function () {\n endLoadTimestamp = Date.now();\n};\n\nexport let started = false;\nexport { defineCustomDetails as details } from \"@/attachHandlers\";\nexport { registerAuthCallback as registerAuthCallback } from \"@/utils\";\nexport {\n addCallbacks as addCallbacks,\n removeCallbacks as removeCallbacks,\n packageLog as packageLog,\n packageCustomLog as packageCustomLog,\n getSelector as getSelector,\n buildPath as buildPath,\n} from \"@/packageLogs\";\nexport type { Logging } from \"@/types\";\n\nconfig.update({\n useraleVersion: userAleVersion,\n});\ninitPackager(logs, config);\nif (config.autostart) {\n setup(config);\n}\n\n/**\n * Hooks the global event listener, and starts up the\n * logging interval.\n * @param {Configuration} config Configuration settings for the logger\n */\nfunction setup(config: Configuration) {\n if (!started) {\n setTimeout(function () {\n let state;\n try {\n state = document.readyState;\n } catch (error) {\n // Assume there is no DOM and this is a web worker context\n state = \"complete\";\n }\n\n if (\n config.autostart &&\n (state === \"interactive\" || state === \"complete\")\n ) {\n attachHandlers(config);\n initSender(logs, config);\n started = config.on = true;\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n packageCustomLog(\n {\n type: \"load\",\n details: { pageLoadTime: endLoadTimestamp - startLoadTimestamp },\n },\n () => ({}),\n false,\n );\n }\n } else {\n setup(config);\n }\n }, 100);\n }\n}\n\n// Export the Userale API\nexport const version = userAleVersion;\n\n/**\n * Used to start the logging process if the\n * autostart configuration option is set to false.\n */\nexport function start(): void {\n if (!started || config.autostart === false) {\n started = config.on = true;\n config.update({ autostart: true });\n }\n}\n\n/**\n * Halts the logging process. Logs will no longer be sent.\n */\nexport function stop(): void {\n started = config.on = false;\n config.update({ autostart: false });\n}\n\n/**\n * Updates the current configuration\n * object with the provided values.\n * @param {Partial} newConfig The configuration options to use.\n * @return {Settings.Config} Returns the updated configuration.\n */\nexport function options(\n newConfig: Partial | undefined,\n): Settings.Config {\n if (newConfig) {\n config.update(newConfig);\n }\n\n return config;\n}\n\n/**\n * Appends a log to the log queue.\n * @param {Logging.CustomLog} customLog The log to append.\n * @return {boolean} Whether the operation succeeded.\n */\nexport function log(customLog: Logging.CustomLog | undefined) {\n if (customLog) {\n logs.push(customLog);\n return true;\n } else {\n return false;\n }\n}\n\n// Only attach to window in IIFE builds\nif (typeof window !== \"undefined\") {\n (window as any).userale = {\n start,\n stop,\n options,\n log,\n version: userAleVersion,\n details: defineCustomDetails,\n registerAuthCallback,\n addCallbacks,\n removeCallbacks,\n packageLog,\n packageCustomLog,\n getSelector,\n buildPath,\n };\n}\n"],"mappings":"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","names":["descriptors","log","config","options","config","config","settings","logs","config","config","logs","version"]} \ No newline at end of file diff --git a/products/userale/packages/flagon-userale/build/main.mjs b/products/userale/packages/flagon-userale/build/main.mjs index c61e588..3fd60b0 100644 --- a/products/userale/packages/flagon-userale/build/main.mjs +++ b/products/userale/packages/flagon-userale/build/main.mjs @@ -915,4 +915,36 @@ export { stop, version2 as version }; +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the 'License'); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ //# sourceMappingURL=main.mjs.map \ No newline at end of file diff --git a/products/userale/packages/flagon-userale/build/main.mjs.map b/products/userale/packages/flagon-userale/build/main.mjs.map index 2c72769..887b699 100644 --- a/products/userale/packages/flagon-userale/build/main.mjs.map +++ b/products/userale/packages/flagon-userale/build/main.mjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/packageLogs.ts","../src/attachHandlers.ts","../src/utils/auth/index.ts","../src/utils/headers/index.ts","../src/getInitialSettings.ts","../src/configure.ts","../src/sendLogs.ts","../src/main.ts"],"sourcesContent":["/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Callbacks, Logging } from \"@/types\";\nimport { Configuration } from \"@/configure\";\n\nexport let logs: Array;\nlet config: Configuration;\n\n// Interval Logging Globals\nlet intervalId: string | null;\nlet intervalType: string | null;\nlet intervalPath: string[] | null;\nlet intervalTimer: number | null;\nlet intervalCounter: number | null;\nlet intervalLog: Logging.Log | null;\n\nexport const filterHandler: CallableFunction | null = null;\nexport const mapHandler: CallableFunction | null = null;\nexport let cbHandlers: Callbacks.CallbackMap = {};\n\n/**\n * Adds named callbacks to be executed when logging.\n * @param {Object } newCallbacks An object containing named callback functions.\n */\nexport function addCallbacks(\n ...newCallbacks: Record[]\n) {\n newCallbacks.forEach((source) => {\n let descriptors: { [key in string | symbol]: any } = {};\n\n descriptors = Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, descriptors);\n\n Object.getOwnPropertySymbols(source).forEach((sym) => {\n const descriptor = Object.getOwnPropertyDescriptor(source, sym);\n if (descriptor?.enumerable) {\n descriptors[sym] = descriptor;\n }\n });\n Object.defineProperties(cbHandlers, descriptors);\n });\n return cbHandlers;\n}\n\n/**\n * Removes callbacks by name.\n * @param {String[]} targetKeys A list of names of functions to remove.\n */\nexport function removeCallbacks(targetKeys: string[]) {\n targetKeys.forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(cbHandlers, key)) {\n delete cbHandlers[key];\n }\n });\n}\n\n/**\n * Assigns the config and log container to be used by the logging functions.\n * @param {Array} newLogs Log container.\n * @param {Object} newConfig Configuration to use while logging.\n */\nexport function initPackager(\n newLogs: Array,\n newConfig: Configuration,\n) {\n logs = newLogs;\n config = newConfig;\n cbHandlers = {};\n intervalId = null;\n intervalType = null;\n intervalPath = null;\n intervalTimer = null;\n intervalCounter = 0;\n intervalLog = null;\n}\n\n/**\n * Transforms the provided HTML event into a log and appends it to the log queue.\n * @param {Event} e The event to be logged.\n * @param {Function} detailFcn The function to extract additional log parameters from the event.\n * @return {boolean} Whether the event was logged.\n */\nexport function packageLog(\n e: Event,\n detailFcn?: Logging.DynamicDetailFunction | null,\n) {\n if (!config.on) {\n return false;\n }\n\n let details = null;\n if (detailFcn) {\n details = detailFcn(e);\n }\n\n const timeFields = extractTimeFields(\n e.timeStamp && e.timeStamp > 0 ? config.time(e.timeStamp) : Date.now(),\n );\n\n let log: Logging.Log = {\n target: e.target ? getSelector(e.target) : null,\n path: buildPath(e),\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n clientTime: timeFields.milli,\n microTime: timeFields.micro,\n location: getLocation(e),\n scrnRes: getScreenRes(),\n type: e.type,\n logType: \"raw\",\n userAction: true,\n details: details,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n attributes: buildAttrs(e),\n style: buildCSS(e),\n };\n\n if (typeof filterHandler === \"function\" && !filterHandler(log)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n log = mapHandler(log, e);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n log = func(log, e);\n if (!log) {\n return false;\n }\n }\n }\n\n logs.push(log);\n return true;\n}\n\n/**\n * Packages the provided customLog to include standard meta data and appends it to the log queue.\n * @param {Logging.CustomLog} customLog The behavior to be logged.\n * @param {Logging.DynamicDetailFunction} detailFcn The function to extract additional log parameters from the event.\n * @param {boolean} userAction Indicates user behavior (true) or system behavior (false)\n * @return {boolean} Whether the event was logged.\n */\nexport function packageCustomLog(\n customLog: Logging.CustomLog,\n detailFcn: Logging.DynamicDetailFunction | Logging.StaticDetailFunction,\n userAction: boolean,\n): boolean {\n if (!config.on) {\n return false;\n }\n\n let details = null;\n if (detailFcn.length === 0) {\n // In the case of a union, the type checker will default to the more stringent\n // type, i.e. the DetailFunction that expects an argument for safety purposes.\n // To avoid this, we must explicitly check the type by asserting it receives\n // no arguments (detailFcn.length === 0) and then cast it to the\n // StaticDetailFunction type.\n const staticDetailFcn = detailFcn as Logging.StaticDetailFunction;\n details = staticDetailFcn();\n }\n\n const metaData = {\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n clientTime: Date.now(),\n scrnRes: getScreenRes(),\n logType: \"custom\",\n userAction: userAction,\n details: details,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n };\n\n let log = Object.assign(metaData, customLog);\n\n if (typeof filterHandler === \"function\" && !filterHandler(log)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n log = mapHandler(log);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n log = func(log, null);\n if (!log) {\n return false;\n }\n }\n }\n\n logs.push(log);\n\n return true;\n}\n\n/**\n * Extract the millisecond and microsecond portions of a timestamp.\n * @param {Number} timeStamp The timestamp to split into millisecond and microsecond fields.\n * @return {Object} An object containing the millisecond\n * and microsecond portions of the timestamp.\n */\nexport function extractTimeFields(timeStamp: number) {\n return {\n milli: Math.floor(timeStamp),\n micro: Number((timeStamp % 1).toFixed(3)),\n };\n}\n\n/**\n * Track intervals and gather details about it.\n * @param {Object} e\n * @return boolean\n */\nexport function packageIntervalLog(e: Event) {\n try {\n const target = e.target ? getSelector(e.target) : null;\n const path = buildPath(e);\n const type = e.type;\n const timestamp = Math.floor(\n e.timeStamp && e.timeStamp > 0 ? config.time(e.timeStamp) : Date.now(),\n );\n\n // Init - this should only happen once on initialization\n if (intervalId == null) {\n intervalId = target;\n intervalType = type;\n intervalPath = path;\n intervalTimer = timestamp;\n intervalCounter = 0;\n }\n\n if ((intervalId !== target || intervalType !== type) && intervalTimer) {\n // When to create log? On transition end\n // @todo Possible for intervalLog to not be pushed in the event the interval never ends...\n\n intervalLog = {\n target: intervalId,\n path: intervalPath,\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n count: intervalCounter,\n duration: timestamp - intervalTimer, // microseconds\n startTime: intervalTimer,\n endTime: timestamp,\n type: intervalType,\n logType: \"interval\",\n targetChange: intervalId !== target,\n typeChange: intervalType !== type,\n userAction: false,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n };\n\n if (typeof filterHandler === \"function\" && !filterHandler(intervalLog)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n intervalLog = mapHandler(intervalLog, e);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n intervalLog = func(intervalLog, null);\n if (!intervalLog) {\n return false;\n }\n }\n }\n\n if (intervalLog) logs.push(intervalLog);\n\n // Reset\n intervalId = target;\n intervalType = type;\n intervalPath = path;\n intervalTimer = timestamp;\n intervalCounter = 0;\n }\n\n // Interval is still occuring, just update counter\n if (intervalId == target && intervalType == type && intervalCounter) {\n intervalCounter = intervalCounter + 1;\n }\n\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Extracts coordinate information from the event\n * depending on a few browser quirks.\n * @param {Event} e The event to extract coordinate information from.\n * @return {Object} An object containing nullable x and y coordinates for the event.\n */\nexport function getLocation(e: Event) {\n if (e instanceof MouseEvent) {\n if (e.pageX != null) {\n return { x: e.pageX, y: e.pageY };\n } else if (e.clientX != null) {\n return {\n x: document.documentElement.scrollLeft + e.clientX,\n y: document.documentElement.scrollTop + e.clientY,\n };\n }\n } else {\n return { x: null, y: null };\n }\n}\n\n/**\n * Extracts innerWidth and innerHeight to provide estimates of screen resolution\n * @return {Object} An object containing the innerWidth and InnerHeight\n */\nexport function getScreenRes() {\n return { width: self.innerWidth, height: self.innerHeight };\n}\n\n/**\n * Builds a string CSS selector from the provided element\n * @param {EventTarget} ele The element from which the selector is built.\n * @return {string} The CSS selector for the element, or Unknown if it can't be determined.\n */\nexport function getSelector(ele: EventTarget) {\n if (ele instanceof HTMLElement || ele instanceof Element) {\n if (ele.localName) {\n return (\n ele.localName +\n (ele.id ? \"#\" + ele.id : \"\") +\n (ele.className ? \".\" + ele.className : \"\")\n );\n } else if (ele.nodeName) {\n return (\n ele.nodeName +\n (ele.id ? \"#\" + ele.id : \"\") +\n (ele.className ? \".\" + ele.className : \"\")\n );\n }\n } else if (ele instanceof Document) {\n return \"#document\";\n } else if (ele === globalThis) {\n return \"Window\";\n }\n return \"Unknown\";\n}\n\n/**\n * Builds an array of elements from the provided event target, to the root element.\n * @param {Event} e Event from which the path should be built.\n * @return {HTMLElement[]} Array of elements, starting at the event target, ending at the root element.\n */\nexport function buildPath(e: Event) {\n const path = e.composedPath();\n return selectorizePath(path);\n}\n\n/**\n * Builds a CSS selector path from the provided list of elements.\n * @param {EventTarget[]} path Array of HTML Elements from which the path should be built.\n * @return {string[]} Array of string CSS selectors.\n */\nexport function selectorizePath(path: EventTarget[]) {\n let i = 0;\n let pathEle;\n const pathSelectors: string[] = [];\n while ((pathEle = path[i])) {\n pathSelectors.push(getSelector(pathEle));\n ++i;\n pathEle = path[i];\n }\n return pathSelectors;\n}\n\n/**\n * Builds an object containing attributes of an element.\n * Attempts to parse all attribute values as JSON text.\n * @param {Event} e Event from which the target element's attributes should be extracted.\n * @return {Record} Object with element attributes as key-value pairs.\n */\nexport function buildAttrs(e: Event): Record {\n const attributes: Record = {};\n const attributeBlackList = [\"style\"];\n\n if (e.target && e.target instanceof Element) {\n for (const attr of e.target.attributes) {\n if (attributeBlackList.includes(attr.name)) continue;\n let val: any = attr.value;\n try {\n val = JSON.parse(val);\n } catch {\n // Ignore parsing errors, fallback to raw string value\n }\n attributes[attr.name] = val;\n }\n }\n\n return attributes;\n}\n\n/**\n * Builds an object containing all CSS properties of an element.\n * @param {Event} e Event from which the target element's properties should be extracted.\n * @return {Record} Object with all CSS properties as key-value pairs.\n */\nexport function buildCSS(e: Event): Record {\n const properties: Record = {};\n if (e.target && e.target instanceof HTMLElement) {\n const styleObj = e.target.style;\n for (let i = 0; i < styleObj.length; i++) {\n const prop = styleObj[i];\n properties[prop] = styleObj.getPropertyValue(prop);\n }\n }\n return properties;\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { packageLog, packageIntervalLog } from \"@/packageLogs\";\nimport { Events, Logging, Settings } from \"@/types\";\nimport { Configuration } from \"@/configure\";\n\n//@todo: Investigate drag events and their behavior\nlet events: Events.EventDetailsMap;\nlet bufferBools: Events.EventBoolMap;\nlet bufferedEvents: Events.EventDetailsMap;\nlet refreshEvents: Events.EventDetailsMap;\nconst intervalEvents: Array = [\n \"click\",\n \"focus\",\n \"blur\",\n \"input\",\n \"change\",\n \"mouseover\",\n \"submit\",\n];\nconst windowEvents: Array = [\"load\", \"blur\", \"focus\"];\n\n/**\n * Maps a MouseEvent to an object containing useful information.\n * @param {MouseEvent} e Event to extract data from\n */\nexport function extractMouseDetails(e: MouseEvent) {\n return {\n clicks: e.detail,\n ctrl: e.ctrlKey,\n alt: e.altKey,\n shift: e.shiftKey,\n meta: e.metaKey,\n // 'text' : e.target.innerHTML\n };\n}\n\n/** Maps a KeyboardEvent to an object containing useful infromation\n * @param {KeyboardEvent} e Event to extract data from\n */\nexport function extractKeyboardDetails(e: KeyboardEvent) {\n return {\n key: e.key,\n code: e.code,\n ctrl: e.ctrlKey,\n alt: e.altKey,\n shift: e.shiftKey,\n meta: e.metaKey,\n };\n}\n\n/**\n * Maps an InputEvent to an object containing useful information.\n * @param {InputEvent} e Event to extract data from\n */\nexport function extractInputDetails(e: InputEvent) {\n return {\n value: (e.target as HTMLInputElement).value,\n };\n}\n\n/**\n * Maps a ChangeEvent to an object containing useful information.\n * @param {Events.ChangeEvent} e Event to extract data from\n */\nexport function extractChangeDetails(e: Events.ChangeEvent) {\n return {\n value: e.target.value,\n };\n}\n\n/**\n * Maps a WheelEvent to an object containing useful information.\n * @param {WheelEvent} e Event to extract data from\n */\nexport function extractWheelDetails(e: WheelEvent) {\n return {\n x: e.deltaX,\n y: e.deltaY,\n z: e.deltaZ,\n };\n}\n\n/**\n * Maps a ScrollEvent to an object containing useful information.\n */\nexport function extractScrollDetails() {\n return {\n x: window.scrollX,\n y: window.scrollY,\n };\n}\n\n/**\n * Maps a ResizeEvent to an object containing useful information.\n */\nexport function extractResizeDetails() {\n return {\n width: window.outerWidth,\n height: window.outerHeight,\n };\n}\n\n/**\n * Defines the way information is extracted from various events.\n * Also defines which events we will listen to.\n * @param {Settings.Config} config Configuration object to read from.\n */\nexport function defineDetails(config: Settings.DefaultConfig): void {\n // Events list\n // Keys are event types\n // Values are functions that return details object if applicable\n events = {\n click: extractMouseDetails,\n dblclick: extractMouseDetails,\n mousedown: extractMouseDetails,\n mouseup: extractMouseDetails,\n focus: null,\n blur: null,\n input: config.logDetails ? extractKeyboardDetails : null,\n change: config.logDetails ? extractChangeDetails : null,\n dragstart: null,\n dragend: null,\n drag: null,\n drop: null,\n keydown: config.logDetails ? extractKeyboardDetails : null,\n mouseover: null,\n };\n\n bufferBools = {};\n bufferedEvents = {\n wheel: extractWheelDetails,\n scroll: extractScrollDetails,\n resize: extractResizeDetails,\n };\n\n refreshEvents = {\n submit: null,\n };\n}\n\n/**\n * Defines the way information is extracted from various events.\n * Also defines which events we will listen to.\n * @param {Settings.Config} options UserALE Configuration object to read from.\n * @param {Events.AllowedEvents} type of html event (e.g., 'click', 'mouseover', etc.), such as passed to addEventListener methods.\n */\nexport function defineCustomDetails(\n options: Settings.DefaultConfig,\n type: Events.AllowedEvents,\n): Logging.DynamicDetailFunction | null | undefined {\n // Events list\n // Keys are event types\n // Values are functions that return details object if applicable\n const eventType: Events.EventDetailsMap = {\n click: extractMouseDetails,\n dblclick: extractMouseDetails,\n mousedown: extractMouseDetails,\n mouseup: extractMouseDetails,\n focus: null,\n blur: null,\n load: null,\n input: options.logDetails ? extractKeyboardDetails : null,\n change: options.logDetails ? extractChangeDetails : null,\n dragstart: null,\n dragend: null,\n drag: null,\n drop: null,\n keydown: options.logDetails ? extractKeyboardDetails : null,\n mouseover: null,\n wheel: extractWheelDetails,\n scroll: extractScrollDetails,\n resize: extractResizeDetails,\n submit: null,\n };\n return eventType[type];\n}\n\n/**\n * Hooks the event handlers for each event type of interest.\n * @param {Configuration} config Configuration singleton to use.\n * @return {boolean} Whether the operation succeeded\n */\nexport function attachHandlers(config: Configuration): boolean {\n try {\n defineDetails(config);\n\n (Object.keys(events) as Events.AllowedEvents[]).forEach(function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageLog(e, events[ev]);\n },\n true,\n );\n });\n\n intervalEvents.forEach(function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageIntervalLog(e);\n },\n true,\n );\n });\n\n (Object.keys(bufferedEvents) as Events.BufferedEvents[]).forEach(\n function (ev) {\n bufferBools[ev] = true;\n\n self.addEventListener(\n ev,\n function (e) {\n if (bufferBools[ev]) {\n bufferBools[ev] = false;\n packageLog(e, bufferedEvents[ev]);\n setTimeout(function () {\n bufferBools[ev] = true;\n }, config.resolution);\n }\n },\n true,\n );\n },\n );\n\n (Object.keys(refreshEvents) as Events.RefreshEvents[]).forEach(\n function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageLog(e, events[ev]);\n },\n true,\n );\n },\n );\n\n windowEvents.forEach(function (ev) {\n self.addEventListener(\n ev,\n function (e) {\n packageLog(e, function () {\n return { window: true };\n });\n },\n true,\n );\n });\n\n return true;\n } catch {\n return false;\n }\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Callbacks } from \"@/types\";\n\nexport let authCallback: Callbacks.AuthCallback | null = null;\n\n/**\n * Fetches the most up-to-date auth header string from the auth callback\n * and updates the config object with the new value.\n * @param {Configuration} config Configuration object to be updated.\n * @param {Function} authCallback Callback used to fetch the newest header.\n * @returns {void}\n */\nexport function updateAuthHeader(config: Configuration) {\n if (authCallback) {\n try {\n config.authHeader = authCallback();\n } catch (e) {\n // We should emit the error, but otherwise continue as this could be a temporary issue\n // due to network connectivity or some logic inside the authCallback which is the user's\n // responsibility.\n console.error(`Error encountered while setting the auth header: ${e}`);\n }\n }\n}\n\n/**\n * Registers the provided callback to be used when updating the auth header.\n * @param {Callbacks.AuthCallback} callback Callback used to fetch the newest header. Should return a string.\n * @returns {boolean} Whether the operation succeeded.\n */\nexport function registerAuthCallback(callback: Callbacks.AuthCallback) {\n try {\n verifyCallback(callback);\n authCallback = callback;\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Verify that the provided callback is a function which returns a string\n * @param {Function} callback Callback used to fetch the newest header. Should return a string.\n * @throws {Error} If the callback is not a function or does not return a string.\n * @returns {void}\n */\nexport function verifyCallback(callback: Callbacks.AuthCallback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Userale auth callback must be a function\");\n }\n const result = callback();\n if (typeof result !== \"string\") {\n throw new Error(\"Userale auth callback must return a string\");\n }\n}\n\n/**\n * Resets the authCallback to null. Used for primarily for testing, but could be used\n * to remove the callback in production.\n * @returns {void}\n */\nexport function resetAuthCallback() {\n authCallback = null;\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Callbacks } from \"@/types\";\n\nexport let headersCallback: Callbacks.HeadersCallback | null = null;\n\n/**\n * Fetches the most up-to-date custom headers object from the headers callback\n * and updates the config object with the new value.\n * @param {Configuration} config Configuration object to be updated.\n * @param {Callbacks.HeadersCallback} headersCallback Callback used to fetch the newest headers.\n * @returns {void}\n */\nexport function updateCustomHeaders(config: Configuration) {\n if (headersCallback) {\n try {\n config.headers = headersCallback();\n } catch (e) {\n // We should emit the error, but otherwise continue as this could be a temporary issue\n // due to network connectivity or some logic inside the headersCallback which is the user's\n // responsibility.\n console.error(`Error encountered while setting the headers: ${e}`);\n }\n }\n}\n\n/**\n * Registers the provided callback to be used when updating the auth header.\n * @param {Callbacks.HeadersCallback} callback Callback used to fetch the newest headers. Should return an object.\n * @returns {boolean} Whether the operation succeeded.\n */\nexport function registerHeadersCallback(callback: Callbacks.HeadersCallback) {\n try {\n verifyCallback(callback);\n headersCallback = callback;\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Verify that the provided callback is a function which returns a string\n * @param {Callbacks.HeadersCallback} callback Callback used to fetch the newest header. Should return an object.\n * @throws {Error} If the callback is not a function or does not return a string.\n * @returns {void}\n */\nexport function verifyCallback(callback: Callbacks.HeadersCallback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Userale headers callback must be a function\");\n }\n const result = callback();\n if (typeof result !== \"object\") {\n throw new Error(\"Userale headers callback must return an object\");\n }\n for (const [key, value] of Object.entries(result)) {\n if (typeof key !== \"string\" || typeof value !== \"string\") {\n throw new Error(\n \"Userale header callback must return an object with string keys and values\",\n );\n }\n }\n}\n\n/**\n * Resets the authCallback to null. Used for primarily for testing, but could be used\n * to remove the callback in production.\n * @returns {void}\n */\nexport function resetHeadersCallback() {\n headersCallback = null;\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the 'License'); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Settings } from \"./types\";\n\nlet sessionId: string | null = null;\nlet httpSessionId: string | null = null;\n\n/**\n * Extracts the initial configuration settings from the\n * currently executing script tag.\n * @return {Object} The extracted configuration object\n */\nexport function getInitialSettings(): Settings.Config {\n if (\n typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope\n ) {\n const settings: Settings.Config = {\n authHeader: null,\n autostart: true,\n browserSessionId: null,\n custIndex: null,\n headers: null,\n httpSessionId: null,\n logCountThreshold: +5,\n logDetails: false,\n resolution: +500,\n sessionId: sessionId,\n time: (ts?: number) => (ts !== undefined ? ts : Date.now()),\n toolName: null,\n toolVersion: null,\n transmitInterval: +5000,\n url: \"http://localhost:8000\",\n useraleVersion: null,\n userFromParams: null,\n userId: null,\n };\n return settings;\n }\n\n if (sessionId === null) {\n sessionId = getsessionId(\n \"userAlesessionId\",\n \"session_\" + String(Date.now()),\n );\n }\n\n if (httpSessionId === null) {\n httpSessionId = getsessionId(\n \"userAleHttpSessionId\",\n generatehttpSessionId(),\n );\n }\n\n const script =\n document.currentScript ||\n (function () {\n const scripts = document.getElementsByTagName(\"script\");\n return scripts[scripts.length - 1];\n })();\n\n const get = script\n ? script.getAttribute.bind(script)\n : function () {\n return null;\n };\n const headers = get(\"data-headers\");\n const settings: Settings.Config = {\n authHeader: get(\"data-auth\") || null,\n autostart: get(\"data-autostart\") === \"false\" ? false : true,\n browserSessionId: null,\n custIndex: get(\"data-index\") || null,\n headers: headers ? JSON.parse(headers) : null,\n httpSessionId: httpSessionId,\n logCountThreshold: +(get(\"data-threshold\") || 5),\n logDetails: get(\"data-log-details\") === \"true\" ? true : false,\n resolution: +(get(\"data-resolution\") || 500),\n sessionId: get(\"data-session\") || sessionId,\n time: timeStampScale(document.createEvent(\"CustomEvent\")),\n toolName: get(\"data-tool\") || null,\n toolVersion: get(\"data-version\") || null,\n transmitInterval: +(get(\"data-interval\") || 5000),\n url: get(\"data-url\") || \"http://localhost:8000\",\n useraleVersion: get(\"data-userale-version\") || null,\n userFromParams: get(\"data-user-from-params\") || null,\n userId: get(\"data-user\") || null,\n };\n return settings;\n}\n\n/**\n * defines sessionId, stores it in sessionStorage, checks to see if there is a sessionId in\n * storage when script is started. This prevents events like 'submit', which refresh page data\n * from refreshing the current user session\n *\n */\nexport function getsessionId(sessionKey: string, value: any) {\n if (self.sessionStorage.getItem(sessionKey) === null) {\n self.sessionStorage.setItem(sessionKey, JSON.stringify(value));\n return value;\n }\n\n return JSON.parse(self.sessionStorage.getItem(sessionKey) || \"\");\n}\n\n/**\n * Creates a function to normalize the timestamp of the provided event.\n * @param {Event} e An event containing a timeStamp property.\n * @return {typeof timeStampScale~tsScaler} The timestamp normalizing function.\n */\nexport function timeStampScale(e: Event): Settings.TimeFunction {\n let tsScaler: Settings.TimeFunction;\n if (e.timeStamp && e.timeStamp > 0) {\n const delta = Date.now() - e.timeStamp;\n /**\n * Returns a timestamp depending on various browser quirks.\n * @param {?Number} ts A timestamp to use for normalization.\n * @return {Number} A normalized timestamp.\n */\n\n if (delta < 0) {\n tsScaler = function () {\n return e.timeStamp / 1000;\n };\n } else if (delta > e.timeStamp) {\n const navStart = performance.timeOrigin;\n tsScaler = function (ts) {\n return ts + navStart;\n };\n } else {\n tsScaler = function (ts) {\n return ts;\n };\n }\n } else {\n tsScaler = function () {\n return Date.now();\n };\n }\n\n return tsScaler;\n}\n\n/**\n * Creates a cryptographiclly random string to represent this http session.\n * @return {String} A random 32 digit hex string\n */\nfunction generatehttpSessionId(): string {\n // 32 digit hex -> 128 bits of info -> 2^64 ~= 10^19 sessions needed for 50% chance of collison\n const len = 32;\n const arr = new Uint8Array(len / 2);\n window.crypto.getRandomValues(arr);\n return Array.from(arr, (dec) => {\n return dec.toString(16).padStart(2, \"0\");\n }).join(\"\");\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInitialSettings } from \"@/getInitialSettings\";\nimport type { Settings } from \"@/types\";\n\n// Singleton Configuration class\nexport class Configuration {\n [key: string]: Settings.ConfigValueTypes;\n // Private static property to hold the singleton instance\n private static instance: Configuration | null = null;\n\n // Public properties corresponding to fields in the Config interface\n public autostart: boolean = false;\n public authHeader: Settings.AuthHeader = null;\n public browserSessionId: Settings.SessionId = null;\n public custIndex: Settings.CustomIndex = null;\n public headers: Settings.Headers = null;\n public httpSessionId: Settings.SessionId = null;\n public logCountThreshold: number = 0;\n public logDetails: boolean = false;\n public on: boolean = false;\n public resolution: number = 0;\n public sessionId: Settings.SessionId = null;\n public time: Settings.TimeFunction = () => Date.now();\n public toolName: Settings.ToolName = null;\n public toolVersion: Settings.Version = null;\n public transmitInterval: number = 0;\n public url: string = \"\";\n public userFromParams: Settings.UserFromParams = null;\n public useraleVersion: Settings.Version = null;\n public userId: Settings.UserId = null;\n public version: Settings.Version = null;\n public websocketsEnabled: boolean = false;\n\n // Private constructor to prevent external instantiation\n private constructor() {\n // Call the initialization method only if it's the first time instantiating\n if (Configuration.instance === null) {\n this.initialize();\n }\n }\n\n // Static method to get the singleton instance\n public static getInstance(): Configuration {\n if (Configuration.instance === null) {\n Configuration.instance = new Configuration();\n }\n return Configuration.instance;\n }\n\n private initialize(): void {\n const settings = getInitialSettings();\n this.update(settings);\n }\n\n /**\n * Resets the configuration to its initial state.\n */\n public reset(): void {\n this.initialize();\n }\n\n /**\n * Shallow merges a newConfig with the configuration class, updating it.\n * Retrieves/updates the userid if userFromParams is provided.\n * @param {Partial} newConfig Configuration object to merge into the current config.\n */\n public update(newConfig: Partial): void {\n Object.keys(newConfig).forEach((option) => {\n if (option === \"userFromParams\") {\n const userParamString = newConfig[option] as Settings.UserFromParams;\n const userId = userParamString\n ? Configuration.getUserIdFromParams(userParamString)\n : null;\n if (userId) {\n this[\"userId\"] = userId;\n }\n }\n const hasNewUserFromParams = newConfig[\"userFromParams\"];\n const willNullifyUserId =\n option === \"userId\" && newConfig[option] === null;\n if (willNullifyUserId && hasNewUserFromParams) {\n return;\n }\n\n const newOption = newConfig[option];\n if (newOption !== undefined) {\n this[option] = newOption;\n }\n });\n }\n\n /**\n * Attempts to extract the userid from the query parameters of the URL.\n * @param {string} param The name of the query parameter containing the userid.\n * @return {string | null} The extracted/decoded userid, or null if none is found.\n */\n public static getUserIdFromParams(param: string) {\n const userField = param;\n const regex = new RegExp(\"[?&]\" + userField + \"(=([^&#]*)|&|#|$)\");\n const results = window.location.href.match(regex);\n\n if (results && results[2]) {\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n }\n return null;\n }\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Logging } from \"@/types\";\nimport { updateAuthHeader, updateCustomHeaders } from \"@/utils\";\n\nlet sendIntervalId: string | number | NodeJS.Timeout | undefined;\nlet wsock: WebSocket;\n\n/**\n * Initializes the log queue processors.\n * @param {Array} logs Array of logs to append to.\n * @param {Configuration} config Configuration object to use when logging.\n */\nexport function initSender(logs: Array, config: Configuration) {\n if (sendIntervalId) {\n clearInterval(sendIntervalId);\n }\n\n const url = new URL(config.url);\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n wsock = new WebSocket(config.url);\n }\n\n sendIntervalId = sendOnInterval(logs, config);\n sendOnClose(logs, config);\n}\n\n/**\n * Checks the provided log array on an interval, flushing the logs\n * if the queue has reached the threshold specified by the provided config.\n * @param {Array} logs Array of logs to read from.\n * @param {Configuration} config Configuration singleton to be read from.\n * @return {Number} The newly created interval id.\n */\nexport function sendOnInterval(\n logs: Array,\n config: Configuration,\n): NodeJS.Timeout {\n return setInterval(function () {\n if (!config.on) {\n return;\n }\n\n if (logs.length >= config.logCountThreshold) {\n sendLogs(logs.slice(0), config, 0); // Send a copy\n logs.splice(0); // Clear array reference (no reassignment)\n }\n }, config.transmitInterval);\n}\n\n// /**\n// * Attempts to flush the remaining logs when the window is closed.\n// * @param {Array} logs Array of logs to be flushed.\n// * @param {Configuration} config Configuration singleton to be read from.\n// */\nexport function sendOnClose(\n logs: Array,\n config: Configuration,\n): void {\n self.addEventListener(\"pagehide\", function () {\n if (!config.on) {\n return;\n }\n\n if (logs.length > 0) {\n const url = new URL(config.url);\n\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n const data = JSON.stringify(logs);\n wsock.send(data);\n } else {\n const headers: HeadersInit = new Headers();\n headers.set(\"Content-Type\", \"application/json;charset=UTF-8\");\n\n if (config.authHeader) {\n headers.set(\"Authorization\", config.authHeader.toString());\n }\n\n fetch(config.url, {\n keepalive: true,\n method: \"POST\",\n headers: headers,\n body: JSON.stringify(logs),\n }).catch((error) => {\n console.error(error);\n });\n }\n logs.splice(0); // clear log queue\n }\n });\n}\n\n/**\n * Sends the provided array of logs to the specified url,\n * retrying the request up to the specified number of retries.\n * @param {Array} logs Array of logs to send.\n * @param {Configuration} config configuration singleton.\n * @param {Number} retries Maximum number of attempts to send the logs.\n */\nexport async function sendLogs(\n logs: Array,\n config: Configuration,\n retries: number,\n): Promise {\n const data = JSON.stringify(logs);\n const url = new URL(config.url);\n\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n wsock.send(data);\n return;\n }\n\n // Build headers\n const headers = new Headers({\n \"Content-Type\": \"application/json;charset=UTF-8\",\n });\n\n updateAuthHeader(config);\n if (config.authHeader) {\n const authHeaderValue =\n typeof config.authHeader === \"function\"\n ? config.authHeader()\n : config.authHeader;\n headers.set(\"Authorization\", authHeaderValue);\n }\n\n // Update custom headers last to allow them to over-write the defaults. This assumes\n // the user knows what they are doing and may want to over-write the defaults.\n updateCustomHeaders(config);\n if (config.headers) {\n for (const [header, value] of Object.entries(config.headers)) {\n headers.set(header, value);\n }\n }\n\n async function attemptSend(remainingRetries: number): Promise {\n try {\n const response = await fetch(config.url, {\n method: \"POST\",\n headers,\n body: data,\n });\n\n if (!response.ok) {\n if (remainingRetries > 0) {\n return attemptSend(remainingRetries - 1);\n } else {\n throw new Error(`Failed to send logs: ${response.statusText}`);\n }\n }\n } catch (error) {\n if (remainingRetries > 0) {\n return attemptSend(remainingRetries - 1);\n }\n throw error;\n }\n }\n\n return attemptSend(retries);\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineCustomDetails } from \"@/attachHandlers\";\nimport { registerAuthCallback } from \"@/utils\";\nimport {\n addCallbacks,\n removeCallbacks,\n packageLog,\n packageCustomLog,\n getSelector,\n buildPath,\n initPackager,\n} from \"@/packageLogs\";\nimport { version as userAleVersion } from \"../package.json\";\nimport { Configuration } from \"@/configure\";\nimport { attachHandlers } from \"@/attachHandlers\";\nimport { initSender } from \"@/sendLogs\";\n\nimport type { Settings, Logging } from \"@/types\";\n\nconst config = Configuration.getInstance();\nconst logs: Array = [];\n\nconst startLoadTimestamp = Date.now();\nlet endLoadTimestamp: number;\nself.onload = function () {\n endLoadTimestamp = Date.now();\n};\n\nexport let started = false;\nexport { defineCustomDetails as details } from \"@/attachHandlers\";\nexport { registerAuthCallback as registerAuthCallback } from \"@/utils\";\nexport {\n addCallbacks as addCallbacks,\n removeCallbacks as removeCallbacks,\n packageLog as packageLog,\n packageCustomLog as packageCustomLog,\n getSelector as getSelector,\n buildPath as buildPath,\n} from \"@/packageLogs\";\nexport type { Logging } from \"@/types\";\n\nconfig.update({\n useraleVersion: userAleVersion,\n});\ninitPackager(logs, config);\nif (config.autostart) {\n setup(config);\n}\n\n/**\n * Hooks the global event listener, and starts up the\n * logging interval.\n * @param {Configuration} config Configuration settings for the logger\n */\nfunction setup(config: Configuration) {\n if (!started) {\n setTimeout(function () {\n let state;\n try {\n state = document.readyState;\n } catch (error) {\n // Assume there is no DOM and this is a web worker context\n state = \"complete\";\n }\n\n if (\n config.autostart &&\n (state === \"interactive\" || state === \"complete\")\n ) {\n attachHandlers(config);\n initSender(logs, config);\n started = config.on = true;\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n packageCustomLog(\n {\n type: \"load\",\n details: { pageLoadTime: endLoadTimestamp - startLoadTimestamp },\n },\n () => ({}),\n false,\n );\n }\n } else {\n setup(config);\n }\n }, 100);\n }\n}\n\n// Export the Userale API\nexport const version = userAleVersion;\n\n/**\n * Used to start the logging process if the\n * autostart configuration option is set to false.\n */\nexport function start(): void {\n if (!started || config.autostart === false) {\n started = config.on = true;\n config.update({ autostart: true });\n }\n}\n\n/**\n * Halts the logging process. Logs will no longer be sent.\n */\nexport function stop(): void {\n started = config.on = false;\n config.update({ autostart: false });\n}\n\n/**\n * Updates the current configuration\n * object with the provided values.\n * @param {Partial} newConfig The configuration options to use.\n * @return {Settings.Config} Returns the updated configuration.\n */\nexport function options(\n newConfig: Partial | undefined,\n): Settings.Config {\n if (newConfig) {\n config.update(newConfig);\n }\n\n return config;\n}\n\n/**\n * Appends a log to the log queue.\n * @param {Logging.CustomLog} customLog The log to append.\n * @return {boolean} Whether the operation succeeded.\n */\nexport function log(customLog: Logging.CustomLog | undefined) {\n if (customLog) {\n logs.push(customLog);\n return true;\n } else {\n return false;\n }\n}\n\n// Only attach to window in IIFE builds\nif (typeof window !== \"undefined\") {\n (window as any).userale = {\n start,\n stop,\n options,\n log,\n version: userAleVersion,\n details: defineCustomDetails,\n registerAuthCallback,\n addCallbacks,\n removeCallbacks,\n packageLog,\n packageCustomLog,\n getSelector,\n buildPath,\n };\n}\n"],"mappings":"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","names":["descriptors","log","config","options","config","config","settings","logs","config","config","logs","version"]} \ No newline at end of file +{"version":3,"sources":["../src/packageLogs.ts","../src/attachHandlers.ts","../src/utils/auth/index.ts","../src/utils/headers/index.ts","../src/getInitialSettings.ts","../src/configure.ts","../src/sendLogs.ts","../src/main.ts"],"sourcesContent":["/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Callbacks, Logging } from \"@/types\";\nimport { Configuration } from \"@/configure\";\n\nexport let logs: Array;\nlet config: Configuration;\n\n// Interval Logging Globals\nlet intervalId: string | null;\nlet intervalType: string | null;\nlet intervalPath: string[] | null;\nlet intervalTimer: number | null;\nlet intervalCounter: number | null;\nlet intervalLog: Logging.Log | null;\n\nexport const filterHandler: CallableFunction | null = null;\nexport const mapHandler: CallableFunction | null = null;\nexport let cbHandlers: Callbacks.CallbackMap = {};\n\n/**\n * Adds named callbacks to be executed when logging.\n * @param {Object } newCallbacks An object containing named callback functions.\n */\nexport function addCallbacks(\n ...newCallbacks: Record[]\n) {\n newCallbacks.forEach((source) => {\n let descriptors: { [key in string | symbol]: any } = {};\n\n descriptors = Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, descriptors);\n\n Object.getOwnPropertySymbols(source).forEach((sym) => {\n const descriptor = Object.getOwnPropertyDescriptor(source, sym);\n if (descriptor?.enumerable) {\n descriptors[sym] = descriptor;\n }\n });\n Object.defineProperties(cbHandlers, descriptors);\n });\n return cbHandlers;\n}\n\n/**\n * Removes callbacks by name.\n * @param {String[]} targetKeys A list of names of functions to remove.\n */\nexport function removeCallbacks(targetKeys: string[]) {\n targetKeys.forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(cbHandlers, key)) {\n delete cbHandlers[key];\n }\n });\n}\n\n/**\n * Assigns the config and log container to be used by the logging functions.\n * @param {Array} newLogs Log container.\n * @param {Object} newConfig Configuration to use while logging.\n */\nexport function initPackager(\n newLogs: Array,\n newConfig: Configuration,\n) {\n logs = newLogs;\n config = newConfig;\n cbHandlers = {};\n intervalId = null;\n intervalType = null;\n intervalPath = null;\n intervalTimer = null;\n intervalCounter = 0;\n intervalLog = null;\n}\n\n/**\n * Transforms the provided HTML event into a log and appends it to the log queue.\n * @param {Event} e The event to be logged.\n * @param {Function} detailFcn The function to extract additional log parameters from the event.\n * @return {boolean} Whether the event was logged.\n */\nexport function packageLog(\n e: Event,\n detailFcn?: Logging.DynamicDetailFunction | null,\n) {\n if (!config.on) {\n return false;\n }\n\n let details = null;\n if (detailFcn) {\n details = detailFcn(e);\n }\n\n const timeFields = extractTimeFields(\n e.timeStamp && e.timeStamp > 0 ? config.time(e.timeStamp) : Date.now(),\n );\n\n let log: Logging.Log = {\n target: e.target ? getSelector(e.target) : null,\n path: buildPath(e),\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n clientTime: timeFields.milli,\n microTime: timeFields.micro,\n location: getLocation(e),\n scrnRes: getScreenRes(),\n type: e.type,\n logType: \"raw\",\n userAction: true,\n details: details,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n attributes: buildAttrs(e),\n style: buildCSS(e),\n };\n\n if (typeof filterHandler === \"function\" && !filterHandler(log)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n log = mapHandler(log, e);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n log = func(log, e);\n if (!log) {\n return false;\n }\n }\n }\n\n logs.push(log);\n return true;\n}\n\n/**\n * Packages the provided customLog to include standard meta data and appends it to the log queue.\n * @param {Logging.CustomLog} customLog The behavior to be logged.\n * @param {Logging.DynamicDetailFunction} detailFcn The function to extract additional log parameters from the event.\n * @param {boolean} userAction Indicates user behavior (true) or system behavior (false)\n * @return {boolean} Whether the event was logged.\n */\nexport function packageCustomLog(\n customLog: Logging.CustomLog,\n detailFcn: Logging.DynamicDetailFunction | Logging.StaticDetailFunction,\n userAction: boolean,\n): boolean {\n if (!config.on) {\n return false;\n }\n\n let details = null;\n if (detailFcn.length === 0) {\n // In the case of a union, the type checker will default to the more stringent\n // type, i.e. the DetailFunction that expects an argument for safety purposes.\n // To avoid this, we must explicitly check the type by asserting it receives\n // no arguments (detailFcn.length === 0) and then cast it to the\n // StaticDetailFunction type.\n const staticDetailFcn = detailFcn as Logging.StaticDetailFunction;\n details = staticDetailFcn();\n }\n\n const metaData = {\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n clientTime: Date.now(),\n scrnRes: getScreenRes(),\n logType: \"custom\",\n userAction: userAction,\n details: details,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n };\n\n let log = Object.assign(metaData, customLog);\n\n if (typeof filterHandler === \"function\" && !filterHandler(log)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n log = mapHandler(log);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n log = func(log, null);\n if (!log) {\n return false;\n }\n }\n }\n\n logs.push(log);\n\n return true;\n}\n\n/**\n * Extract the millisecond and microsecond portions of a timestamp.\n * @param {Number} timeStamp The timestamp to split into millisecond and microsecond fields.\n * @return {Object} An object containing the millisecond\n * and microsecond portions of the timestamp.\n */\nexport function extractTimeFields(timeStamp: number) {\n return {\n milli: Math.floor(timeStamp),\n micro: Number((timeStamp % 1).toFixed(3)),\n };\n}\n\n/**\n * Track intervals and gather details about it.\n * @param {Object} e\n * @return boolean\n */\nexport function packageIntervalLog(e: Event) {\n try {\n const target = e.target ? getSelector(e.target) : null;\n const path = buildPath(e);\n const type = e.type;\n const timestamp = Math.floor(\n e.timeStamp && e.timeStamp > 0 ? config.time(e.timeStamp) : Date.now(),\n );\n\n // Init - this should only happen once on initialization\n if (intervalId == null) {\n intervalId = target;\n intervalType = type;\n intervalPath = path;\n intervalTimer = timestamp;\n intervalCounter = 0;\n }\n\n if ((intervalId !== target || intervalType !== type) && intervalTimer) {\n // When to create log? On transition end\n // @todo Possible for intervalLog to not be pushed in the event the interval never ends...\n\n intervalLog = {\n target: intervalId,\n path: intervalPath,\n pageUrl: self.location.href,\n pageTitle: document.title,\n pageReferrer: document.referrer,\n userAgent: self.navigator.userAgent,\n count: intervalCounter,\n duration: timestamp - intervalTimer, // microseconds\n startTime: intervalTimer,\n endTime: timestamp,\n type: intervalType,\n logType: \"interval\",\n targetChange: intervalId !== target,\n typeChange: intervalType !== type,\n userAction: false,\n userId: config.userId,\n toolVersion: config.toolVersion,\n toolName: config.toolName,\n useraleVersion: config.useraleVersion,\n sessionId: config.sessionId,\n httpSessionId: config.httpSessionId,\n browserSessionId: config.browserSessionId,\n };\n\n if (typeof filterHandler === \"function\" && !filterHandler(intervalLog)) {\n return false;\n }\n\n if (typeof mapHandler === \"function\") {\n intervalLog = mapHandler(intervalLog, e);\n }\n\n for (const func of Object.values(cbHandlers)) {\n if (typeof func === \"function\") {\n intervalLog = func(intervalLog, null);\n if (!intervalLog) {\n return false;\n }\n }\n }\n\n if (intervalLog) logs.push(intervalLog);\n\n // Reset\n intervalId = target;\n intervalType = type;\n intervalPath = path;\n intervalTimer = timestamp;\n intervalCounter = 0;\n }\n\n // Interval is still occuring, just update counter\n if (intervalId == target && intervalType == type && intervalCounter) {\n intervalCounter = intervalCounter + 1;\n }\n\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Extracts coordinate information from the event\n * depending on a few browser quirks.\n * @param {Event} e The event to extract coordinate information from.\n * @return {Object} An object containing nullable x and y coordinates for the event.\n */\nexport function getLocation(e: Event) {\n if (e instanceof MouseEvent) {\n if (e.pageX != null) {\n return { x: e.pageX, y: e.pageY };\n } else if (e.clientX != null) {\n return {\n x: document.documentElement.scrollLeft + e.clientX,\n y: document.documentElement.scrollTop + e.clientY,\n };\n }\n } else {\n return { x: null, y: null };\n }\n}\n\n/**\n * Extracts innerWidth and innerHeight to provide estimates of screen resolution\n * @return {Object} An object containing the innerWidth and InnerHeight\n */\nexport function getScreenRes() {\n return { width: self.innerWidth, height: self.innerHeight };\n}\n\n/**\n * Builds a string CSS selector from the provided element\n * @param {EventTarget} ele The element from which the selector is built.\n * @return {string} The CSS selector for the element, or Unknown if it can't be determined.\n */\nexport function getSelector(ele: EventTarget) {\n if (ele instanceof HTMLElement || ele instanceof Element) {\n if (ele.localName) {\n return (\n ele.localName +\n (ele.id ? \"#\" + ele.id : \"\") +\n (ele.className ? \".\" + ele.className : \"\")\n );\n } else if (ele.nodeName) {\n return (\n ele.nodeName +\n (ele.id ? \"#\" + ele.id : \"\") +\n (ele.className ? \".\" + ele.className : \"\")\n );\n }\n } else if (ele instanceof Document) {\n return \"#document\";\n } else if (ele === globalThis) {\n return \"Window\";\n }\n return \"Unknown\";\n}\n\n/**\n * Builds an array of elements from the provided event target, to the root element.\n * @param {Event} e Event from which the path should be built.\n * @return {HTMLElement[]} Array of elements, starting at the event target, ending at the root element.\n */\nexport function buildPath(e: Event) {\n const path = e.composedPath();\n return selectorizePath(path);\n}\n\n/**\n * Builds a CSS selector path from the provided list of elements.\n * @param {EventTarget[]} path Array of HTML Elements from which the path should be built.\n * @return {string[]} Array of string CSS selectors.\n */\nexport function selectorizePath(path: EventTarget[]) {\n let i = 0;\n let pathEle;\n const pathSelectors: string[] = [];\n while ((pathEle = path[i])) {\n pathSelectors.push(getSelector(pathEle));\n ++i;\n pathEle = path[i];\n }\n return pathSelectors;\n}\n\n/**\n * Builds an object containing attributes of an element.\n * Attempts to parse all attribute values as JSON text.\n * @param {Event} e Event from which the target element's attributes should be extracted.\n * @return {Record} Object with element attributes as key-value pairs.\n */\nexport function buildAttrs(e: Event): Record {\n const attributes: Record = {};\n const attributeBlackList = [\"style\"];\n\n if (e.target && e.target instanceof Element) {\n for (const attr of e.target.attributes) {\n if (attributeBlackList.includes(attr.name)) continue;\n let val: any = attr.value;\n try {\n val = JSON.parse(val);\n } catch {\n // Ignore parsing errors, fallback to raw string value\n }\n attributes[attr.name] = val;\n }\n }\n\n return attributes;\n}\n\n/**\n * Builds an object containing all CSS properties of an element.\n * @param {Event} e Event from which the target element's properties should be extracted.\n * @return {Record} Object with all CSS properties as key-value pairs.\n */\nexport function buildCSS(e: Event): Record {\n const properties: Record = {};\n if (e.target && e.target instanceof HTMLElement) {\n const styleObj = e.target.style;\n for (let i = 0; i < styleObj.length; i++) {\n const prop = styleObj[i];\n properties[prop] = styleObj.getPropertyValue(prop);\n }\n }\n return properties;\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { packageLog, packageIntervalLog } from \"@/packageLogs\";\nimport { Events, Logging, Settings } from \"@/types\";\nimport { Configuration } from \"@/configure\";\n\n//@todo: Investigate drag events and their behavior\nlet events: Events.EventDetailsMap;\nlet bufferBools: Events.EventBoolMap;\nlet bufferedEvents: Events.EventDetailsMap;\nlet refreshEvents: Events.EventDetailsMap;\nconst intervalEvents: Array = [\n \"click\",\n \"focus\",\n \"blur\",\n \"input\",\n \"change\",\n \"mouseover\",\n \"submit\",\n];\nconst windowEvents: Array = [\"load\", \"blur\", \"focus\"];\n\n/**\n * Maps a MouseEvent to an object containing useful information.\n * @param {MouseEvent} e Event to extract data from\n */\nexport function extractMouseDetails(e: MouseEvent) {\n return {\n clicks: e.detail,\n ctrl: e.ctrlKey,\n alt: e.altKey,\n shift: e.shiftKey,\n meta: e.metaKey,\n // 'text' : e.target.innerHTML\n };\n}\n\n/** Maps a KeyboardEvent to an object containing useful infromation\n * @param {KeyboardEvent} e Event to extract data from\n */\nexport function extractKeyboardDetails(e: KeyboardEvent) {\n return {\n key: e.key,\n code: e.code,\n ctrl: e.ctrlKey,\n alt: e.altKey,\n shift: e.shiftKey,\n meta: e.metaKey,\n };\n}\n\n/**\n * Maps an InputEvent to an object containing useful information.\n * @param {InputEvent} e Event to extract data from\n */\nexport function extractInputDetails(e: InputEvent) {\n return {\n value: (e.target as HTMLInputElement).value,\n };\n}\n\n/**\n * Maps a ChangeEvent to an object containing useful information.\n * @param {Events.ChangeEvent} e Event to extract data from\n */\nexport function extractChangeDetails(e: Events.ChangeEvent) {\n return {\n value: e.target.value,\n };\n}\n\n/**\n * Maps a WheelEvent to an object containing useful information.\n * @param {WheelEvent} e Event to extract data from\n */\nexport function extractWheelDetails(e: WheelEvent) {\n return {\n x: e.deltaX,\n y: e.deltaY,\n z: e.deltaZ,\n };\n}\n\n/**\n * Maps a ScrollEvent to an object containing useful information.\n */\nexport function extractScrollDetails() {\n return {\n x: window.scrollX,\n y: window.scrollY,\n };\n}\n\n/**\n * Maps a ResizeEvent to an object containing useful information.\n */\nexport function extractResizeDetails() {\n return {\n width: window.outerWidth,\n height: window.outerHeight,\n };\n}\n\n/**\n * Defines the way information is extracted from various events.\n * Also defines which events we will listen to.\n * @param {Settings.Config} config Configuration object to read from.\n */\nexport function defineDetails(config: Settings.DefaultConfig): void {\n // Events list\n // Keys are event types\n // Values are functions that return details object if applicable\n events = {\n click: extractMouseDetails,\n dblclick: extractMouseDetails,\n mousedown: extractMouseDetails,\n mouseup: extractMouseDetails,\n focus: null,\n blur: null,\n input: config.logDetails ? extractKeyboardDetails : null,\n change: config.logDetails ? extractChangeDetails : null,\n dragstart: null,\n dragend: null,\n drag: null,\n drop: null,\n keydown: config.logDetails ? extractKeyboardDetails : null,\n mouseover: null,\n };\n\n bufferBools = {};\n bufferedEvents = {\n wheel: extractWheelDetails,\n scroll: extractScrollDetails,\n resize: extractResizeDetails,\n };\n\n refreshEvents = {\n submit: null,\n };\n}\n\n/**\n * Defines the way information is extracted from various events.\n * Also defines which events we will listen to.\n * @param {Settings.Config} options UserALE Configuration object to read from.\n * @param {Events.AllowedEvents} type of html event (e.g., 'click', 'mouseover', etc.), such as passed to addEventListener methods.\n */\nexport function defineCustomDetails(\n options: Settings.DefaultConfig,\n type: Events.AllowedEvents,\n): Logging.DynamicDetailFunction | null | undefined {\n // Events list\n // Keys are event types\n // Values are functions that return details object if applicable\n const eventType: Events.EventDetailsMap = {\n click: extractMouseDetails,\n dblclick: extractMouseDetails,\n mousedown: extractMouseDetails,\n mouseup: extractMouseDetails,\n focus: null,\n blur: null,\n load: null,\n input: options.logDetails ? extractKeyboardDetails : null,\n change: options.logDetails ? extractChangeDetails : null,\n dragstart: null,\n dragend: null,\n drag: null,\n drop: null,\n keydown: options.logDetails ? extractKeyboardDetails : null,\n mouseover: null,\n wheel: extractWheelDetails,\n scroll: extractScrollDetails,\n resize: extractResizeDetails,\n submit: null,\n };\n return eventType[type];\n}\n\n/**\n * Hooks the event handlers for each event type of interest.\n * @param {Configuration} config Configuration singleton to use.\n * @return {boolean} Whether the operation succeeded\n */\nexport function attachHandlers(config: Configuration): boolean {\n try {\n defineDetails(config);\n\n (Object.keys(events) as Events.AllowedEvents[]).forEach(function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageLog(e, events[ev]);\n },\n true,\n );\n });\n\n intervalEvents.forEach(function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageIntervalLog(e);\n },\n true,\n );\n });\n\n (Object.keys(bufferedEvents) as Events.BufferedEvents[]).forEach(\n function (ev) {\n bufferBools[ev] = true;\n\n self.addEventListener(\n ev,\n function (e) {\n if (bufferBools[ev]) {\n bufferBools[ev] = false;\n packageLog(e, bufferedEvents[ev]);\n setTimeout(function () {\n bufferBools[ev] = true;\n }, config.resolution);\n }\n },\n true,\n );\n },\n );\n\n (Object.keys(refreshEvents) as Events.RefreshEvents[]).forEach(\n function (ev) {\n document.addEventListener(\n ev,\n function (e) {\n packageLog(e, events[ev]);\n },\n true,\n );\n },\n );\n\n windowEvents.forEach(function (ev) {\n self.addEventListener(\n ev,\n function (e) {\n packageLog(e, function () {\n return { window: true };\n });\n },\n true,\n );\n });\n\n return true;\n } catch {\n return false;\n }\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Callbacks } from \"@/types\";\n\nexport let authCallback: Callbacks.AuthCallback | null = null;\n\n/**\n * Fetches the most up-to-date auth header string from the auth callback\n * and updates the config object with the new value.\n * @param {Configuration} config Configuration object to be updated.\n * @param {Function} authCallback Callback used to fetch the newest header.\n * @returns {void}\n */\nexport function updateAuthHeader(config: Configuration) {\n if (authCallback) {\n try {\n config.authHeader = authCallback();\n } catch (e) {\n // We should emit the error, but otherwise continue as this could be a temporary issue\n // due to network connectivity or some logic inside the authCallback which is the user's\n // responsibility.\n console.error(`Error encountered while setting the auth header: ${e}`);\n }\n }\n}\n\n/**\n * Registers the provided callback to be used when updating the auth header.\n * @param {Callbacks.AuthCallback} callback Callback used to fetch the newest header. Should return a string.\n * @returns {boolean} Whether the operation succeeded.\n */\nexport function registerAuthCallback(callback: Callbacks.AuthCallback) {\n try {\n verifyCallback(callback);\n authCallback = callback;\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Verify that the provided callback is a function which returns a string\n * @param {Function} callback Callback used to fetch the newest header. Should return a string.\n * @throws {Error} If the callback is not a function or does not return a string.\n * @returns {void}\n */\nexport function verifyCallback(callback: Callbacks.AuthCallback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Userale auth callback must be a function\");\n }\n const result = callback();\n if (typeof result !== \"string\") {\n throw new Error(\"Userale auth callback must return a string\");\n }\n}\n\n/**\n * Resets the authCallback to null. Used for primarily for testing, but could be used\n * to remove the callback in production.\n * @returns {void}\n */\nexport function resetAuthCallback() {\n authCallback = null;\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Callbacks } from \"@/types\";\n\nexport let headersCallback: Callbacks.HeadersCallback | null = null;\n\n/**\n * Fetches the most up-to-date custom headers object from the headers callback\n * and updates the config object with the new value.\n * @param {Configuration} config Configuration object to be updated.\n * @param {Callbacks.HeadersCallback} headersCallback Callback used to fetch the newest headers.\n * @returns {void}\n */\nexport function updateCustomHeaders(config: Configuration) {\n if (headersCallback) {\n try {\n config.headers = headersCallback();\n } catch (e) {\n // We should emit the error, but otherwise continue as this could be a temporary issue\n // due to network connectivity or some logic inside the headersCallback which is the user's\n // responsibility.\n console.error(`Error encountered while setting the headers: ${e}`);\n }\n }\n}\n\n/**\n * Registers the provided callback to be used when updating the auth header.\n * @param {Callbacks.HeadersCallback} callback Callback used to fetch the newest headers. Should return an object.\n * @returns {boolean} Whether the operation succeeded.\n */\nexport function registerHeadersCallback(callback: Callbacks.HeadersCallback) {\n try {\n verifyCallback(callback);\n headersCallback = callback;\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Verify that the provided callback is a function which returns a string\n * @param {Callbacks.HeadersCallback} callback Callback used to fetch the newest header. Should return an object.\n * @throws {Error} If the callback is not a function or does not return a string.\n * @returns {void}\n */\nexport function verifyCallback(callback: Callbacks.HeadersCallback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Userale headers callback must be a function\");\n }\n const result = callback();\n if (typeof result !== \"object\") {\n throw new Error(\"Userale headers callback must return an object\");\n }\n for (const [key, value] of Object.entries(result)) {\n if (typeof key !== \"string\" || typeof value !== \"string\") {\n throw new Error(\n \"Userale header callback must return an object with string keys and values\",\n );\n }\n }\n}\n\n/**\n * Resets the authCallback to null. Used for primarily for testing, but could be used\n * to remove the callback in production.\n * @returns {void}\n */\nexport function resetHeadersCallback() {\n headersCallback = null;\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the 'License'); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Settings } from \"./types\";\n\nlet sessionId: string | null = null;\nlet httpSessionId: string | null = null;\n\n/**\n * Extracts the initial configuration settings from the\n * currently executing script tag.\n * @return {Object} The extracted configuration object\n */\nexport function getInitialSettings(): Settings.Config {\n if (\n typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope\n ) {\n const settings: Settings.Config = {\n authHeader: null,\n autostart: true,\n browserSessionId: null,\n custIndex: null,\n headers: null,\n httpSessionId: null,\n logCountThreshold: +5,\n logDetails: false,\n resolution: +500,\n sessionId: sessionId,\n time: (ts?: number) => (ts !== undefined ? ts : Date.now()),\n toolName: null,\n toolVersion: null,\n transmitInterval: +5000,\n url: \"http://localhost:8000\",\n useraleVersion: null,\n userFromParams: null,\n userId: null,\n };\n return settings;\n }\n\n if (sessionId === null) {\n sessionId = getsessionId(\n \"userAlesessionId\",\n \"session_\" + String(Date.now()),\n );\n }\n\n if (httpSessionId === null) {\n httpSessionId = getsessionId(\n \"userAleHttpSessionId\",\n generatehttpSessionId(),\n );\n }\n\n const script =\n document.currentScript ||\n (function () {\n const scripts = document.getElementsByTagName(\"script\");\n return scripts[scripts.length - 1];\n })();\n\n const get = script\n ? script.getAttribute.bind(script)\n : function () {\n return null;\n };\n const headers = get(\"data-headers\");\n const settings: Settings.Config = {\n authHeader: get(\"data-auth\") || null,\n autostart: get(\"data-autostart\") === \"false\" ? false : true,\n browserSessionId: null,\n custIndex: get(\"data-index\") || null,\n headers: headers ? JSON.parse(headers) : null,\n httpSessionId: httpSessionId,\n logCountThreshold: +(get(\"data-threshold\") || 5),\n logDetails: get(\"data-log-details\") === \"true\" ? true : false,\n resolution: +(get(\"data-resolution\") || 500),\n sessionId: get(\"data-session\") || sessionId,\n time: timeStampScale(document.createEvent(\"CustomEvent\")),\n toolName: get(\"data-tool\") || null,\n toolVersion: get(\"data-version\") || null,\n transmitInterval: +(get(\"data-interval\") || 5000),\n url: get(\"data-url\") || \"http://localhost:8000\",\n useraleVersion: get(\"data-userale-version\") || null,\n userFromParams: get(\"data-user-from-params\") || null,\n userId: get(\"data-user\") || null,\n };\n return settings;\n}\n\n/**\n * defines sessionId, stores it in sessionStorage, checks to see if there is a sessionId in\n * storage when script is started. This prevents events like 'submit', which refresh page data\n * from refreshing the current user session\n *\n */\nexport function getsessionId(sessionKey: string, value: any) {\n if (self.sessionStorage.getItem(sessionKey) === null) {\n self.sessionStorage.setItem(sessionKey, JSON.stringify(value));\n return value;\n }\n\n return JSON.parse(self.sessionStorage.getItem(sessionKey) || \"\");\n}\n\n/**\n * Creates a function to normalize the timestamp of the provided event.\n * @param {Event} e An event containing a timeStamp property.\n * @return {typeof timeStampScale~tsScaler} The timestamp normalizing function.\n */\nexport function timeStampScale(e: Event): Settings.TimeFunction {\n let tsScaler: Settings.TimeFunction;\n if (e.timeStamp && e.timeStamp > 0) {\n const delta = Date.now() - e.timeStamp;\n /**\n * Returns a timestamp depending on various browser quirks.\n * @param {?Number} ts A timestamp to use for normalization.\n * @return {Number} A normalized timestamp.\n */\n\n if (delta < 0) {\n tsScaler = function () {\n return e.timeStamp / 1000;\n };\n } else if (delta > e.timeStamp) {\n const navStart = performance.timeOrigin;\n tsScaler = function (ts) {\n return ts + navStart;\n };\n } else {\n tsScaler = function (ts) {\n return ts;\n };\n }\n } else {\n tsScaler = function () {\n return Date.now();\n };\n }\n\n return tsScaler;\n}\n\n/**\n * Creates a cryptographiclly random string to represent this http session.\n * @return {String} A random 32 digit hex string\n */\nfunction generatehttpSessionId(): string {\n // 32 digit hex -> 128 bits of info -> 2^64 ~= 10^19 sessions needed for 50% chance of collison\n const len = 32;\n const arr = new Uint8Array(len / 2);\n window.crypto.getRandomValues(arr);\n return Array.from(arr, (dec) => {\n return dec.toString(16).padStart(2, \"0\");\n }).join(\"\");\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInitialSettings } from \"@/getInitialSettings\";\nimport type { Settings } from \"@/types\";\n\n// Singleton Configuration class\nexport class Configuration {\n [key: string]: Settings.ConfigValueTypes;\n // Private static property to hold the singleton instance\n private static instance: Configuration | null = null;\n\n // Public properties corresponding to fields in the Config interface\n public autostart: boolean = false;\n public authHeader: Settings.AuthHeader = null;\n public browserSessionId: Settings.SessionId = null;\n public custIndex: Settings.CustomIndex = null;\n public headers: Settings.Headers = null;\n public httpSessionId: Settings.SessionId = null;\n public logCountThreshold: number = 0;\n public logDetails: boolean = false;\n public on: boolean = false;\n public resolution: number = 0;\n public sessionId: Settings.SessionId = null;\n public time: Settings.TimeFunction = () => Date.now();\n public toolName: Settings.ToolName = null;\n public toolVersion: Settings.Version = null;\n public transmitInterval: number = 0;\n public url: string = \"\";\n public userFromParams: Settings.UserFromParams = null;\n public useraleVersion: Settings.Version = null;\n public userId: Settings.UserId = null;\n public version: Settings.Version = null;\n public websocketsEnabled: boolean = false;\n\n // Private constructor to prevent external instantiation\n private constructor() {\n // Call the initialization method only if it's the first time instantiating\n if (Configuration.instance === null) {\n this.initialize();\n }\n }\n\n // Static method to get the singleton instance\n public static getInstance(): Configuration {\n if (Configuration.instance === null) {\n Configuration.instance = new Configuration();\n }\n return Configuration.instance;\n }\n\n private initialize(): void {\n const settings = getInitialSettings();\n this.update(settings);\n }\n\n /**\n * Resets the configuration to its initial state.\n */\n public reset(): void {\n this.initialize();\n }\n\n /**\n * Shallow merges a newConfig with the configuration class, updating it.\n * Retrieves/updates the userid if userFromParams is provided.\n * @param {Partial} newConfig Configuration object to merge into the current config.\n */\n public update(newConfig: Partial): void {\n Object.keys(newConfig).forEach((option) => {\n if (option === \"userFromParams\") {\n const userParamString = newConfig[option] as Settings.UserFromParams;\n const userId = userParamString\n ? Configuration.getUserIdFromParams(userParamString)\n : null;\n if (userId) {\n this[\"userId\"] = userId;\n }\n }\n const hasNewUserFromParams = newConfig[\"userFromParams\"];\n const willNullifyUserId =\n option === \"userId\" && newConfig[option] === null;\n if (willNullifyUserId && hasNewUserFromParams) {\n return;\n }\n\n const newOption = newConfig[option];\n if (newOption !== undefined) {\n this[option] = newOption;\n }\n });\n }\n\n /**\n * Attempts to extract the userid from the query parameters of the URL.\n * @param {string} param The name of the query parameter containing the userid.\n * @return {string | null} The extracted/decoded userid, or null if none is found.\n */\n public static getUserIdFromParams(param: string) {\n const userField = param;\n const regex = new RegExp(\"[?&]\" + userField + \"(=([^&#]*)|&|#|$)\");\n const results = window.location.href.match(regex);\n\n if (results && results[2]) {\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n }\n return null;\n }\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Configuration } from \"@/configure\";\nimport { Logging } from \"@/types\";\nimport { updateAuthHeader, updateCustomHeaders } from \"@/utils\";\n\nlet sendIntervalId: string | number | NodeJS.Timeout | undefined;\nlet wsock: WebSocket;\n\n/**\n * Initializes the log queue processors.\n * @param {Array} logs Array of logs to append to.\n * @param {Configuration} config Configuration object to use when logging.\n */\nexport function initSender(logs: Array, config: Configuration) {\n if (sendIntervalId) {\n clearInterval(sendIntervalId);\n }\n\n const url = new URL(config.url);\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n wsock = new WebSocket(config.url);\n }\n\n sendIntervalId = sendOnInterval(logs, config);\n sendOnClose(logs, config);\n}\n\n/**\n * Checks the provided log array on an interval, flushing the logs\n * if the queue has reached the threshold specified by the provided config.\n * @param {Array} logs Array of logs to read from.\n * @param {Configuration} config Configuration singleton to be read from.\n * @return {Number} The newly created interval id.\n */\nexport function sendOnInterval(\n logs: Array,\n config: Configuration,\n): NodeJS.Timeout {\n return setInterval(function () {\n if (!config.on) {\n return;\n }\n\n if (logs.length >= config.logCountThreshold) {\n sendLogs(logs.slice(0), config, 0); // Send a copy\n logs.splice(0); // Clear array reference (no reassignment)\n }\n }, config.transmitInterval);\n}\n\n// /**\n// * Attempts to flush the remaining logs when the window is closed.\n// * @param {Array} logs Array of logs to be flushed.\n// * @param {Configuration} config Configuration singleton to be read from.\n// */\nexport function sendOnClose(\n logs: Array,\n config: Configuration,\n): void {\n self.addEventListener(\"pagehide\", function () {\n if (!config.on) {\n return;\n }\n\n if (logs.length > 0) {\n const url = new URL(config.url);\n\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n const data = JSON.stringify(logs);\n wsock.send(data);\n } else {\n const headers: HeadersInit = new Headers();\n headers.set(\"Content-Type\", \"application/json;charset=UTF-8\");\n\n if (config.authHeader) {\n headers.set(\"Authorization\", config.authHeader.toString());\n }\n\n fetch(config.url, {\n keepalive: true,\n method: \"POST\",\n headers: headers,\n body: JSON.stringify(logs),\n }).catch((error) => {\n console.error(error);\n });\n }\n logs.splice(0); // clear log queue\n }\n });\n}\n\n/**\n * Sends the provided array of logs to the specified url,\n * retrying the request up to the specified number of retries.\n * @param {Array} logs Array of logs to send.\n * @param {Configuration} config configuration singleton.\n * @param {Number} retries Maximum number of attempts to send the logs.\n */\nexport async function sendLogs(\n logs: Array,\n config: Configuration,\n retries: number,\n): Promise {\n const data = JSON.stringify(logs);\n const url = new URL(config.url);\n\n if (url.protocol === \"ws:\" || url.protocol === \"wss:\") {\n wsock.send(data);\n return;\n }\n\n // Build headers\n const headers = new Headers({\n \"Content-Type\": \"application/json;charset=UTF-8\",\n });\n\n updateAuthHeader(config);\n if (config.authHeader) {\n const authHeaderValue =\n typeof config.authHeader === \"function\"\n ? config.authHeader()\n : config.authHeader;\n headers.set(\"Authorization\", authHeaderValue);\n }\n\n // Update custom headers last to allow them to over-write the defaults. This assumes\n // the user knows what they are doing and may want to over-write the defaults.\n updateCustomHeaders(config);\n if (config.headers) {\n for (const [header, value] of Object.entries(config.headers)) {\n headers.set(header, value);\n }\n }\n\n async function attemptSend(remainingRetries: number): Promise {\n try {\n const response = await fetch(config.url, {\n method: \"POST\",\n headers,\n body: data,\n });\n\n if (!response.ok) {\n if (remainingRetries > 0) {\n return attemptSend(remainingRetries - 1);\n } else {\n throw new Error(`Failed to send logs: ${response.statusText}`);\n }\n }\n } catch (error) {\n if (remainingRetries > 0) {\n return attemptSend(remainingRetries - 1);\n }\n throw error;\n }\n }\n\n return attemptSend(retries);\n}\n","/*!\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineCustomDetails } from \"@/attachHandlers\";\nimport { registerAuthCallback } from \"@/utils\";\nimport {\n addCallbacks,\n removeCallbacks,\n packageLog,\n packageCustomLog,\n getSelector,\n buildPath,\n initPackager,\n} from \"@/packageLogs\";\nimport { version as userAleVersion } from \"../package.json\";\nimport { Configuration } from \"@/configure\";\nimport { attachHandlers } from \"@/attachHandlers\";\nimport { initSender } from \"@/sendLogs\";\n\nimport type { Settings, Logging } from \"@/types\";\n\nconst config = Configuration.getInstance();\nconst logs: Array = [];\n\nconst startLoadTimestamp = Date.now();\nlet endLoadTimestamp: number;\nself.onload = function () {\n endLoadTimestamp = Date.now();\n};\n\nexport let started = false;\nexport { defineCustomDetails as details } from \"@/attachHandlers\";\nexport { registerAuthCallback as registerAuthCallback } from \"@/utils\";\nexport {\n addCallbacks as addCallbacks,\n removeCallbacks as removeCallbacks,\n packageLog as packageLog,\n packageCustomLog as packageCustomLog,\n getSelector as getSelector,\n buildPath as buildPath,\n} from \"@/packageLogs\";\nexport type { Logging } from \"@/types\";\n\nconfig.update({\n useraleVersion: userAleVersion,\n});\ninitPackager(logs, config);\nif (config.autostart) {\n setup(config);\n}\n\n/**\n * Hooks the global event listener, and starts up the\n * logging interval.\n * @param {Configuration} config Configuration settings for the logger\n */\nfunction setup(config: Configuration) {\n if (!started) {\n setTimeout(function () {\n let state;\n try {\n state = document.readyState;\n } catch (error) {\n // Assume there is no DOM and this is a web worker context\n state = \"complete\";\n }\n\n if (\n config.autostart &&\n (state === \"interactive\" || state === \"complete\")\n ) {\n attachHandlers(config);\n initSender(logs, config);\n started = config.on = true;\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n packageCustomLog(\n {\n type: \"load\",\n details: { pageLoadTime: endLoadTimestamp - startLoadTimestamp },\n },\n () => ({}),\n false,\n );\n }\n } else {\n setup(config);\n }\n }, 100);\n }\n}\n\n// Export the Userale API\nexport const version = userAleVersion;\n\n/**\n * Used to start the logging process if the\n * autostart configuration option is set to false.\n */\nexport function start(): void {\n if (!started || config.autostart === false) {\n started = config.on = true;\n config.update({ autostart: true });\n }\n}\n\n/**\n * Halts the logging process. Logs will no longer be sent.\n */\nexport function stop(): void {\n started = config.on = false;\n config.update({ autostart: false });\n}\n\n/**\n * Updates the current configuration\n * object with the provided values.\n * @param {Partial} newConfig The configuration options to use.\n * @return {Settings.Config} Returns the updated configuration.\n */\nexport function options(\n newConfig: Partial | undefined,\n): Settings.Config {\n if (newConfig) {\n config.update(newConfig);\n }\n\n return config;\n}\n\n/**\n * Appends a log to the log queue.\n * @param {Logging.CustomLog} customLog The log to append.\n * @return {boolean} Whether the operation succeeded.\n */\nexport function log(customLog: Logging.CustomLog | undefined) {\n if (customLog) {\n logs.push(customLog);\n return true;\n } else {\n return false;\n }\n}\n\n// Only attach to window in IIFE builds\nif (typeof window !== \"undefined\") {\n (window as any).userale = {\n start,\n stop,\n options,\n log,\n version: userAleVersion,\n details: defineCustomDetails,\n registerAuthCallback,\n addCallbacks,\n removeCallbacks,\n packageLog,\n packageCustomLog,\n getSelector,\n buildPath,\n };\n}\n"],"mappings":"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","names":["descriptors","log","config","options","config","config","settings","logs","config","config","logs","version"]} \ No newline at end of file diff --git a/products/userale/packages/flagon-userale/build/packageLogs.d.ts b/products/userale/packages/flagon-userale/build/packageLogs.d.ts index fc4dff2..b5b0ff8 100644 --- a/products/userale/packages/flagon-userale/build/packageLogs.d.ts +++ b/products/userale/packages/flagon-userale/build/packageLogs.d.ts @@ -1,3 +1,19 @@ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { Callbacks, Logging } from "@/types"; import { Configuration } from "@/configure"; export declare let logs: Array; diff --git a/products/userale/packages/flagon-userale/build/sendLogs.d.ts b/products/userale/packages/flagon-userale/build/sendLogs.d.ts index 7aef366..8a3ed1d 100644 --- a/products/userale/packages/flagon-userale/build/sendLogs.d.ts +++ b/products/userale/packages/flagon-userale/build/sendLogs.d.ts @@ -1,3 +1,19 @@ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { Configuration } from "@/configure"; import { Logging } from "@/types"; /** diff --git a/products/userale/packages/flagon-userale/build/utils/auth/index.d.ts b/products/userale/packages/flagon-userale/build/utils/auth/index.d.ts index fee0184..38b4d63 100644 --- a/products/userale/packages/flagon-userale/build/utils/auth/index.d.ts +++ b/products/userale/packages/flagon-userale/build/utils/auth/index.d.ts @@ -1,3 +1,19 @@ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { Configuration } from "@/configure"; import { Callbacks } from "@/types"; export declare let authCallback: Callbacks.AuthCallback | null; diff --git a/products/userale/packages/flagon-userale/build/utils/headers/index.d.ts b/products/userale/packages/flagon-userale/build/utils/headers/index.d.ts index a8c3190..9136073 100644 --- a/products/userale/packages/flagon-userale/build/utils/headers/index.d.ts +++ b/products/userale/packages/flagon-userale/build/utils/headers/index.d.ts @@ -1,3 +1,19 @@ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import { Configuration } from "@/configure"; import { Callbacks } from "@/types"; export declare let headersCallback: Callbacks.HeadersCallback | null; diff --git a/products/userale/packages/flagon-userale/build/utils/index.d.ts b/products/userale/packages/flagon-userale/build/utils/index.d.ts index 99a4b5a..97191b2 100644 --- a/products/userale/packages/flagon-userale/build/utils/index.d.ts +++ b/products/userale/packages/flagon-userale/build/utils/index.d.ts @@ -1,3 +1,19 @@ +/*! + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ export { authCallback, updateAuthHeader, registerAuthCallback, resetAuthCallback, verifyCallback as verifyAuthCallback, } from "./auth"; export { headersCallback, updateCustomHeaders, registerHeadersCallback, resetHeadersCallback, verifyCallback as verifyHeadersCallback, } from "./headers"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/products/userale/packages/flagon-userale/package.json b/products/userale/packages/flagon-userale/package.json index edf1b8d..e31609f 100644 --- a/products/userale/packages/flagon-userale/package.json +++ b/products/userale/packages/flagon-userale/package.json @@ -13,7 +13,7 @@ }, "scripts": { "build": "tsup --onSuccess 'tsc --emitDeclarationOnly --declaration'", - "clean": "rm -rf ./build", + "clean": "rm -rf ./build && rm tsconfig.tsbuildinfo", "test": "jest -c ./test/jest.config.ts", "commit": "cz" }, diff --git a/products/userale/packages/flagon-userale/src/attachHandlers.ts b/products/userale/packages/flagon-userale/src/attachHandlers.ts index fd04933..f23b3f1 100644 --- a/products/userale/packages/flagon-userale/src/attachHandlers.ts +++ b/products/userale/packages/flagon-userale/src/attachHandlers.ts @@ -1,4 +1,4 @@ -/* +/*! * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. diff --git a/products/userale/packages/flagon-userale/src/configure.ts b/products/userale/packages/flagon-userale/src/configure.ts index f41645d..a3d08ac 100644 --- a/products/userale/packages/flagon-userale/src/configure.ts +++ b/products/userale/packages/flagon-userale/src/configure.ts @@ -1,4 +1,4 @@ -/* +/*! * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. diff --git a/products/userale/packages/flagon-userale/src/getInitialSettings.ts b/products/userale/packages/flagon-userale/src/getInitialSettings.ts index 34fe95e..324e977 100644 --- a/products/userale/packages/flagon-userale/src/getInitialSettings.ts +++ b/products/userale/packages/flagon-userale/src/getInitialSettings.ts @@ -1,4 +1,4 @@ -/* +/*! * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. diff --git a/products/userale/packages/flagon-userale/src/main.ts b/products/userale/packages/flagon-userale/src/main.ts index 3a209e2..52df4cd 100644 --- a/products/userale/packages/flagon-userale/src/main.ts +++ b/products/userale/packages/flagon-userale/src/main.ts @@ -1,4 +1,4 @@ -/* +/*! * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. diff --git a/products/userale/packages/flagon-userale/src/packageLogs.ts b/products/userale/packages/flagon-userale/src/packageLogs.ts index ae58991..98e3ee0 100644 --- a/products/userale/packages/flagon-userale/src/packageLogs.ts +++ b/products/userale/packages/flagon-userale/src/packageLogs.ts @@ -1,4 +1,4 @@ -/* +/*! * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. diff --git a/products/userale/packages/flagon-userale/src/sendLogs.ts b/products/userale/packages/flagon-userale/src/sendLogs.ts index c4bc647..89ed67f 100644 --- a/products/userale/packages/flagon-userale/src/sendLogs.ts +++ b/products/userale/packages/flagon-userale/src/sendLogs.ts @@ -1,4 +1,4 @@ -/* +/*! * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. diff --git a/products/userale/packages/flagon-userale/src/types.d.ts b/products/userale/packages/flagon-userale/src/types.d.ts index 193f9b0..ec277ab 100644 --- a/products/userale/packages/flagon-userale/src/types.d.ts +++ b/products/userale/packages/flagon-userale/src/types.d.ts @@ -1,4 +1,4 @@ -/* +/*! * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. diff --git a/products/userale/packages/flagon-userale/src/utils/auth/index.ts b/products/userale/packages/flagon-userale/src/utils/auth/index.ts index 937f47b..38ef65f 100644 --- a/products/userale/packages/flagon-userale/src/utils/auth/index.ts +++ b/products/userale/packages/flagon-userale/src/utils/auth/index.ts @@ -1,4 +1,4 @@ -/* +/*! * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. diff --git a/products/userale/packages/flagon-userale/src/utils/headers/index.ts b/products/userale/packages/flagon-userale/src/utils/headers/index.ts index 91d50f2..cd23e62 100644 --- a/products/userale/packages/flagon-userale/src/utils/headers/index.ts +++ b/products/userale/packages/flagon-userale/src/utils/headers/index.ts @@ -1,4 +1,4 @@ -/* +/*! * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. diff --git a/products/userale/packages/flagon-userale/src/utils/index.ts b/products/userale/packages/flagon-userale/src/utils/index.ts index f472640..610bdc8 100644 --- a/products/userale/packages/flagon-userale/src/utils/index.ts +++ b/products/userale/packages/flagon-userale/src/utils/index.ts @@ -1,4 +1,4 @@ -/* +/*! * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. diff --git a/products/userale/packages/flagon-userale/test/globals.d.ts b/products/userale/packages/flagon-userale/test/globals.d.ts index 9debc78..0ad68f2 100644 --- a/products/userale/packages/flagon-userale/test/globals.d.ts +++ b/products/userale/packages/flagon-userale/test/globals.d.ts @@ -1,2 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + // Ensures jest globals are recognized in test files import "@types/jest"; diff --git a/products/userale/packages/flagon-userale/tsconfig.json b/products/userale/packages/flagon-userale/tsconfig.json index e60896e..8dec4ce 100644 --- a/products/userale/packages/flagon-userale/tsconfig.json +++ b/products/userale/packages/flagon-userale/tsconfig.json @@ -7,7 +7,8 @@ "declarationDir": "./build", "module": "ESNext", "moduleResolution": "node", - "noEmit": true, + "noEmit": false, + "removeComments": false, "rootDir": "./src", "baseUrl": ".", "paths": { @@ -20,4 +21,3 @@ ], "exclude": ["node_modules", "build"] } - \ No newline at end of file diff --git a/products/userale/packages/flagon-userale/tsup.config.js b/products/userale/packages/flagon-userale/tsup.config.js index 7989b3b..bd9e84e 100644 --- a/products/userale/packages/flagon-userale/tsup.config.js +++ b/products/userale/packages/flagon-userale/tsup.config.js @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import { defineConfig } from 'tsup'; export default defineConfig([ diff --git a/products/userale/pnpm-workspace.yaml b/products/userale/pnpm-workspace.yaml index d6d0607..23d7944 100644 --- a/products/userale/pnpm-workspace.yaml +++ b/products/userale/pnpm-workspace.yaml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + packages: # all packages in direct subdirs of packages/ - 'packages/*' \ No newline at end of file diff --git a/products/userale/test/spec/01-extension.spec.ts b/products/userale/test/spec/01-extension.spec.ts index 2bc1c1d..6233630 100644 --- a/products/userale/test/spec/01-extension.spec.ts +++ b/products/userale/test/spec/01-extension.spec.ts @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import { test, expect } from "./fixtures/extension.fixture"; test.describe("Userale extension", () => { diff --git a/products/userale/test/spec/01-package.spec.ts b/products/userale/test/spec/01-package.spec.ts index 4fe1226..f67aa21 100644 --- a/products/userale/test/spec/01-package.spec.ts +++ b/products/userale/test/spec/01-package.spec.ts @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import { test, expect } from "./fixtures/extension.fixture"; test.describe("Userale custom logging", () => { diff --git a/products/userale/test/spec/fixtures/extension.fixture.ts b/products/userale/test/spec/fixtures/extension.fixture.ts index e18d2ad..badca35 100644 --- a/products/userale/test/spec/fixtures/extension.fixture.ts +++ b/products/userale/test/spec/fixtures/extension.fixture.ts @@ -1,3 +1,22 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + import { test as base, chromium, type BrowserContext, type Page, type Request } from '@playwright/test'; import path from 'path'; import os from 'os'; diff --git a/scripts/README.md b/scripts/README.md index ed5c418..e321ecf 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -1,3 +1,22 @@ + + Release Scripts and Helpers =========================== diff --git a/site/.dockerignore b/site/.dockerignore index 81b1a3b..96e560f 100644 --- a/site/.dockerignore +++ b/site/.dockerignore @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + # comment *.md _site diff --git a/site/CHANGELOG.md b/site/CHANGELOG.md index 456f877..b796dfd 100644 --- a/site/CHANGELOG.md +++ b/site/CHANGELOG.md @@ -1,3 +1,22 @@ + + CHANGELOG --------- diff --git a/site/Dockerfile b/site/Dockerfile index e85b3b7..3dfd979 100644 --- a/site/Dockerfile +++ b/site/Dockerfile @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + FROM phusion/passenger-full:3.0.7 LABEL org.opencontainers.image.authors="poorejc@apache.org" diff --git a/site/README.md b/site/README.md index 622c695..669689b 100644 --- a/site/README.md +++ b/site/README.md @@ -1,3 +1,22 @@ + + How to Build and Deploy Site ---------------------------- diff --git a/site/_config.yml b/site/_config.yml index 209b79a..fe88254 100644 --- a/site/_config.yml +++ b/site/_config.yml @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + # Welcome to Jekyll! # # This config file is meant for settings that affect your whole blog, values diff --git a/site/_docs/contributing.md b/site/_docs/contributing.md index 3e4951c..4e5a7b4 100644 --- a/site/_docs/contributing.md +++ b/site/_docs/contributing.md @@ -1,3 +1,22 @@ + + --- title: Contributing component: flagon diff --git a/site/_docs/distill/index.md b/site/_docs/distill/index.md index d4ea146..2d3c5e1 100644 --- a/site/_docs/distill/index.md +++ b/site/_docs/distill/index.md @@ -1,3 +1,22 @@ + + --- title: Installation component: distill diff --git a/site/_docs/index.md b/site/_docs/index.md index 7f65fc2..1116cd4 100644 --- a/site/_docs/index.md +++ b/site/_docs/index.md @@ -1,3 +1,22 @@ + + --- title: About the Docs component: flagon diff --git a/site/_docs/useralejs/API.md b/site/_docs/useralejs/API.md index d8010c6..f109391 100644 --- a/site/_docs/useralejs/API.md +++ b/site/_docs/useralejs/API.md @@ -1,3 +1,22 @@ + + --- title: The UserALE.js API component: useralejs diff --git a/site/_docs/useralejs/build.md b/site/_docs/useralejs/build.md index 2fe8dc0..494c05a 100644 --- a/site/_docs/useralejs/build.md +++ b/site/_docs/useralejs/build.md @@ -1,3 +1,22 @@ + + --- title: UserALE.js Build and Test component: useralejs diff --git a/site/_docs/useralejs/dataschema.md b/site/_docs/useralejs/dataschema.md index ce5ed2b..519eb5c 100644 --- a/site/_docs/useralejs/dataschema.md +++ b/site/_docs/useralejs/dataschema.md @@ -1,3 +1,22 @@ + + --- title: UserALE.js' Data Schema component: useralejs diff --git a/site/_docs/useralejs/index.md b/site/_docs/useralejs/index.md index 4c2d2f0..6c3670d 100644 --- a/site/_docs/useralejs/index.md +++ b/site/_docs/useralejs/index.md @@ -1,3 +1,22 @@ + + --- title: Getting Started component: useralejs diff --git a/site/_docs/useralejs/modifying.md b/site/_docs/useralejs/modifying.md index 843464d..5f1fc5f 100644 --- a/site/_docs/useralejs/modifying.md +++ b/site/_docs/useralejs/modifying.md @@ -1,3 +1,22 @@ + + --- title: Modifying UserALE.js Source Code component: useralejs diff --git a/site/_docs/useralejs/troubleshooting.md b/site/_docs/useralejs/troubleshooting.md index f362e22..24de971 100644 --- a/site/_docs/useralejs/troubleshooting.md +++ b/site/_docs/useralejs/troubleshooting.md @@ -1,3 +1,22 @@ + + --- title: Troubleshooting component: useralejs diff --git a/site/_includes/doc_sidebar.html b/site/_includes/doc_sidebar.html index f4ce3f5..a9b2f55 100644 --- a/site/_includes/doc_sidebar.html +++ b/site/_includes/doc_sidebar.html @@ -1,3 +1,22 @@ + + {% assign flagon = site.docs | where:"component", "flagon" | sort: "priority" %} {% assign useralejs = site.docs | where:"component", "useralejs" | sort: "priority" %} {% assign distill = site.docs | where:"component", "distill" | sort: "priority" %} diff --git a/site/_includes/footer.html b/site/_includes/footer.html index d8b1e1a..94b48c0 100644 --- a/site/_includes/footer.html +++ b/site/_includes/footer.html @@ -1,3 +1,22 @@ + +