From 68197cc3e2766a97f179480921c338af1d2bafb0 Mon Sep 17 00:00:00 2001 From: "C. Alexander Leigh" Date: Tue, 14 Feb 2023 16:31:34 -0800 Subject: [PATCH] The cleaning fire for 2023 & version 19 --- build.gradle | 2 +- lc-elements-esp/build.gradle | 25 - .../elements/esp/ElementsScreenService.java | 30 - lc-elements-sdk-js/.gitignore | 4 - lc-elements-sdk-js/build.sh | 6 - lc-elements-sdk-js/dist/test.html | 143 - lc-elements-sdk-js/package-lock.json | 7544 ----------------- lc-elements-sdk-js/package.json | 43 - lc-elements-sdk-js/rollup.config.js | 39 - lc-elements-sdk-js/src/index.js | 1504 ---- lc-elements-sdk-js/webpack.config.js | 35 - lc-elements-sdk/build.gradle | 23 - .../java/lc/elements/ElementsConstants.java | 6 - .../schema/action/SchemaGenerator.java | 66 - .../action/v1/AttributeSetElementDAO.java | 143 - .../schema/action/v1/TriggerElementDAO.java | 73 - .../schema/command/SchemaGenerator.java | 146 - .../v1/ScreenGraphRequestElementDAO.java | 38 - .../v1/ScreenGraphResponseElementDAO.java | 138 - .../Dataframe_filter_requestElementDAO.java | 108 - .../Dataframe_filter_responseElementDAO.java | 73 - .../v18/Dataframe_filter_specElementDAO.java | 108 - ...ataframe_obj_create_requestElementDAO.java | 73 - ...taframe_obj_create_responseElementDAO.java | 73 - ...ataframe_obj_delete_requestElementDAO.java | 108 - ...taframe_obj_delete_responseElementDAO.java | 73 - ...ataframe_obj_update_requestElementDAO.java | 178 - ...taframe_obj_update_responseElementDAO.java | 73 - .../v18/Dataframe_read_requestElementDAO.java | 238 - .../Dataframe_read_responseElementDAO.java | 73 - .../Dataframe_select_requestElementDAO.java | 143 - .../Dataframe_select_responseElementDAO.java | 73 - .../v18/Dataframe_sort_requestElementDAO.java | 108 - .../Dataframe_sort_responseElementDAO.java | 73 - .../v18/Dataframe_sort_specElementDAO.java | 108 - .../schema/command/v18/ErrorElementDAO.java | 138 - .../schema/event/SchemaGenerator.java | 54 - .../event/v1/ScreenUpdateElementDAO.java | 73 - .../schema/screen/SchemaGenerator.java | 100 - .../screen/v1/FormLayoutElementDAO.java | 73 - .../schema/screen/v1/PanelElementDAO.java | 108 - .../schema/screen/v1/ScreenElementDAO.java | 73 - .../screen/v1/TableColumnCfgElementDAO.java | 178 - .../schema/screen/v1/TableElementDAO.java | 108 - .../schema/screen/v1/TextFieldElementDAO.java | 108 - .../screen/v18/DataframeElementDAO.java | 208 - .../screen/v18/Form_layoutElementDAO.java | 73 - .../schema/screen/v18/PanelElementDAO.java | 108 - .../schema/screen/v18/ScreenElementDAO.java | 143 - .../schema/screen/v18/TableElementDAO.java | 143 - .../screen/v18/Table_col_cfgElementDAO.java | 213 - .../screen/v18/Text_fieldElementDAO.java | 213 - lc-esp-cli-sdk/build.gradle | 25 - .../main/java/lc/esp/cli/sdk/CLIClient.java | 42 - .../main/java/lc/esp/cli/sdk/CLIRequest.java | 46 - .../main/java/lc/esp/cli/sdk/CLIResponse.java | 45 - .../main/java/lc/esp/cli/sdk/CLIService.java | 54 - lc-esp-engine-svc/.gitignore | 1 - lc-esp-engine-svc/LICENSE.md | 636 -- lc-esp-engine-svc/build.gradle | 70 - .../lc/esp/engine/service/EngineService.java | 66 - .../lc/esp/engine/service/EnhancedBroker.java | 82 - .../engine/service/EnhancedBrokerPlugin.java | 15 - .../esp/engine/service/NoisyBrokerFilter.java | 429 - lc-esp-monitor-app/.gitignore | 1 - lc-esp-monitor-app/build.gradle | 49 - .../java/lc/esp/monitor/app/MonitorApp.java | 36 - lc-esp-sdk-js/.babelrc | 16 - lc-esp-sdk-js/.gitignore | 2 - lc-esp-sdk-js/build.sh | 6 - lc-esp-sdk-js/dist/test.html | 16 - lc-esp-sdk-js/package-lock.json | 7366 ---------------- lc-esp-sdk-js/package.json | 37 - lc-esp-sdk-js/rollup.config.js | 39 - lc-esp-sdk-js/src/index.js | 1275 --- lc-esp-sdk-js/webpack.config.js | 12 - lc-esp-sdk/LICENSE.md | 636 -- lc-esp-sdk/build.gradle | 28 - .../src/main/java/lc/esp/sdk/AsyncSender.java | 36 - .../src/main/java/lc/esp/sdk/ESPAddress.java | 226 - .../main/java/lc/esp/sdk/ESPAddressClass.java | 24 - .../src/main/java/lc/esp/sdk/ESPClient.java | 95 - .../src/main/java/lc/esp/sdk/ESPConsumer.java | 56 - .../src/main/java/lc/esp/sdk/ESPMessage.java | 206 - .../main/java/lc/esp/sdk/ESPMessageClass.java | 44 - .../src/main/java/lc/esp/sdk/ESPProducer.java | 44 - .../main/java/lc/esp/sdk/ESPRequestor.java | 91 - .../src/main/java/lc/esp/sdk/ESPSession.java | 35 - .../main/java/lc/esp/sdk/SchemaGenerator.java | 60 - .../v18/Graph_state_requestElementDAO.java | 38 - .../v18/Graph_state_responseElementDAO.java | 108 - .../sdk/schema/v18/Graph_txnElementDAO.java | 108 - .../lc/esp/sdk/service/ChangeStreamer.java | 39 - .../java/lc/esp/sdk/service/ESPService.java | 58 - .../lc/esp/sdk/telemetry/TelemetryFrame.java | 130 - .../lc/esp/sdk/telemetry/TelemetrySymbol.java | 131 - lc-esp-service-clock/LICENSE.md | 490 -- lc-esp-service-clock/build.gradle | 21 - .../lc/esp/service/clock/ClockService.java | 51 - lc-esp-test-sdk/build.gradle | 25 - .../esp/test/schema/v1/BeaconElementDAO.java | 108 - .../schema/v1/Greeting_requestElementDAO.java | 73 - .../v1/Greeting_responseElementDAO.java | 73 - .../java/lc/esp/test/sdk/SchemaGenerator.java | 71 - lc-esp-test-svc/build.gradle | 23 - .../java/lc/esp/test/svc/BeaconEndpoint.java | 59 - .../lc/esp/test/svc/GraphStreamEndpoint.java | 110 - .../java/lc/esp/test/svc/GreeterEndpoint.java | 31 - .../java/lc/esp/test/svc/TestService.java | 55 - lc-evelyn-svc/build.gradle | 25 - .../java/lc/evelyn/svc/EvelynCommands.java | 43 - .../java/lc/evelyn/svc/EvelynService.java | 27 - lc-example-graphql/build.gradle | 2 +- lc-gdn-chef/LICENSE.md | 492 -- lc-gdn-chef/cookbooks/acme/.rubocop.yml | 6 - lc-gdn-chef/cookbooks/acme/Berksfile | 8 - lc-gdn-chef/cookbooks/acme/Berksfile.lock | 22 - lc-gdn-chef/cookbooks/acme/LICENSE | 201 - lc-gdn-chef/cookbooks/acme/README.md | 213 - .../cookbooks/acme/attributes/default.rb | 29 - lc-gdn-chef/cookbooks/acme/chefignore | 94 - .../cookbooks/acme/kitchen.digitalocean.yml | 8 - lc-gdn-chef/cookbooks/acme/kitchen.dokken.yml | 56 - lc-gdn-chef/cookbooks/acme/kitchen.yml | 34 - lc-gdn-chef/cookbooks/acme/libraries/acme.rb | 116 - lc-gdn-chef/cookbooks/acme/metadata.json | 34 - lc-gdn-chef/cookbooks/acme/metadata.rb | 13 - lc-gdn-chef/cookbooks/acme/recipes/default.rb | 27 - .../cookbooks/acme/resources/certificate.rb | 168 - .../cookbooks/acme/resources/selfsigned.rb | 67 - .../cookbooks/acme/resources/ssl_key.rb | 61 - .../acme/templates/acme-challange.nginx.erb | 8 - .../cookbooks/apache2/CHANGELOG-pre4.md | 493 -- lc-gdn-chef/cookbooks/apache2/CHANGELOG.md | 283 - lc-gdn-chef/cookbooks/apache2/LICENSE | 201 - lc-gdn-chef/cookbooks/apache2/README.md | 140 - lc-gdn-chef/cookbooks/apache2/chefignore | 115 - .../files/apache2_module_conf_generate.pl | 40 - .../cookbooks/apache2/libraries/helpers.rb | 500 -- lc-gdn-chef/cookbooks/apache2/metadata.json | 43 - lc-gdn-chef/cookbooks/apache2/metadata.rb | 24 - .../cookbooks/apache2/resources/conf.rb | 47 - .../cookbooks/apache2/resources/config.rb | 106 - .../apache2/resources/default_site.rb | 95 - .../cookbooks/apache2/resources/install.rb | 406 - .../cookbooks/apache2/resources/mod.rb | 30 - .../apache2/resources/mod_actions.rb | 17 - .../cookbooks/apache2/resources/mod_alias.rb | 35 - .../apache2/resources/mod_auth_cas.rb | 133 - .../apache2/resources/mod_autoindex.rb | 34 - .../apache2/resources/mod_cache_disk.rb | 30 - .../cookbooks/apache2/resources/mod_cgid.rb | 16 - .../cookbooks/apache2/resources/mod_dav_fs.rb | 18 - .../apache2/resources/mod_deflate.rb | 29 - .../cookbooks/apache2/resources/mod_dir.rb | 24 - .../apache2/resources/mod_fastcgi.rb | 30 - .../cookbooks/apache2/resources/mod_fcgid.rb | 24 - .../apache2/resources/mod_include.rb | 24 - .../cookbooks/apache2/resources/mod_info.rb | 17 - .../cookbooks/apache2/resources/mod_ldap.rb | 29 - .../cookbooks/apache2/resources/mod_mime.rb | 49 - .../apache2/resources/mod_mime_magic.rb | 18 - .../apache2/resources/mod_mpm_event.rb | 54 - .../apache2/resources/mod_mpm_prefork.rb | 44 - .../apache2/resources/mod_mpm_worker.rb | 54 - .../apache2/resources/mod_negotiation.rb | 24 - .../apache2/resources/mod_pagespeed.rb | 109 - .../cookbooks/apache2/resources/mod_php.rb | 48 - .../cookbooks/apache2/resources/mod_proxy.rb | 35 - .../apache2/resources/mod_proxy_balancer.rb | 29 - .../apache2/resources/mod_proxy_ftp.rb | 29 - .../apache2/resources/mod_reqtimeout.rb | 21 - .../apache2/resources/mod_setenvif.rb | 44 - .../cookbooks/apache2/resources/mod_ssl.rb | 110 - .../cookbooks/apache2/resources/mod_status.rb | 37 - .../apache2/resources/mod_userdir.rb | 25 - .../cookbooks/apache2/resources/mod_wsgi.rb | 39 - .../cookbooks/apache2/resources/module.rb | 71 - .../cookbooks/apache2/resources/site.rb | 26 - .../cookbooks/apache2/templates/a2enmod.erb | 541 -- .../apache2/templates/apache2.conf.erb | 171 - .../apache2/templates/charset.conf.erb | 9 - .../apache2/templates/default-site.conf.erb | 31 - .../cookbooks/apache2/templates/envvars.erb | 51 - .../apache2/templates/etc-sysconfig-httpd.erb | 37 - .../apache2/templates/mods/actions.conf.erb | 14 - .../apache2/templates/mods/alias.conf.erb | 22 - .../apache2/templates/mods/auth_cas.conf.erb | 8 - .../apache2/templates/mods/auth_cas.load.erb | 1 - .../templates/mods/authopenid.load.erb | 1 - .../apache2/templates/mods/autoindex.conf.erb | 97 - .../templates/mods/cache_disk.conf.erb | 5 - .../apache2/templates/mods/cgid.conf.erb | 1 - .../apache2/templates/mods/dav_fs.conf.erb | 1 - .../apache2/templates/mods/deflate.conf.erb | 9 - .../apache2/templates/mods/dir.conf.erb | 3 - .../apache2/templates/mods/fastcgi.conf.erb | 7 - .../apache2/templates/mods/fcgid.conf.erb | 9 - .../apache2/templates/mods/include.conf.erb | 13 - .../apache2/templates/mods/info.conf.erb | 7 - .../apache2/templates/mods/ldap.conf.erb | 4 - .../apache2/templates/mods/mime.conf.erb | 109 - .../templates/mods/mime_magic.conf.erb | 3 - .../apache2/templates/mods/mpm_event.conf.erb | 11 - .../templates/mods/mpm_prefork.conf.erb | 9 - .../templates/mods/mpm_worker.conf.erb | 11 - .../templates/mods/negotiation.conf.erb | 17 - .../apache2/templates/mods/pagespeed.conf.erb | 95 - .../apache2/templates/mods/php.conf.erb | 25 - .../apache2/templates/mods/proxy.conf.erb | 16 - .../templates/mods/proxy_balancer.conf.erb | 10 - .../apache2/templates/mods/proxy_ftp.conf.erb | 12 - .../templates/mods/reqtimeout.conf.erb | 26 - .../apache2/templates/mods/setenvif.conf.erb | 19 - .../apache2/templates/mods/ssl.conf.erb | 101 - .../apache2/templates/mods/status.conf.erb | 25 - .../apache2/templates/mods/userdir.conf.erb | 15 - .../apache2/templates/ports.conf.erb | 6 - .../apache2/templates/security.conf.erb | 38 - .../apache2/templates/web_app.conf.erb | 41 - .../apache2/templates/welcome.conf.erb | 59 - lc-gdn-chef/cookbooks/dovecot/.coveralls.yml | 1 - lc-gdn-chef/cookbooks/dovecot/.gitignore | 26 - .../cookbooks/dovecot/.kitchen.cloud.yml | 54 - .../cookbooks/dovecot/.kitchen.docker.yml | 26 - lc-gdn-chef/cookbooks/dovecot/.kitchen.yml | 82 - lc-gdn-chef/cookbooks/dovecot/.rubocop.yml | 6 - lc-gdn-chef/cookbooks/dovecot/.travis.yml | 47 - lc-gdn-chef/cookbooks/dovecot/.yardopts | 6 - lc-gdn-chef/cookbooks/dovecot/Berksfile | 33 - lc-gdn-chef/cookbooks/dovecot/CHANGELOG.md | 188 - lc-gdn-chef/cookbooks/dovecot/CONTRIBUTING.md | 11 - lc-gdn-chef/cookbooks/dovecot/Gemfile | 64 - lc-gdn-chef/cookbooks/dovecot/Guardfile | 89 - lc-gdn-chef/cookbooks/dovecot/LICENSE | 190 - lc-gdn-chef/cookbooks/dovecot/README.md | 1144 --- lc-gdn-chef/cookbooks/dovecot/Rakefile | 150 - lc-gdn-chef/cookbooks/dovecot/TESTING.md | 152 - lc-gdn-chef/cookbooks/dovecot/TODO.md | 7 - lc-gdn-chef/cookbooks/dovecot/Vagrantfile | 124 - .../cookbooks/dovecot/attributes/auth.rb | 22 - .../dovecot/attributes/conf_10_auth.rb | 42 - .../dovecot/attributes/conf_10_director.rb | 28 - .../dovecot/attributes/conf_10_logging.rb | 38 - .../dovecot/attributes/conf_10_mail.rb | 76 - .../dovecot/attributes/conf_10_master.rb | 28 - .../dovecot/attributes/conf_10_replication.rb | 24 - .../dovecot/attributes/conf_10_ssl.rb | 76 - .../dovecot/attributes/conf_15_lda.rb | 34 - .../dovecot/attributes/conf_20_lmtp.rb | 28 - .../dovecot/attributes/conf_dovecot.rb | 36 - .../dovecot/attributes/conf_dovecot_db.rb | 24 - .../attributes/conf_dovecot_dict_auth.rb | 30 - .../attributes/conf_dovecot_dict_sql.rb | 24 - .../dovecot/attributes/conf_dovecot_ldap.rb | 54 - .../dovecot/attributes/conf_dovecot_sql.rb | 29 - .../dovecot/attributes/conf_files.rb | 79 - .../dovecot/attributes/create_pwfile.rb | 23 - .../cookbooks/dovecot/attributes/default.rb | 36 - .../dovecot/attributes/namespaces.rb | 22 - .../dovecot/attributes/ohai_plugin.rb | 22 - .../cookbooks/dovecot/attributes/packages.rb | 64 - .../cookbooks/dovecot/attributes/plugins.rb | 28 - .../cookbooks/dovecot/attributes/protocols.rb | 22 - .../cookbooks/dovecot/attributes/service.rb | 41 - .../cookbooks/dovecot/attributes/services.rb | 22 - .../cookbooks/dovecot/libraries/auth.rb | 38 - .../cookbooks/dovecot/libraries/conf.rb | 103 - .../dovecot/libraries/conf_require.rb | 45 - .../dovecot/libraries/conf_templates.rb | 150 - .../cookbooks/dovecot/libraries/plugins.rb | 49 - .../cookbooks/dovecot/libraries/protocols.rb | 35 - .../cookbooks/dovecot/libraries/pwfile.rb | 163 - lc-gdn-chef/cookbooks/dovecot/metadata.rb | 1884 ---- .../cookbooks/dovecot/recipes/conf_files.rb | 84 - .../dovecot/recipes/create_pwfile.rb | 65 - .../cookbooks/dovecot/recipes/default.rb | 26 - .../cookbooks/dovecot/recipes/from_package.rb | 42 - .../cookbooks/dovecot/recipes/ohai_plugin.rb | 39 - .../cookbooks/dovecot/recipes/service.rb | 28 - lc-gdn-chef/cookbooks/dovecot/recipes/user.rb | 43 - .../templates/default/conf.d/10-auth.conf.erb | 131 - .../default/conf.d/10-director.conf.erb | 67 - .../default/conf.d/10-logging.conf.erb | 91 - .../templates/default/conf.d/10-mail.conf.erb | 401 - .../default/conf.d/10-master.conf.erb | 160 - .../templates/default/conf.d/10-ssl.conf.erb | 81 - .../default/conf.d/10-tcpwrapper.conf.erb | 22 - .../templates/default/conf.d/15-lda.conf.erb | 54 - .../default/conf.d/15-mailboxes.conf.erb | 80 - .../default/conf.d/15-replication.conf.erb | 20 - .../templates/default/conf.d/20-imap.conf.erb | 81 - .../templates/default/conf.d/20-lmtp.conf.erb | 32 - .../default/conf.d/20-managesieve.conf.erb | 87 - .../templates/default/conf.d/20-pop3.conf.erb | 105 - .../templates/default/conf.d/90-acl.conf.erb | 25 - .../default/conf.d/90-plugin.conf.erb | 23 - .../default/conf.d/90-quota.conf.erb | 95 - .../default/conf.d/90-sieve.conf.erb | 89 - .../conf.d/auth-checkpassword.conf.ext.erb | 31 - .../default/conf.d/auth-deny.conf.ext.erb | 21 - .../default/conf.d/auth-dict.conf.ext.erb | 26 - .../default/conf.d/auth-ldap.conf.ext.erb | 43 - .../default/conf.d/auth-master.conf.ext.erb | 22 - .../conf.d/auth-passwdfile.conf.ext.erb | 30 - .../default/conf.d/auth-sql.conf.ext.erb | 40 - .../default/conf.d/auth-static.conf.ext.erb | 34 - .../default/conf.d/auth-system.conf.ext.erb | 84 - .../default/conf.d/auth-vpopmail.conf.ext.erb | 27 - .../templates/default/dovecot-db.conf.ext.erb | 19 - .../default/dovecot-dict-auth.conf.ext.erb | 68 - .../default/dovecot-dict-sql.conf.ext.erb | 53 - .../default/dovecot-ldap.conf.ext.erb | 145 - .../default/dovecot-sql.conf.ext.erb | 146 - .../templates/default/dovecot.conf.erb | 116 - .../default/ohai7_plugins/dovecot.rb.erb | 75 - .../default/ohai_plugins/dovecot.rb.erb | 64 - .../dovecot/templates/default/password.erb | 3 - lc-gdn-chef/cookbooks/firewall/CHANGELOG.md | 409 - lc-gdn-chef/cookbooks/firewall/LICENSE | 202 - lc-gdn-chef/cookbooks/firewall/README.md | 398 - lc-gdn-chef/cookbooks/firewall/TODO.md | 5 - .../cookbooks/firewall/attributes/default.rb | 5 - .../firewall/attributes/firewalld.rb | 1 - .../cookbooks/firewall/attributes/iptables.rb | 17 - .../cookbooks/firewall/attributes/ufw.rb | 12 - .../cookbooks/firewall/attributes/windows.rb | 8 - lc-gdn-chef/cookbooks/firewall/chefignore | 115 - .../cookbooks/firewall/kitchen.dokken.yml | 62 - .../cookbooks/firewall/kitchen.windows.yml | 18 - .../cookbooks/firewall/libraries/helpers.rb | 105 - .../firewall/libraries/helpers_firewalld.rb | 116 - .../libraries/helpers_firewalld_dbus.rb | 72 - .../firewall/libraries/helpers_iptables.rb | 112 - .../firewall/libraries/helpers_nftables.rb | 159 - .../firewall/libraries/helpers_ufw.rb | 135 - .../firewall/libraries/helpers_windows.rb | 129 - .../libraries/provider_firewall_firewalld.rb | 179 - .../libraries/provider_firewall_iptables.rb | 171 - .../provider_firewall_iptables_ubuntu.rb | 200 - .../provider_firewall_iptables_ubuntu1404.rb | 200 - .../libraries/provider_firewall_rule.rb | 34 - .../libraries/provider_firewall_ufw.rb | 138 - .../libraries/provider_firewall_windows.rb | 126 - .../firewall/libraries/resource_firewall.rb | 26 - .../libraries/resource_firewall_rule.rb | 51 - lc-gdn-chef/cookbooks/firewall/metadata.json | 35 - lc-gdn-chef/cookbooks/firewall/metadata.rb | 15 - .../cookbooks/firewall/recipes/default.rb | 76 - .../firewall/recipes/disable_firewall.rb | 23 - .../cookbooks/firewall/resources/firewalld.rb | 28 - .../firewall/resources/firewalld_config.rb | 39 - .../firewall/resources/firewalld_helpers.rb | 106 - .../firewall/resources/firewalld_icmptype.rb | 88 - .../firewall/resources/firewalld_ipset.rb | 104 - .../firewall/resources/firewalld_policy.rb | 115 - .../firewall/resources/firewalld_service.rb | 98 - .../firewall/resources/firewalld_zone.rb | 118 - .../cookbooks/firewall/resources/nftables.rb | 70 - .../firewall/resources/nftables_rule.rb | 113 - .../templates/default/ufw/default.erb | 13 - .../cookbooks/haproxy/.markdownlint.json | 6 - lc-gdn-chef/cookbooks/haproxy/CHANGELOG.md | 769 -- lc-gdn-chef/cookbooks/haproxy/LICENSE | 201 - lc-gdn-chef/cookbooks/haproxy/README.md | 161 - lc-gdn-chef/cookbooks/haproxy/chefignore | 115 - .../cookbooks/haproxy/files/haproxy-default | 0 .../cookbooks/haproxy/libraries/helpers.rb | 85 - .../cookbooks/haproxy/libraries/resource.rb | 52 - .../cookbooks/haproxy/libraries/template.rb | 9 - lc-gdn-chef/cookbooks/haproxy/metadata.json | 40 - lc-gdn-chef/cookbooks/haproxy/metadata.rb | 16 - .../cookbooks/haproxy/resources/acl.rb | 40 - .../cookbooks/haproxy/resources/backend.rb | 82 - .../cookbooks/haproxy/resources/cache.rb | 40 - .../haproxy/resources/config_defaults.rb | 64 - .../haproxy/resources/config_global.rb | 70 - .../cookbooks/haproxy/resources/fastcgi.rb | 53 - .../cookbooks/haproxy/resources/frontend.rb | 89 - .../cookbooks/haproxy/resources/install.rb | 182 - .../cookbooks/haproxy/resources/listen.rb | 109 - .../cookbooks/haproxy/resources/mailer.rb | 33 - .../haproxy/resources/partial/_config_file.rb | 35 - .../resources/partial/_extra_options.rb | 2 - .../cookbooks/haproxy/resources/peer.rb | 61 - .../cookbooks/haproxy/resources/resolver.rb | 35 - .../cookbooks/haproxy/resources/service.rb | 91 - .../haproxy/resources/use_backend.rb | 43 - .../cookbooks/haproxy/resources/userlist.rb | 35 - .../haproxy/templates/default/haproxy.cfg.erb | 462 - lc-gdn-chef/cookbooks/hbase_cluster/README.md | 272 - lc-gdn-chef/cookbooks/hbase_cluster/TODO | 64 - .../hbase_cluster/attributes/default.rb | 78 - .../hbase_cluster/attributes/tunables.rb | 298 - .../cookbooks/hbase_cluster/metadata.json | 1049 --- .../cookbooks/hbase_cluster/metadata.rb | 389 - .../hbase_cluster/recipes/backup_tables.rb | 29 - .../cookbooks/hbase_cluster/recipes/config.rb | 91 - .../hbase_cluster/recipes/dashboard.rb | 88 - .../hbase_cluster/recipes/default.rb | 59 - .../cookbooks/hbase_cluster/recipes/master.rb | 36 - .../hbase_cluster/recipes/regionserver.rb | 36 - .../hbase_cluster/recipes/stargate.rb | 36 - .../cookbooks/hbase_cluster/recipes/thrift.rb | 36 - .../templates/default/bin-hbase.erb | 320 - .../templates/default/dashpot-hbase.html.erb | 25 - .../templates/default/etc_default_hbase.erb | 13 - .../default/export_hbase_tables.rb.erb | 12 - .../default/hadoop-metrics.properties.erb | 61 - .../templates/default/hbase-env.sh.erb | 90 - .../hbase-jruby_home-and-jruby_opts.patch | 29 - .../templates/default/hbase-site.xml.erb | 95 - .../default/sv-hbase_master-log-run.erb | 2 - .../templates/default/sv-hbase_master-run.erb | 24 - .../default/sv-hbase_regionserver-log-run.erb | 2 - .../default/sv-hbase_regionserver-run.erb | 24 - .../default/sv-hbase_stargate-log-run.erb | 2 - .../default/sv-hbase_stargate-run.erb | 24 - .../default/sv-hbase_thrift-log-run.erb | 2 - .../templates/default/sv-hbase_thrift-run.erb | 24 - lc-gdn-chef/cookbooks/lc-gdn-mail/metadata.rb | 4 - .../lc-gdn-mail/recipes/mx0-relay.rb | 69 - .../cookbooks/lc-gdn-minecraft/metadata.rb | 2 - .../lc-gdn-minecraft/recipes/neweden-relay.rb | 39 - lc-gdn-chef/cookbooks/lc/metadata.rb | 1 - lc-gdn-chef/cookbooks/lc/recipes/hostname.rb | 3 - lc-gdn-chef/cookbooks/lc/recipes/ssh.rb | 7 - lc-gdn-chef/cookbooks/postfix/CHANGELOG.md | 313 - lc-gdn-chef/cookbooks/postfix/LICENSE | 202 - lc-gdn-chef/cookbooks/postfix/README.md | 477 -- .../cookbooks/postfix/attributes/default.rb | 410 - lc-gdn-chef/cookbooks/postfix/chefignore | 115 - .../cookbooks/postfix/kitchen.dokken.yml | 68 - lc-gdn-chef/cookbooks/postfix/metadata.json | 45 - lc-gdn-chef/cookbooks/postfix/metadata.rb | 20 - .../cookbooks/postfix/recipes/_attributes.rb | 53 - .../cookbooks/postfix/recipes/_common.rb | 198 - .../cookbooks/postfix/recipes/access.rb | 27 - .../cookbooks/postfix/recipes/aliases.rb | 29 - .../cookbooks/postfix/recipes/client.rb | 44 - .../cookbooks/postfix/recipes/default.rb | 36 - lc-gdn-chef/cookbooks/postfix/recipes/maps.rb | 44 - .../postfix/recipes/relay_restrictions.rb | 29 - .../cookbooks/postfix/recipes/sasl_auth.rb | 57 - .../cookbooks/postfix/recipes/server.rb | 24 - .../cookbooks/postfix/recipes/transports.rb | 29 - .../postfix/recipes/virtual_aliases.rb | 28 - .../recipes/virtual_aliases_domains.rb | 28 - .../cookbooks/postfix/templates/access.erb | 9 - .../cookbooks/postfix/templates/aliases.erb | 10 - .../cookbooks/postfix/templates/mailer.erb | 10 - .../cookbooks/postfix/templates/main.cf.erb | 14 - .../templates/manifest-postfix.xml.erb | 84 - .../cookbooks/postfix/templates/maps.erb | 8 - .../cookbooks/postfix/templates/master.cf.erb | 67 - .../cookbooks/postfix/templates/port_smtp.erb | 2 - .../postfix/templates/recipient_canonical.erb | 9 - .../postfix/templates/relay_restrictions.erb | 10 - .../postfix/templates/sasl_passwd.erb | 8 - .../postfix/templates/sender_canonical.erb | 9 - .../postfix/templates/smtp_generic.erb | 9 - .../cookbooks/postfix/templates/transport.erb | 9 - .../postfix/templates/virtual_aliases.erb | 9 - .../templates/virtual_aliases_domains.erb | 9 - lc-gdn-chef/cookbooks/prometheus/.foodcritic | 1 - lc-gdn-chef/cookbooks/prometheus/.gitignore | 21 - lc-gdn-chef/cookbooks/prometheus/.hound.yml | 8 - .../cookbooks/prometheus/.kitchen.dokken.yml | 93 - lc-gdn-chef/cookbooks/prometheus/.kitchen.yml | 75 - lc-gdn-chef/cookbooks/prometheus/.rubocop.yml | 37 - lc-gdn-chef/cookbooks/prometheus/.travis.yml | 24 - lc-gdn-chef/cookbooks/prometheus/Berksfile | 3 - lc-gdn-chef/cookbooks/prometheus/CHANGELOG.md | 75 - .../cookbooks/prometheus/CONTRIBUTING.md | 51 - lc-gdn-chef/cookbooks/prometheus/Gemfile | 36 - lc-gdn-chef/cookbooks/prometheus/ISSUES.md | 42 - lc-gdn-chef/cookbooks/prometheus/LICENSE | 201 - lc-gdn-chef/cookbooks/prometheus/README.md | 176 - lc-gdn-chef/cookbooks/prometheus/Rakefile | 45 - lc-gdn-chef/cookbooks/prometheus/Thorfile | 12 - lc-gdn-chef/cookbooks/prometheus/Vagrantfile | 90 - .../prometheus/attributes/default.rb | 274 - lc-gdn-chef/cookbooks/prometheus/chefignore | 94 - .../prometheus/libraries/prometheus_helper.rb | 19 - lc-gdn-chef/cookbooks/prometheus/metadata.rb | 25 - .../prometheus/recipes/alertmanager.rb | 141 - .../prometheus/recipes/alertmanager_binary.rb | 39 - .../prometheus/recipes/alertmanager_source.rb | 36 - .../cookbooks/prometheus/recipes/binary.rb | 39 - .../cookbooks/prometheus/recipes/default.rb | 75 - .../cookbooks/prometheus/recipes/service.rb | 87 - .../prometheus/recipes/shell_binary.rb | 40 - .../cookbooks/prometheus/recipes/source.rb | 45 - .../cookbooks/prometheus/recipes/use_lwrp.rb | 30 - .../cookbooks/prometheus/resources/job.rb | 33 - .../cookbooks/prometheus/spec/spec_helper.rb | 10 - .../prometheus/spec/support/matchers.rb | 4 - .../spec/unit/recipes/alertmanager_spec.rb | 303 - .../spec/unit/recipes/default_spec.rb | 261 - .../templates/centos/prometheus.erb | 155 - .../templates/debian/prometheus.erb | 155 - .../templates/default/alertmanager.init.erb | 2 - .../templates/default/alertmanager.pill.erb | 14 - .../templates/default/alertmanager.yml.erb | 115 - .../default/debian/default/alertmanager.erb | 3 - .../default/debian/default/prometheus.erb | 3 - .../templates/default/prometheus.pill.erb | 11 - .../templates/default/prometheus.yml.erb | 34 - .../default/redhat/sysconfig/alertmanager.erb | 3 - .../default/redhat/sysconfig/prometheus.erb | 3 - .../templates/default/sv-prometheus-run.erb | 5 - .../default/systemd/alertmanager.service.erb | 16 - .../default/systemd/prometheus.service.erb | 15 - .../default/upstart/alertmanager.service.erb | 14 - .../default/upstart/prometheus.service.erb | 15 - .../templates/redhat/prometheus.erb | 155 - .../templates/ubuntu/prometheus.erb | 155 - .../alertmanager/serverspec/default_spec.rb | 17 - .../bluepill-binary/serverspec/binary_spec.rb | 17 - .../bluepill/serverspec/source_spec.rb | 17 - .../default-binary/serverspec/binary_spec.rb | 17 - .../default/serverspec/source_spec.rb | 17 - .../init-binary/serverspec/binary_spec.rb | 17 - .../init/serverspec/source_spec.rb | 17 - .../prometheus/test/shared/spec_helper.rb | 12 - lc-gdn-chef/cookbooks/selinux/CHANGELOG.md | 205 - lc-gdn-chef/cookbooks/selinux/LICENSE | 201 - lc-gdn-chef/cookbooks/selinux/README.md | 85 - lc-gdn-chef/cookbooks/selinux/chefignore | 115 - .../cookbooks/selinux/libraries/boolean.rb | 17 - .../cookbooks/selinux/libraries/install.rb | 22 - .../cookbooks/selinux/libraries/state.rb | 43 - lc-gdn-chef/cookbooks/selinux/metadata.json | 38 - lc-gdn-chef/cookbooks/selinux/metadata.rb | 13 - .../cookbooks/selinux/recipes/disabled.rb | 23 - .../cookbooks/selinux/recipes/enforcing.rb | 24 - .../cookbooks/selinux/recipes/permissive.rb | 23 - .../cookbooks/selinux/resources/boolean.rb | 56 - .../cookbooks/selinux/resources/fcontext.rb | 132 - .../cookbooks/selinux/resources/install.rb | 54 - .../cookbooks/selinux/resources/module.rb | 125 - .../cookbooks/selinux/resources/permissive.rb | 46 - .../cookbooks/selinux/resources/port.rb | 98 - .../cookbooks/selinux/resources/state.rb | 114 - .../selinux/templates/debian/selinux.erb | 18 - .../selinux/templates/default/selinux.erb | 15 - lc-gdn-chef/cookbooks/wn_opentsdb/LICENSE | 202 - lc-gdn-chef/cookbooks/wn_opentsdb/README.md | 94 - .../wn_opentsdb/attributes/default.rb | 12 - .../wn_opentsdb/files/default/logback.xml | 45 - .../wn_opentsdb/files/default/opentsdb.init | 175 - .../files/default/tsd-server-stats.sh | 12 - .../wn_opentsdb/files/default/tsd.init | 80 - lc-gdn-chef/cookbooks/wn_opentsdb/metadata.rb | 14 - .../cookbooks/wn_opentsdb/recipes/default.rb | 112 - .../templates/default/opentsdb.conf.erb | 6 - .../templates/default/tsd.sysconfig.erb | 5 - lc-gdn-chef/cookbooks/yum-epel/CHANGELOG.md | 230 - lc-gdn-chef/cookbooks/yum-epel/LICENSE | 202 - lc-gdn-chef/cookbooks/yum-epel/README.md | 125 - .../cookbooks/yum-epel/attributes/default.rb | 28 - .../yum-epel/attributes/epel-debuginfo.rb | 15 - .../attributes/epel-modular-debuginfo.rb | 8 - .../attributes/epel-modular-source.rb | 8 - .../yum-epel/attributes/epel-modular.rb | 8 - .../attributes/epel-next-debuginfo.rb | 11 - .../yum-epel/attributes/epel-next-source.rb | 11 - .../attributes/epel-next-testing-debuginfo.rb | 11 - .../attributes/epel-next-testing-source.rb | 11 - .../yum-epel/attributes/epel-next-testing.rb | 11 - .../yum-epel/attributes/epel-next.rb | 10 - .../attributes/epel-playground-debuginfo.rb | 8 - .../attributes/epel-playground-source.rb | 8 - .../yum-epel/attributes/epel-playground.rb | 8 - .../yum-epel/attributes/epel-source.rb | 15 - .../attributes/epel-testing-debuginfo.rb | 15 - .../epel-testing-modular-debuginfo.rb | 8 - .../attributes/epel-testing-modular-source.rb | 8 - .../attributes/epel-testing-modular.rb | 8 - .../attributes/epel-testing-source.rb | 15 - .../yum-epel/attributes/epel-testing.rb | 15 - .../cookbooks/yum-epel/attributes/epel.rb | 23 - lc-gdn-chef/cookbooks/yum-epel/chefignore | 115 - .../cookbooks/yum-epel/kitchen.dokken.yml | 51 - .../cookbooks/yum-epel/libraries/helpers.rb | 46 - lc-gdn-chef/cookbooks/yum-epel/metadata.json | 41 - lc-gdn-chef/cookbooks/yum-epel/metadata.rb | 16 - .../cookbooks/yum-epel/recipes/default.rb | 27 - lc-gdn-chef/dist.sh | 9 - lc-gdn-chef/leighco.rb | 1 - lc-gdn-chef/mx1.json | 14 - lc-gdn-chef/test1.json | 12 - lc-gdn-ipbeacon-svc/build.gradle | 46 - .../gdn/ipbeacon/service/IPBeaconService.java | 76 - lc-hello-app/build.gradle | 25 - .../src/main/java/lc/hello/app/HelloApp.java | 39 - .../java/lc/hello/app/SchemaGenerator.java | 64 - .../lc/hello/schema/v1/RequestElementDAO.java | 73 - .../hello/schema/v1/ResponseElementDAO.java | 73 - lc-ionos/build.gradle | 21 - .../java/lc/ionos/IONOSUpdateService.java | 160 - lc-ircbot-svc/build.gradle | 46 - .../main/java/lc/ircbot/svc/BotListener.java | 44 - .../java/lc/ircbot/svc/IRCBotService.java | 47 - .../java/lc/ircbot/svc/PastebinThread.java | 89 - lc-isles/build.gradle | 2 +- lc-junk/build.gradle | 2 +- lc-mecha/build.gradle | 2 +- lc-minecraft-leighco-svc/build.gradle | 21 - .../lc/minecraft/leighco/svc/LeighCoSvc.java | 19 - lc-minecraft-link-quests/LICENSE.md | 637 -- lc-minecraft-link-quests/build.gradle | 38 - .../link/quests/ReputationReward.java | 45 - .../minecraft/link/quests/SwordReward.java | 96 - .../src/main/resources/plugin.yml | 4 - lc-minecraft-link-sdk/build.gradle | 24 - .../lc/minecraft/link/sdk/LinkAddresses.java | 18 - .../minecraft/link/sdk/SchemaGenerator.java | 43 - .../v2/Entity_death_eventElementDAO.java | 213 - lc-minecraft-link/.gitignore | 25 - lc-minecraft-link/LICENSE.md | 492 -- lc-minecraft-link/build.gradle | 57 - .../lc/minecraft/link/BukkitEventHandler.java | 178 - .../java/lc/minecraft/link/LinkPlugin.java | 102 - .../lc/minecraft/link/PlayerNameProvider.java | 12 - .../link/bukkit/BukkitPlayerNameProvider.java | 25 - .../bukkit/BukkitReputationEventHandler.java | 36 - .../lc/minecraft/link/faction/Faction.java | 22 - .../lc/minecraft/link/faction/Reputation.java | 181 - .../link/faction/ReputationEventHandler.java | 15 - .../link/faction/ReputationLevel.java | 61 - .../link/test/MockPlayerNameProvider.java | 44 - .../src/main/resources/config.yml | 6 - .../src/main/resources/plugin.yml | 5 - lc-minecraft-terrain/.gitignore | 25 - lc-minecraft-terrain/LICENSE.md | 492 -- lc-minecraft-terrain/README.md | 2 - lc-minecraft-terrain/build.gradle | 44 - .../lc/minecraft/terrain/GridPopulator.java | 14 - .../lc/minecraft/terrain/TerrainPlugin.java | 56 - .../src/main/resources/config.yml | 3 - .../src/main/resources/plugin.yml | 5 - lc-telemetry-faketsdb-svc/.gitignore | 1 - lc-telemetry-faketsdb-svc/build.gradle | 49 - .../faketsdb/service/FakeTSDBService.java | 39 - .../telemetry/faketsdb/service/TSDBRelay.java | 86 - lc-telemetry-historian-svc/.gitignore | 2 - lc-telemetry-historian-svc/build.gradle | 51 - .../historian/service/HistorianService.java | 167 - settings.gradle | 58 +- 650 files changed, 21 insertions(+), 68123 deletions(-) delete mode 100644 lc-elements-esp/build.gradle delete mode 100644 lc-elements-esp/src/main/java/lc/elements/esp/ElementsScreenService.java delete mode 100644 lc-elements-sdk-js/.gitignore delete mode 100755 lc-elements-sdk-js/build.sh delete mode 100644 lc-elements-sdk-js/dist/test.html delete mode 100644 lc-elements-sdk-js/package-lock.json delete mode 100644 lc-elements-sdk-js/package.json delete mode 100644 lc-elements-sdk-js/rollup.config.js delete mode 100644 lc-elements-sdk-js/src/index.js delete mode 100644 lc-elements-sdk-js/webpack.config.js delete mode 100644 lc-elements-sdk/build.gradle delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/ElementsConstants.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/action/SchemaGenerator.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/action/v1/AttributeSetElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/action/v1/TriggerElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/SchemaGenerator.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v1/ScreenGraphRequestElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v1/ScreenGraphResponseElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_requestElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_responseElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_specElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_create_requestElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_create_responseElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_delete_requestElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_delete_responseElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_update_requestElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_update_responseElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_read_requestElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_read_responseElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_select_requestElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_select_responseElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_requestElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_responseElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_specElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/ErrorElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/event/SchemaGenerator.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/event/v1/ScreenUpdateElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/SchemaGenerator.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/FormLayoutElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/PanelElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/ScreenElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TableColumnCfgElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TableElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TextFieldElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/DataframeElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Form_layoutElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/PanelElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/ScreenElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/TableElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Table_col_cfgElementDAO.java delete mode 100644 lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Text_fieldElementDAO.java delete mode 100644 lc-esp-cli-sdk/build.gradle delete mode 100644 lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIClient.java delete mode 100644 lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIRequest.java delete mode 100644 lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIResponse.java delete mode 100644 lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIService.java delete mode 100644 lc-esp-engine-svc/.gitignore delete mode 100644 lc-esp-engine-svc/LICENSE.md delete mode 100644 lc-esp-engine-svc/build.gradle delete mode 100644 lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EngineService.java delete mode 100644 lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EnhancedBroker.java delete mode 100644 lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EnhancedBrokerPlugin.java delete mode 100644 lc-esp-engine-svc/src/main/java/lc/esp/engine/service/NoisyBrokerFilter.java delete mode 100644 lc-esp-monitor-app/.gitignore delete mode 100644 lc-esp-monitor-app/build.gradle delete mode 100644 lc-esp-monitor-app/src/main/java/lc/esp/monitor/app/MonitorApp.java delete mode 100644 lc-esp-sdk-js/.babelrc delete mode 100644 lc-esp-sdk-js/.gitignore delete mode 100755 lc-esp-sdk-js/build.sh delete mode 100644 lc-esp-sdk-js/dist/test.html delete mode 100644 lc-esp-sdk-js/package-lock.json delete mode 100644 lc-esp-sdk-js/package.json delete mode 100644 lc-esp-sdk-js/rollup.config.js delete mode 100644 lc-esp-sdk-js/src/index.js delete mode 100644 lc-esp-sdk-js/webpack.config.js delete mode 100644 lc-esp-sdk/LICENSE.md delete mode 100644 lc-esp-sdk/build.gradle delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/AsyncSender.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/ESPAddress.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/ESPAddressClass.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/ESPClient.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/ESPConsumer.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/ESPMessage.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/ESPMessageClass.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/ESPProducer.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/ESPRequestor.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/ESPSession.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/SchemaGenerator.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_state_requestElementDAO.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_state_responseElementDAO.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_txnElementDAO.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/service/ChangeStreamer.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/service/ESPService.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/telemetry/TelemetryFrame.java delete mode 100644 lc-esp-sdk/src/main/java/lc/esp/sdk/telemetry/TelemetrySymbol.java delete mode 100644 lc-esp-service-clock/LICENSE.md delete mode 100644 lc-esp-service-clock/build.gradle delete mode 100644 lc-esp-service-clock/src/main/java/lc/esp/service/clock/ClockService.java delete mode 100644 lc-esp-test-sdk/build.gradle delete mode 100644 lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/BeaconElementDAO.java delete mode 100644 lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/Greeting_requestElementDAO.java delete mode 100644 lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/Greeting_responseElementDAO.java delete mode 100644 lc-esp-test-sdk/src/main/java/lc/esp/test/sdk/SchemaGenerator.java delete mode 100644 lc-esp-test-svc/build.gradle delete mode 100644 lc-esp-test-svc/src/main/java/lc/esp/test/svc/BeaconEndpoint.java delete mode 100644 lc-esp-test-svc/src/main/java/lc/esp/test/svc/GraphStreamEndpoint.java delete mode 100644 lc-esp-test-svc/src/main/java/lc/esp/test/svc/GreeterEndpoint.java delete mode 100644 lc-esp-test-svc/src/main/java/lc/esp/test/svc/TestService.java delete mode 100644 lc-evelyn-svc/build.gradle delete mode 100644 lc-evelyn-svc/src/main/java/lc/evelyn/svc/EvelynCommands.java delete mode 100644 lc-evelyn-svc/src/main/java/lc/evelyn/svc/EvelynService.java delete mode 100644 lc-gdn-chef/LICENSE.md delete mode 100644 lc-gdn-chef/cookbooks/acme/.rubocop.yml delete mode 100644 lc-gdn-chef/cookbooks/acme/Berksfile delete mode 100644 lc-gdn-chef/cookbooks/acme/Berksfile.lock delete mode 100644 lc-gdn-chef/cookbooks/acme/LICENSE delete mode 100644 lc-gdn-chef/cookbooks/acme/README.md delete mode 100644 lc-gdn-chef/cookbooks/acme/attributes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/acme/chefignore delete mode 100644 lc-gdn-chef/cookbooks/acme/kitchen.digitalocean.yml delete mode 100644 lc-gdn-chef/cookbooks/acme/kitchen.dokken.yml delete mode 100644 lc-gdn-chef/cookbooks/acme/kitchen.yml delete mode 100644 lc-gdn-chef/cookbooks/acme/libraries/acme.rb delete mode 100644 lc-gdn-chef/cookbooks/acme/metadata.json delete mode 100644 lc-gdn-chef/cookbooks/acme/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/acme/recipes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/acme/resources/certificate.rb delete mode 100644 lc-gdn-chef/cookbooks/acme/resources/selfsigned.rb delete mode 100644 lc-gdn-chef/cookbooks/acme/resources/ssl_key.rb delete mode 100644 lc-gdn-chef/cookbooks/acme/templates/acme-challange.nginx.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/CHANGELOG-pre4.md delete mode 100644 lc-gdn-chef/cookbooks/apache2/CHANGELOG.md delete mode 100644 lc-gdn-chef/cookbooks/apache2/LICENSE delete mode 100644 lc-gdn-chef/cookbooks/apache2/README.md delete mode 100644 lc-gdn-chef/cookbooks/apache2/chefignore delete mode 100644 lc-gdn-chef/cookbooks/apache2/files/apache2_module_conf_generate.pl delete mode 100644 lc-gdn-chef/cookbooks/apache2/libraries/helpers.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/metadata.json delete mode 100644 lc-gdn-chef/cookbooks/apache2/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/conf.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/config.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/default_site.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/install.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_actions.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_alias.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_auth_cas.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_autoindex.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_cache_disk.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_cgid.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_dav_fs.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_deflate.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_dir.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_fastcgi.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_fcgid.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_include.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_info.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_ldap.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_mime.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_mime_magic.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_event.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_prefork.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_worker.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_negotiation.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_pagespeed.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_php.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_proxy.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_proxy_balancer.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_proxy_ftp.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_reqtimeout.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_setenvif.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_ssl.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_status.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_userdir.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/mod_wsgi.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/module.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/resources/site.rb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/a2enmod.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/apache2.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/charset.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/default-site.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/envvars.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/etc-sysconfig-httpd.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/actions.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/alias.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/auth_cas.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/auth_cas.load.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/authopenid.load.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/autoindex.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/cache_disk.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/cgid.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/dav_fs.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/deflate.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/dir.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/fastcgi.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/fcgid.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/include.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/info.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/ldap.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/mime.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/mime_magic.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_event.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_prefork.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_worker.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/negotiation.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/pagespeed.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/php.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/proxy.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/proxy_balancer.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/proxy_ftp.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/reqtimeout.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/setenvif.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/ssl.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/status.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/mods/userdir.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/ports.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/security.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/web_app.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/apache2/templates/welcome.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/.coveralls.yml delete mode 100644 lc-gdn-chef/cookbooks/dovecot/.gitignore delete mode 100644 lc-gdn-chef/cookbooks/dovecot/.kitchen.cloud.yml delete mode 100644 lc-gdn-chef/cookbooks/dovecot/.kitchen.docker.yml delete mode 100644 lc-gdn-chef/cookbooks/dovecot/.kitchen.yml delete mode 100644 lc-gdn-chef/cookbooks/dovecot/.rubocop.yml delete mode 100644 lc-gdn-chef/cookbooks/dovecot/.travis.yml delete mode 100644 lc-gdn-chef/cookbooks/dovecot/.yardopts delete mode 100644 lc-gdn-chef/cookbooks/dovecot/Berksfile delete mode 100644 lc-gdn-chef/cookbooks/dovecot/CHANGELOG.md delete mode 100644 lc-gdn-chef/cookbooks/dovecot/CONTRIBUTING.md delete mode 100644 lc-gdn-chef/cookbooks/dovecot/Gemfile delete mode 100644 lc-gdn-chef/cookbooks/dovecot/Guardfile delete mode 100644 lc-gdn-chef/cookbooks/dovecot/LICENSE delete mode 100644 lc-gdn-chef/cookbooks/dovecot/README.md delete mode 100644 lc-gdn-chef/cookbooks/dovecot/Rakefile delete mode 100644 lc-gdn-chef/cookbooks/dovecot/TESTING.md delete mode 100644 lc-gdn-chef/cookbooks/dovecot/TODO.md delete mode 100644 lc-gdn-chef/cookbooks/dovecot/Vagrantfile delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/auth.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_auth.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_director.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_logging.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_mail.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_master.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_replication.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_ssl.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_15_lda.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_20_lmtp.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_db.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_dict_auth.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_dict_sql.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_ldap.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_sql.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/conf_files.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/create_pwfile.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/namespaces.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/ohai_plugin.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/packages.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/plugins.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/protocols.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/service.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/attributes/services.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/libraries/auth.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/libraries/conf.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/libraries/conf_require.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/libraries/conf_templates.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/libraries/plugins.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/libraries/protocols.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/libraries/pwfile.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/recipes/conf_files.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/recipes/create_pwfile.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/recipes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/recipes/from_package.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/recipes/ohai_plugin.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/recipes/service.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/recipes/user.rb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-auth.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-director.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-logging.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-mail.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-master.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-ssl.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-tcpwrapper.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-lda.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-mailboxes.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-replication.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-imap.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-lmtp.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-managesieve.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-pop3.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-acl.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-plugin.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-quota.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-sieve.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-checkpassword.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-deny.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-dict.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-ldap.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-master.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-passwdfile.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-sql.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-static.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-system.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-vpopmail.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/dovecot-db.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/dovecot-dict-auth.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/dovecot-dict-sql.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/dovecot-ldap.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/dovecot-sql.conf.ext.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/dovecot.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/ohai7_plugins/dovecot.rb.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/ohai_plugins/dovecot.rb.erb delete mode 100644 lc-gdn-chef/cookbooks/dovecot/templates/default/password.erb delete mode 100644 lc-gdn-chef/cookbooks/firewall/CHANGELOG.md delete mode 100644 lc-gdn-chef/cookbooks/firewall/LICENSE delete mode 100644 lc-gdn-chef/cookbooks/firewall/README.md delete mode 100644 lc-gdn-chef/cookbooks/firewall/TODO.md delete mode 100644 lc-gdn-chef/cookbooks/firewall/attributes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/attributes/firewalld.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/attributes/iptables.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/attributes/ufw.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/attributes/windows.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/chefignore delete mode 100644 lc-gdn-chef/cookbooks/firewall/kitchen.dokken.yml delete mode 100644 lc-gdn-chef/cookbooks/firewall/kitchen.windows.yml delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/helpers.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/helpers_firewalld.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/helpers_firewalld_dbus.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/helpers_iptables.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/helpers_nftables.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/helpers_ufw.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/helpers_windows.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/provider_firewall_firewalld.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/provider_firewall_iptables.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/provider_firewall_iptables_ubuntu.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/provider_firewall_iptables_ubuntu1404.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/provider_firewall_rule.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/provider_firewall_ufw.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/provider_firewall_windows.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/resource_firewall.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/libraries/resource_firewall_rule.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/metadata.json delete mode 100644 lc-gdn-chef/cookbooks/firewall/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/recipes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/recipes/disable_firewall.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/resources/firewalld.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/resources/firewalld_config.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/resources/firewalld_helpers.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/resources/firewalld_icmptype.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/resources/firewalld_ipset.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/resources/firewalld_policy.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/resources/firewalld_service.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/resources/firewalld_zone.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/resources/nftables.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/resources/nftables_rule.rb delete mode 100644 lc-gdn-chef/cookbooks/firewall/templates/default/ufw/default.erb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/.markdownlint.json delete mode 100644 lc-gdn-chef/cookbooks/haproxy/CHANGELOG.md delete mode 100644 lc-gdn-chef/cookbooks/haproxy/LICENSE delete mode 100644 lc-gdn-chef/cookbooks/haproxy/README.md delete mode 100644 lc-gdn-chef/cookbooks/haproxy/chefignore delete mode 100644 lc-gdn-chef/cookbooks/haproxy/files/haproxy-default delete mode 100644 lc-gdn-chef/cookbooks/haproxy/libraries/helpers.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/libraries/resource.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/libraries/template.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/metadata.json delete mode 100644 lc-gdn-chef/cookbooks/haproxy/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/acl.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/backend.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/cache.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/config_defaults.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/config_global.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/fastcgi.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/frontend.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/install.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/listen.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/mailer.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/partial/_config_file.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/partial/_extra_options.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/peer.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/resolver.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/service.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/use_backend.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/resources/userlist.rb delete mode 100644 lc-gdn-chef/cookbooks/haproxy/templates/default/haproxy.cfg.erb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/README.md delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/TODO delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/attributes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/attributes/tunables.rb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/metadata.json delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/recipes/backup_tables.rb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/recipes/config.rb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/recipes/dashboard.rb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/recipes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/recipes/master.rb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/recipes/regionserver.rb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/recipes/stargate.rb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/recipes/thrift.rb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/bin-hbase.erb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/dashpot-hbase.html.erb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/etc_default_hbase.erb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/export_hbase_tables.rb.erb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/hadoop-metrics.properties.erb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/hbase-env.sh.erb delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/hbase-jruby_home-and-jruby_opts.patch delete mode 100644 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/hbase-site.xml.erb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/sv-hbase_master-log-run.erb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/sv-hbase_master-run.erb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/sv-hbase_regionserver-log-run.erb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/sv-hbase_regionserver-run.erb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/sv-hbase_stargate-log-run.erb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/sv-hbase_stargate-run.erb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/sv-hbase_thrift-log-run.erb delete mode 100755 lc-gdn-chef/cookbooks/hbase_cluster/templates/default/sv-hbase_thrift-run.erb delete mode 100644 lc-gdn-chef/cookbooks/lc-gdn-mail/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/lc-gdn-mail/recipes/mx0-relay.rb delete mode 100644 lc-gdn-chef/cookbooks/lc-gdn-minecraft/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/lc-gdn-minecraft/recipes/neweden-relay.rb delete mode 100644 lc-gdn-chef/cookbooks/lc/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/lc/recipes/hostname.rb delete mode 100644 lc-gdn-chef/cookbooks/lc/recipes/ssh.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/CHANGELOG.md delete mode 100644 lc-gdn-chef/cookbooks/postfix/LICENSE delete mode 100644 lc-gdn-chef/cookbooks/postfix/README.md delete mode 100644 lc-gdn-chef/cookbooks/postfix/attributes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/chefignore delete mode 100644 lc-gdn-chef/cookbooks/postfix/kitchen.dokken.yml delete mode 100644 lc-gdn-chef/cookbooks/postfix/metadata.json delete mode 100644 lc-gdn-chef/cookbooks/postfix/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/_attributes.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/_common.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/access.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/aliases.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/client.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/maps.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/relay_restrictions.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/sasl_auth.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/server.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/transports.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/virtual_aliases.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/recipes/virtual_aliases_domains.rb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/access.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/aliases.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/mailer.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/main.cf.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/manifest-postfix.xml.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/maps.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/master.cf.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/port_smtp.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/recipient_canonical.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/relay_restrictions.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/sasl_passwd.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/sender_canonical.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/smtp_generic.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/transport.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/virtual_aliases.erb delete mode 100644 lc-gdn-chef/cookbooks/postfix/templates/virtual_aliases_domains.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/.foodcritic delete mode 100644 lc-gdn-chef/cookbooks/prometheus/.gitignore delete mode 100644 lc-gdn-chef/cookbooks/prometheus/.hound.yml delete mode 100644 lc-gdn-chef/cookbooks/prometheus/.kitchen.dokken.yml delete mode 100644 lc-gdn-chef/cookbooks/prometheus/.kitchen.yml delete mode 100644 lc-gdn-chef/cookbooks/prometheus/.rubocop.yml delete mode 100644 lc-gdn-chef/cookbooks/prometheus/.travis.yml delete mode 100644 lc-gdn-chef/cookbooks/prometheus/Berksfile delete mode 100644 lc-gdn-chef/cookbooks/prometheus/CHANGELOG.md delete mode 100644 lc-gdn-chef/cookbooks/prometheus/CONTRIBUTING.md delete mode 100644 lc-gdn-chef/cookbooks/prometheus/Gemfile delete mode 100644 lc-gdn-chef/cookbooks/prometheus/ISSUES.md delete mode 100644 lc-gdn-chef/cookbooks/prometheus/LICENSE delete mode 100644 lc-gdn-chef/cookbooks/prometheus/README.md delete mode 100644 lc-gdn-chef/cookbooks/prometheus/Rakefile delete mode 100644 lc-gdn-chef/cookbooks/prometheus/Thorfile delete mode 100644 lc-gdn-chef/cookbooks/prometheus/Vagrantfile delete mode 100644 lc-gdn-chef/cookbooks/prometheus/attributes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/chefignore delete mode 100644 lc-gdn-chef/cookbooks/prometheus/libraries/prometheus_helper.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/recipes/alertmanager.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/recipes/alertmanager_binary.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/recipes/alertmanager_source.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/recipes/binary.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/recipes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/recipes/service.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/recipes/shell_binary.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/recipes/source.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/recipes/use_lwrp.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/resources/job.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/spec/spec_helper.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/spec/support/matchers.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/spec/unit/recipes/alertmanager_spec.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/spec/unit/recipes/default_spec.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/centos/prometheus.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/debian/prometheus.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/alertmanager.init.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/alertmanager.pill.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/alertmanager.yml.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/debian/default/alertmanager.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/debian/default/prometheus.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/prometheus.pill.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/prometheus.yml.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/redhat/sysconfig/alertmanager.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/redhat/sysconfig/prometheus.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/sv-prometheus-run.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/systemd/alertmanager.service.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/systemd/prometheus.service.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/upstart/alertmanager.service.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/default/upstart/prometheus.service.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/redhat/prometheus.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/templates/ubuntu/prometheus.erb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/test/integration/alertmanager/serverspec/default_spec.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/test/integration/bluepill-binary/serverspec/binary_spec.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/test/integration/bluepill/serverspec/source_spec.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/test/integration/default-binary/serverspec/binary_spec.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/test/integration/default/serverspec/source_spec.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/test/integration/init-binary/serverspec/binary_spec.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/test/integration/init/serverspec/source_spec.rb delete mode 100644 lc-gdn-chef/cookbooks/prometheus/test/shared/spec_helper.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/CHANGELOG.md delete mode 100644 lc-gdn-chef/cookbooks/selinux/LICENSE delete mode 100644 lc-gdn-chef/cookbooks/selinux/README.md delete mode 100644 lc-gdn-chef/cookbooks/selinux/chefignore delete mode 100644 lc-gdn-chef/cookbooks/selinux/libraries/boolean.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/libraries/install.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/libraries/state.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/metadata.json delete mode 100644 lc-gdn-chef/cookbooks/selinux/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/recipes/disabled.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/recipes/enforcing.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/recipes/permissive.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/resources/boolean.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/resources/fcontext.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/resources/install.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/resources/module.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/resources/permissive.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/resources/port.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/resources/state.rb delete mode 100644 lc-gdn-chef/cookbooks/selinux/templates/debian/selinux.erb delete mode 100644 lc-gdn-chef/cookbooks/selinux/templates/default/selinux.erb delete mode 100644 lc-gdn-chef/cookbooks/wn_opentsdb/LICENSE delete mode 100644 lc-gdn-chef/cookbooks/wn_opentsdb/README.md delete mode 100644 lc-gdn-chef/cookbooks/wn_opentsdb/attributes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/wn_opentsdb/files/default/logback.xml delete mode 100755 lc-gdn-chef/cookbooks/wn_opentsdb/files/default/opentsdb.init delete mode 100644 lc-gdn-chef/cookbooks/wn_opentsdb/files/default/tsd-server-stats.sh delete mode 100644 lc-gdn-chef/cookbooks/wn_opentsdb/files/default/tsd.init delete mode 100644 lc-gdn-chef/cookbooks/wn_opentsdb/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/wn_opentsdb/recipes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/wn_opentsdb/templates/default/opentsdb.conf.erb delete mode 100644 lc-gdn-chef/cookbooks/wn_opentsdb/templates/default/tsd.sysconfig.erb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/CHANGELOG.md delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/LICENSE delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/README.md delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/default.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-debuginfo.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-modular-debuginfo.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-modular-source.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-modular.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-next-debuginfo.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-next-source.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-next-testing-debuginfo.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-next-testing-source.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-next-testing.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-next.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-playground-debuginfo.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-playground-source.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-playground.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-source.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-testing-debuginfo.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-testing-modular-debuginfo.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-testing-modular-source.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-testing-modular.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-testing-source.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel-testing.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/attributes/epel.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/chefignore delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/kitchen.dokken.yml delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/libraries/helpers.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/metadata.json delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/metadata.rb delete mode 100644 lc-gdn-chef/cookbooks/yum-epel/recipes/default.rb delete mode 100755 lc-gdn-chef/dist.sh delete mode 100644 lc-gdn-chef/leighco.rb delete mode 100644 lc-gdn-chef/mx1.json delete mode 100644 lc-gdn-chef/test1.json delete mode 100644 lc-gdn-ipbeacon-svc/build.gradle delete mode 100644 lc-gdn-ipbeacon-svc/src/main/java/lc/gdn/ipbeacon/service/IPBeaconService.java delete mode 100644 lc-hello-app/build.gradle delete mode 100644 lc-hello-app/src/main/java/lc/hello/app/HelloApp.java delete mode 100644 lc-hello-app/src/main/java/lc/hello/app/SchemaGenerator.java delete mode 100644 lc-hello-app/src/main/java/lc/hello/schema/v1/RequestElementDAO.java delete mode 100644 lc-hello-app/src/main/java/lc/hello/schema/v1/ResponseElementDAO.java delete mode 100644 lc-ionos/build.gradle delete mode 100644 lc-ionos/src/main/java/lc/ionos/IONOSUpdateService.java delete mode 100644 lc-ircbot-svc/build.gradle delete mode 100644 lc-ircbot-svc/src/main/java/lc/ircbot/svc/BotListener.java delete mode 100644 lc-ircbot-svc/src/main/java/lc/ircbot/svc/IRCBotService.java delete mode 100644 lc-ircbot-svc/src/main/java/lc/ircbot/svc/PastebinThread.java delete mode 100644 lc-minecraft-leighco-svc/build.gradle delete mode 100644 lc-minecraft-leighco-svc/src/main/java/lc/minecraft/leighco/svc/LeighCoSvc.java delete mode 100644 lc-minecraft-link-quests/LICENSE.md delete mode 100644 lc-minecraft-link-quests/build.gradle delete mode 100644 lc-minecraft-link-quests/src/main/java/leigh/minecraft/link/quests/ReputationReward.java delete mode 100644 lc-minecraft-link-quests/src/main/java/leigh/minecraft/link/quests/SwordReward.java delete mode 100644 lc-minecraft-link-quests/src/main/resources/plugin.yml delete mode 100644 lc-minecraft-link-sdk/build.gradle delete mode 100644 lc-minecraft-link-sdk/src/main/java/lc/minecraft/link/sdk/LinkAddresses.java delete mode 100644 lc-minecraft-link-sdk/src/main/java/lc/minecraft/link/sdk/SchemaGenerator.java delete mode 100644 lc-minecraft-link-sdk/src/main/java/lc/minecraft/link/sdk/schema/v2/Entity_death_eventElementDAO.java delete mode 100644 lc-minecraft-link/.gitignore delete mode 100644 lc-minecraft-link/LICENSE.md delete mode 100644 lc-minecraft-link/build.gradle delete mode 100644 lc-minecraft-link/src/main/java/lc/minecraft/link/BukkitEventHandler.java delete mode 100644 lc-minecraft-link/src/main/java/lc/minecraft/link/LinkPlugin.java delete mode 100644 lc-minecraft-link/src/main/java/lc/minecraft/link/PlayerNameProvider.java delete mode 100644 lc-minecraft-link/src/main/java/lc/minecraft/link/bukkit/BukkitPlayerNameProvider.java delete mode 100644 lc-minecraft-link/src/main/java/lc/minecraft/link/bukkit/BukkitReputationEventHandler.java delete mode 100644 lc-minecraft-link/src/main/java/lc/minecraft/link/faction/Faction.java delete mode 100644 lc-minecraft-link/src/main/java/lc/minecraft/link/faction/Reputation.java delete mode 100644 lc-minecraft-link/src/main/java/lc/minecraft/link/faction/ReputationEventHandler.java delete mode 100644 lc-minecraft-link/src/main/java/lc/minecraft/link/faction/ReputationLevel.java delete mode 100644 lc-minecraft-link/src/main/java/lc/minecraft/link/test/MockPlayerNameProvider.java delete mode 100644 lc-minecraft-link/src/main/resources/config.yml delete mode 100644 lc-minecraft-link/src/main/resources/plugin.yml delete mode 100644 lc-minecraft-terrain/.gitignore delete mode 100644 lc-minecraft-terrain/LICENSE.md delete mode 100644 lc-minecraft-terrain/README.md delete mode 100644 lc-minecraft-terrain/build.gradle delete mode 100644 lc-minecraft-terrain/src/main/java/lc/minecraft/terrain/GridPopulator.java delete mode 100644 lc-minecraft-terrain/src/main/java/lc/minecraft/terrain/TerrainPlugin.java delete mode 100644 lc-minecraft-terrain/src/main/resources/config.yml delete mode 100644 lc-minecraft-terrain/src/main/resources/plugin.yml delete mode 100644 lc-telemetry-faketsdb-svc/.gitignore delete mode 100644 lc-telemetry-faketsdb-svc/build.gradle delete mode 100644 lc-telemetry-faketsdb-svc/src/main/java/lc/telemetry/faketsdb/service/FakeTSDBService.java delete mode 100644 lc-telemetry-faketsdb-svc/src/main/java/lc/telemetry/faketsdb/service/TSDBRelay.java delete mode 100644 lc-telemetry-historian-svc/.gitignore delete mode 100644 lc-telemetry-historian-svc/build.gradle delete mode 100644 lc-telemetry-historian-svc/src/main/java/lc/telemetry/historian/service/HistorianService.java diff --git a/build.gradle b/build.gradle index 90a364177..a9e07b3ad 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ allprojects { group 'leighco' - version '18.0' + version '19.0' task printVersion { doLast { // add a task action diff --git a/lc-elements-esp/build.gradle b/lc-elements-esp/build.gradle deleted file mode 100644 index ba4bb4d16..000000000 --- a/lc-elements-esp/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} - -group 'leighco' -version '18.0' - -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-elements-sdk') - api project(':lc-esp-sdk') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/lc-elements-esp/src/main/java/lc/elements/esp/ElementsScreenService.java b/lc-elements-esp/src/main/java/lc/elements/esp/ElementsScreenService.java deleted file mode 100644 index 879db569d..000000000 --- a/lc-elements-esp/src/main/java/lc/elements/esp/ElementsScreenService.java +++ /dev/null @@ -1,30 +0,0 @@ -package lc.elements.esp; - -import lc.esp.sdk.ESPAddress; -import lc.esp.sdk.ESPMessage; -import lc.esp.sdk.ESPSession; -import lc.esp.sdk.service.ESPService; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import javax.jms.JMSException; - -/** - * A basic implementation of an Elements screen service. - * - * @author C. Alexander Leigh - * @since mk18 - */ -public class ElementsScreenService extends ESPService { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ElementsScreenService.class); - - public ElementsScreenService(ESPSession client, ESPAddress commandAddress, ESPAddress telemetryAddress) throws JMSException { - super(client, commandAddress); - } - - @Override - public ESPMessage handle(ESPMessage msg) throws Exception { - logger.info("Received message: {}", msg); - return null; - } -} diff --git a/lc-elements-sdk-js/.gitignore b/lc-elements-sdk-js/.gitignore deleted file mode 100644 index 83eb513ae..000000000 --- a/lc-elements-sdk-js/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -dist/*.js -doc/** -dist/main.js diff --git a/lc-elements-sdk-js/build.sh b/lc-elements-sdk-js/build.sh deleted file mode 100755 index f70aaeeb0..000000000 --- a/lc-elements-sdk-js/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -x - -npm run build -#npx webpack --mode production -npx webpack --mode development -documentation build src/index.js -f html -o doc diff --git a/lc-elements-sdk-js/dist/test.html b/lc-elements-sdk-js/dist/test.html deleted file mode 100644 index dda30e289..000000000 --- a/lc-elements-sdk-js/dist/test.html +++ /dev/null @@ -1,143 +0,0 @@ - - - Test - - - - - -Elements SDK Test. To use: View JavaScript console. - - - diff --git a/lc-elements-sdk-js/package-lock.json b/lc-elements-sdk-js/package-lock.json deleted file mode 100644 index f611751cb..000000000 --- a/lc-elements-sdk-js/package-lock.json +++ /dev/null @@ -1,7544 +0,0 @@ -{ - "name": "lc-elements-sdk-js", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "lc-elements-sdk-js", - "version": "1.0.0", - "license": "LGPL-3.0-only", - "dependencies": { - "@stomp/stompjs": "^6.1.2", - "browser-polyfill": "^3.20.2", - "buffer": "^6.0.3", - "crypto": "^1.0.1", - "crypto-browserify": "^3.12.0", - "install": "^0.13.0", - "lc-esp-sdk-js": "file:../lc-esp-sdk-js", - "lodash": "^4.17.21", - "process": "^0.11.10", - "uuid": "^8.3.2", - "websocket": "^1.0.34" - }, - "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "@rollup/plugin-node-resolve": "^13.2.1", - "rollup": "^2.70.2", - "rollup-plugin-babel": "^4.4.0", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", - "webpack": "^5.72.1", - "webpack-cli": "^4.9.2" - } - }, - "../lc-esp-sdk-js": { - "version": "18.0.0", - "license": "LGPL-3.0-only", - "dependencies": { - "@stomp/stompjs": "^6.1.2", - "crypto-browserify": "^3.12.0", - "lodash": "^4.17.21", - "uuid": "^8.3.2", - "websocket": "^1.0.34" - }, - "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "@rollup/plugin-node-resolve": "^13.2.1", - "rollup": "^2.70.2", - "rollup-plugin-babel": "^4.4.0", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", - "webpack": "^5.73.0", - "webpack-cli": "^4.10.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", - "dev": true, - "dependencies": { - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.0.tgz", - "integrity": "sha512-YH+BnkvuCiPR+MUOY6JIArdTIGrRtsxnLaIxPRy4CpGJ/V6OO6Gq/1J+FJEc4j5e5h6Bcy3/K7prlMrm93BJoA==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.0.0.tgz", - "integrity": "sha512-LcqVnHCjOAj8BTCtjpwYZCMTn4yArusbdObCVRUYvBHhrR5fVLVyENG+UVWM4T4H/ufv7NiBLdprllxWs/5PaQ==", - "deprecated": "incorrect UMD name", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.2.1.tgz", - "integrity": "sha512-btX7kzGvp1JwShQI9V6IM841YKNPYjKCvUbNrQ2EcVYbULtUd/GH6wZ/qdqH13j9pOHBER+EZXNN2L8RSJhVRA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^2.42.0" - } - }, - "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "node_modules/@stomp/stompjs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", - "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" - }, - "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.29.tgz", - "integrity": "sha512-tx5jMmMFwx7wBwq/V7OohKDVb/JwJU5qCVkeLMh1//xycAJ/ESuw9aJ9SEtlCZDYi2pBfe4JkisSoAtbOsBNAA==", - "dev": true - }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "node_modules/browser-polyfill": { - "version": "3.20.2", - "resolved": "https://registry.npmjs.org/browser-polyfill/-/browser-polyfill-3.20.2.tgz", - "integrity": "sha512-61Jc1vtn5WtmQFwbahyb05+8DcEry62VpHxO8YCOCQ+cRo9ZQCmvXgdpKpAUlC6hdb3qQoTq9rG8gVI0LCG8fA==" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - }, - "node_modules/bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/core-js-compat": { - "version": "3.22.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.2.tgz", - "integrity": "sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw==", - "dev": true, - "dependencies": { - "browserslist": "^4.20.2", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", - "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", - "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in." - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.123", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.123.tgz", - "integrity": "sha512-0pHGE53WkYoFbsgwYcVKEpWa6jbzlvkohIEA2CUoZ9b5KC+w/zlMiQHvW/4IBcOh7YoEFqRNavgTk02TBoUTUw==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/es5-ext": { - "version": "0.10.61", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", - "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "dependencies": { - "type": "^2.5.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/install": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", - "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lc-esp-sdk-js": { - "resolved": "../lc-esp-sdk-js", - "link": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", - "dev": true - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rollup": { - "version": "2.70.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", - "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel.", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "@babel/core": "7 || ^7.0.0-rc.2", - "rollup": ">=0.60.0 <3" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-commonjs.", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "rollup": ">=1.12.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve.", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "rollup": ">=1.11.0" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.0.tgz", - "integrity": "sha512-sgQ99P+fRBM1jAYzN9RTnD/xEWx/7LZgYTCRgmYriSq1wxxqiQPJgXkkLBBuwySDWJ2PP0PnVQyuf4xLUuH4Ng==", - "dev": true, - "dependencies": { - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dev": true, - "dependencies": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", - "engines": { - "node": ">=0.10.32" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", - "dev": true - }, - "@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - } - }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", - "dev": true, - "requires": { - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.0.tgz", - "integrity": "sha512-YH+BnkvuCiPR+MUOY6JIArdTIGrRtsxnLaIxPRy4CpGJ/V6OO6Gq/1J+FJEc4j5e5h6Bcy3/K7prlMrm93BJoA==", - "dev": true, - "requires": { - "@jridgewell/set-array": "1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.0.0.tgz", - "integrity": "sha512-LcqVnHCjOAj8BTCtjpwYZCMTn4yArusbdObCVRUYvBHhrR5fVLVyENG+UVWM4T4H/ufv7NiBLdprllxWs/5PaQ==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@rollup/plugin-node-resolve": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.2.1.tgz", - "integrity": "sha512-btX7kzGvp1JwShQI9V6IM841YKNPYjKCvUbNrQ2EcVYbULtUd/GH6wZ/qdqH13j9pOHBER+EZXNN2L8RSJhVRA==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "dependencies": { - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - } - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - } - } - }, - "@stomp/stompjs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", - "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" - }, - "@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/node": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.29.tgz", - "integrity": "sha512-tx5jMmMFwx7wBwq/V7OohKDVb/JwJU5qCVkeLMh1//xycAJ/ESuw9aJ9SEtlCZDYi2pBfe4JkisSoAtbOsBNAA==", - "dev": true - }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "browser-polyfill": { - "version": "3.20.2", - "resolved": "https://registry.npmjs.org/browser-polyfill/-/browser-polyfill-3.20.2.tgz", - "integrity": "sha512-61Jc1vtn5WtmQFwbahyb05+8DcEry62VpHxO8YCOCQ+cRo9ZQCmvXgdpKpAUlC6hdb3qQoTq9rG8gVI0LCG8fA==" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - }, - "bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "caniuse-lite": { - "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-js-compat": { - "version": "3.22.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.2.tgz", - "integrity": "sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw==", - "dev": true, - "requires": { - "browserslist": "^4.20.2", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", - "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==" - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "electron-to-chromium": { - "version": "1.4.123", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.123.tgz", - "integrity": "sha512-0pHGE53WkYoFbsgwYcVKEpWa6jbzlvkohIEA2CUoZ9b5KC+w/zlMiQHvW/4IBcOh7YoEFqRNavgTk02TBoUTUw==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "es5-ext": { - "version": "0.10.61", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", - "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "requires": { - "type": "^2.5.0" - }, - "dependencies": { - "type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "install": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", - "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==" - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "requires": { - "@types/estree": "*" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "lc-esp-sdk-js": { - "version": "file:../lc-esp-sdk-js", - "requires": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "@rollup/plugin-node-resolve": "^13.2.1", - "@stomp/stompjs": "^6.1.2", - "crypto-browserify": "^3.12.0", - "lodash": "^4.17.21", - "rollup": "^2.70.2", - "rollup-plugin-babel": "^4.4.0", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", - "uuid": "^8.3.2", - "webpack": "^5.73.0", - "webpack-cli": "^4.10.0", - "websocket": "^1.0.34" - } - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==" - }, - "node-releases": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rollup": { - "version": "2.70.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", - "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "terser": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.0.tgz", - "integrity": "sha512-sgQ99P+fRBM1jAYzN9RTnD/xEWx/7LZgYTCRgmYriSq1wxxqiQPJgXkkLBBuwySDWJ2PP0PnVQyuf4xLUuH4Ng==", - "dev": true, - "requires": { - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "requires": { - "whatwg-url": "^7.0.0" - } - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dev": true, - "requires": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - } - }, - "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" - } - } -} diff --git a/lc-elements-sdk-js/package.json b/lc-elements-sdk-js/package.json deleted file mode 100644 index 2163149ef..000000000 --- a/lc-elements-sdk-js/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "lc-elements-sdk-js", - "version": "18.0.0", - "description": "ELEMENTS/SDK-JS", - "author": "LEIGH&CO", - "license": "LGPL-3.0-only", - "main": "dist/lc-elements-sdk.cjs.js", - "module": "dist/lc-elements-sdk.esm.js", - "browser": "dist/lc-elements-sdk.umd.js", - "scripts": { - "build": "rollup -c", - "test": "node test/spec", - "pretest": "npm run build" - }, - "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "@rollup/plugin-node-resolve": "^13.2.1", - "rollup": "^2.70.2", - "rollup-plugin-babel": "^4.4.0", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", - "webpack": "^5.72.1", - "webpack-cli": "^4.9.2" - }, - "files": [ - "dist", - "src" - ], - "dependencies": { - "@stomp/stompjs": "^6.1.2", - "browser-polyfill": "^3.20.2", - "buffer": "^6.0.3", - "crypto": "^1.0.1", - "crypto-browserify": "^3.12.0", - "install": "^0.13.0", - "lc-esp-sdk-js": "file:../lc-esp-sdk-js", - "lodash": "^4.17.21", - "process": "^0.11.10", - "uuid": "^8.3.2", - "websocket": "^1.0.34" - } -} diff --git a/lc-elements-sdk-js/rollup.config.js b/lc-elements-sdk-js/rollup.config.js deleted file mode 100644 index 69d91745c..000000000 --- a/lc-elements-sdk-js/rollup.config.js +++ /dev/null @@ -1,39 +0,0 @@ -import resolve from "rollup-plugin-node-resolve"; -import commonjs from "rollup-plugin-commonjs"; -import babel from "rollup-plugin-babel"; -import pkg from "./package.json"; - -export default [ - { - input: "src/index.js", // your entry point - output: { - name: "lc-elements-sdk-js", // package name - file: pkg.browser, - format: "umd", - }, - plugins: [ - resolve(), - commonjs({ - namedExports: { - '../lc-elements-sdk-js/dist/lc-elements-sdk.umd.js': ['ElementsSDK'] - } - }), - babel({ - exclude: ["node_modules/**"], - }), - ], - }, - { - input: "src/index.js", // your entry point - output: [ - {file: pkg.main, format: "cjs"}, - {file: pkg.module, format: "es"}, - ], - plugins: [ - babel({ - exclude: ["node_modules/**"], - }), - ], - }, -]; - diff --git a/lc-elements-sdk-js/src/index.js b/lc-elements-sdk-js/src/index.js deleted file mode 100644 index 893e901cc..000000000 --- a/lc-elements-sdk-js/src/index.js +++ /dev/null @@ -1,1504 +0,0 @@ -import {ESPSDK} from 'lc-esp-sdk-js'; - -export var ElementsSDK = {}; - -/*** ELEMENTS CODE ***/ - -ElementsSDK.testFrameId = 'c9462bae-ed00-4051-b5e6-a0b8f37a13ce'; - -ElementsSDK.EO = {}; -ElementsSDK.EO.KEY_META = "_meta"; -ElementsSDK.EO.KEY_DISPLAY_TEXT = "display_text"; - -/** - * This class provides functions for manipulating and reading from a DataFrame. A DataFrame consists of a raw - * data set and a view. The view is a translation of the raw data set after sorting, filtering, and other data - * transformations have been applied. - * - * Each DataFrame is uniquely identifier by an identifier. This identifier is used in the various SDK functions - * when making calls. - * - * The DataFrame also has a transaction id (txid). The txid identifies the current state of - * the DataFrame. Certain SDK functions require the txid to ensure that the operation is performed on the correct - * version of the Data Frame. Mutating the DataFrame by changing the contents of its data, applying transformations - * such as sorting or filtering, will change the txid. The txid is a surrogate key and its contents are undefined; - * developers are cautioned not to attempt to interpret or assign the txid any particular meaning. - * - * When the data within the DataFrame changes, which could happen due to events inside or outside of the application, - * such as if the case if another user or process is also editing the data at the same time, - * the txid will be updated. The DataFrame screen graph object will be updated with the new txid (and any other - * details that may have changed, such as the size in rows of the DataFrame), and a graph update event will be - * sent indicating that these values are changed. - * - * In addition to the data inside the DataFrame changing, there are other changes which can result in the - * user-interface changing. For example, elements within the screen graph may change or be added/removed if - * the DataFrame has zero rows selected, one row selected, or many rows selected. - * - * User-interface clients must monitor the screen graph to detect the txid changing, and use this as a trigger - * to update the user-interface. It is insufficient to only trigger UI updates off of successful completion of - * calls such as sort(), filter(), updateValue(), etc. - * - * @constructor - */ -ElementsSDK.DataFrame = function (elementsClient, id) { - this.id = id; - this.elementsClient = elementsClient; -} - -/** - * Perform an asynchronous read operation against the DataFrame. When the data has been read from the backend, - * the promise will be resolved with an array of the rows from the DataFrame. The rows are in EO format and may - * be interacted with directly or via the EO convenience functions. - * - * The row index is based on the DataFrame view, not the raw data. The first row is 0. It is valid to call - * with a length longer than the length of the view, in this case, a shorter number of rows will be returned. - * - * The txid for the DataFrame must be provided. - * - * If the call times out an error will be thrown to the Promise. - * - * @param idx The beginning row index, where 0 is the first row. - * @param length The maximum number of rows to read. - */ -ElementsSDK.DataFrame.prototype.read = function (idx, length, txid) { - return new Promise((resolve, reject) => { - const request = lc.elements.command.v18.Dataframe_read_requestElementDAO.create(); - lc.elements.command.v18.Dataframe_read_requestElementDAO.setId(request, this.id); - lc.elements.command.v18.Dataframe_read_requestElementDAO.setIndex(request, idx); - lc.elements.command.v18.Dataframe_read_requestElementDAO.setLength(request, length); - lc.elements.command.v18.Dataframe_read_requestElementDAO.setTxid(request, txid); - this.elementsClient.cmdProducer.sendCommand(request).then(function (msg) { - // console.log('read() reply callback fired: ' + JSON.stringify(msg)); - if (msg == null) reject(new Error('No response received to command')); - let data = lc.elements.command.v18.Dataframe_read_responseElementDAO.getData(msg); - resolve(data); - }); - }); -} - -/** - * Asynchronously apply the provided sort configuration to the dataframe. This clears any existing sort - * parameters. To clear the sort configuration call this function and pass an empty cols object. When the - * sort operation is complete the Promise is resolved. - * - * The exact mechanics of the sort (for example, alpha sort, numeric sort, etc) is specified by the backend - * service and unspecified here. - * - * cols consists of an object whose key matches the column name and whose value is one of "asc", or "desc". - * For example {"first":"asc"}. - * - If the command times out an error is raised with the Promise. Note that when this call is returned the - DataFrame will have been updated and the new txid is provided. Clients with a user-interface should not - use this to drive an update to the screen; instead, wait for the DataFrame object in the screen graph to be - updated and drive the user-interface update from that event. This ensures that all events where the DataFrame - is updated are correctly processed. - * - * @param cols The column sort specification. - */ -ElementsSDK.DataFrame.prototype.sort = function (cols) { - return new Promise((resolve, reject) => { - const request = lc.elements.command.v18.Dataframe_sort_requestElementDAO.create(); - const colLoop = []; - lc.elements.command.v18.Dataframe_sort_requestElementDAO.setCols(request, colLoop); - lc.elements.command.v18.Dataframe_sort_requestElementDAO.setId(request, this.id); - - for (const [key, value] of Object.entries(cols)) { - let spec = lc.elements.command.v18.Dataframe_sort_specElementDAO.create(); - lc.elements.command.v18.Dataframe_sort_specElementDAO.setName(spec, key); - lc.elements.command.v18.Dataframe_sort_specElementDAO.setSort_order(spec, value); - colLoop.push(spec); - } - - this.elementsClient.cmdProducer.sendCommand(request).then(function (msg) { - if (msg == null) reject(new Error('No response received to command')); - - if (!lc.elements.command.v18.Dataframe_sort_responseElementDAO.assertType(msg)) { - reject(new Error('Unknown response message type.')); - } - - resolve(lc.elements.command.v18.Dataframe_sort_responseElementDAO.getTxid(msg)); - }); - }); -} - -/** - * Asynchronously apply the provided quick filter configuration to the dataframe. This has the side-effect of clearing - * any other quick filters. - * - * cols consists of an object where the key is the column name and the value is the quick filter text. - * - * The exact mechanics of the filter are specified by the backend service and are unspecified here. - * - * If the command times out an error is raised with the Promise. Note that when this call is returned the - * DataFrame will have been updated and the new txid is provided. Clients with a user-interface should not - * use this to drive an update to the screen; instead, wait for the DataFrame object in the screen graph to be - * updated and drive the user-interface update from that event. This ensures that all events where the DataFrame - * is updated are correctly processed. - * - * @param cols - * @param callback - */ -ElementsSDK.DataFrame.prototype.filter = function (cols) { - return new Promise((resolve, reject) => { - const request = lc.elements.command.v18.Dataframe_filter_requestElementDAO.create(); - const colLoop = []; - - lc.elements.command.v18.Dataframe_filter_requestElementDAO.setCols(request, colLoop); - lc.elements.command.v18.Dataframe_filter_requestElementDAO.setId(request, this.id); - - for (const [key, value] of Object.entries(cols)) { - let spec = lc.elements.command.v18.Dataframe_filter_specElementDAO.create(); - lc.elements.command.v18.Dataframe_filter_specElementDAO.setName(spec, key); - lc.elements.command.v18.Dataframe_filter_specElementDAO.setFilter_text(spec, value); - colLoop.push(spec); - } - - this.elementsClient.cmdProducer.sendCommand(request).then(function (msg) { - if (msg == null) reject(new Error('No response received to command')); - if (!lc.elements.command.v18.Dataframe_filter_responseElementDAO.assertType(msg)) { - reject(new Error('Unknown response message type.')); - } - - resolve(lc.elements.command.v18.Dataframe_filter_responseElementDAO.getTxid(msg)); - }); - }); -} - -/** - * Select rows in the DataFrame. Calling this function will clear any existing row selection. - * - * selection consists of a text string indicating the row indexes to be selected. The row - * indexes are relative to the view, not the raw data. The first row is 0. Rows may be specified individually - * such as "1,2,3,4" or as a range such as "[1..4]". The two forms may be combined, such as "[1..5],9". - * - * If the command times out an error is raised with the Promise. Note that when this call is returned the - * DataFrame will have been updated and the new txid is provided. Clients with a user-interface should not - * use this to drive an update to the screen; instead, wait for the DataFrame object in the screen graph to be - * updated and drive the user-interface update from that event. This ensures that all events where the DataFrame - * is updated are correctly processed. - * - * @param selection The selection to apply to the DataFrame. - * @param txid The current transaction ID for the DataFrame. - * @returns {Promise} - */ -ElementsSDK.DataFrame.prototype.select = function (selection, txid) { - return new Promise((resolve, reject) => { - const request = lc.elements.command.v18.Dataframe_select_requestElementDAO.create(); - lc.elements.command.v18.Dataframe_select_requestElementDAO.setSelection(request, selection); - lc.elements.command.v18.Dataframe_select_requestElementDAO.setTxid(request, txid); - lc.elements.command.v18.Dataframe_select_requestElementDAO.setId(request, this.id); - - this.elementsClient.cmdProducer.sendCommand(request).then(function (msg) { - if (msg == null) reject(new Error('No response received to command')); - if (!lc.elements.command.v18.Dataframe_select_responseElementDAO.assertType(msg)) { - reject(new Error('Unknown response message type: ' + msg)); - } - - resolve(lc.elements.command.v18.Dataframe_select_responseElementDAO.getTxid(msg)); - }); - }); -} - -/** - * Create a new object in the DataFrame. The actual mechanics of how the newly created object will be added - * the frame is controlled by the backend service and therefore undefined by the SDK. - * - * If the command times out an error is raised with the Promise. Note that when this call is returned the - * DataFrame will have been updated and the new txid is provided. Clients with a user-interface should not - * use this to drive an update to the screen; instead, wait for the DataFrame object in the screen graph to be - * updated and drive the user-interface update from that event. This ensures that all events where the DataFrame - * is updated are correctly processed. - */ -ElementsSDK.DataFrame.prototype.createObject = function () { - return new Promise((resolve, reject) => { - const request = lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.create(); - lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.setId(request, this.id); - this.elementsClient.cmdProducer.sendCommand(request).then(function (msg) { - if (msg == null) reject(new Error('No response received to command')); - if (!lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.assertType(msg)) { - reject(new Error('Unknown response message type.')); - } - - resolve(lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.getTxid(msg)); - }); - }); -} - -/** - * Delete all the currently selected objects from the DataFrame. This will side-effect clearing the selection - * from the frame. - * - * If the command times out an error is raised with the Promise. Note that when this call is returned the - * DataFrame will have been updated and the new txid is provided. Clients with a user-interface should not - * use this to drive an update to the screen; instead, wait for the DataFrame object in the screen graph to be - * updated and drive the user-interface update from that event. This ensures that all events where the DataFrame - * is updated are correctly processed. - * - * @param txid The current transaction ID for the DataFrame. - */ -ElementsSDK.DataFrame.prototype.deleteSelected = function (txid) { - return new Promise((resolve, reject) => { - const request = lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.create(); - lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.setId(request, this.id); - lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.setTxid(request, txid); - - this.elementsClient.cmdProducer.sendCommand(request).then(function (msg) { - if (msg == null) reject(new Error('No response received to command')); - if (!lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.assertType(msg)) { - reject(new Error('Unknown response message type.')); - } - resolve(lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.getTxid(msg)); - }); - }); -} - -/** - * Update the attribute in all currently selected objects. - * - * If the command times out an error is raised with the Promise. Note that when this call is returned the - * DataFrame will have been updated and the new txid is provided. Clients with a user-interface should not - * use this to drive an update to the screen; instead, wait for the DataFrame object in the screen graph to be - * updated and drive the user-interface update from that event. This ensures that all events where the DataFrame - * is updated are correctly processed. - * - * @param name - * @param value - * @param txid - * @returns {Promise} - */ -ElementsSDK.DataFrame.prototype.updateSelected = function (name, value, txid) { - return new Promise((resolve, reject) => { - const request = lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.create(); - lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.setTxid(request, txid); - lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.setName(request, name); - lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.setValue(request, value); - - this.elementsClient.cmdProducer.sendCommand(request).then(function (msg) { - if (msg == null) reject(new Error('No response received to command')); - if (!lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.assertType(msg)) { - reject(new Error('Unknown response message type.')); - } - resolve(lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.getTxid(msg)); - }); - }); -} - -/** - * Create a new Elements network client. Multiple clients may co-exist within the same browser or window - * instance. Creating the client will side-effect the creation of an ESPSDK client to handle the underling - * network transport. Creating the client will result in a WebSocket being created to the specified ESP message broker - * and that connection will be maintained as long as the Client is open. - * - * If connection is disconnected for any reason, it will automatically be reconnected. Changes to the IP address - * of the web browser during operation will not affect the operation of the client. - * - * A web socket address for ESP should be provided, for example 'ws://esp1.leigh-co.com:52021/ws' - * - * Creating the client is very expensive; whenever possible applications should keep the client around - * for the duration of the session, using it for all requests. Creating a client for each function is likely to - * result in poor performance. - * - * @param espAddress The ESP address. - * @constructor - */ -ElementsSDK.Client = function (espAddress) { - return new Promise((resolve) => { - const elementsClient = this; - this.esp = new ESPSDK.Client(espAddress); - this.esp.connect().then(function () { - // Kind of wonder why the ESP Client does not own this tbh - elementsClient.cmdProducer = elementsClient.esp.createProducer(new ESPSDK.Address('qody.sg_sin0.vision.mock.cmd')); - resolve(elementsClient); - }); - }); -}; - -/** - * Create a new Elements Screen handle. This handle is used to perform operations on the screen. - * - * The screenID identifies the individual screen or screen instance with the backend. - * - * @param elementsClient The elements client. - * @constructor - */ -ElementsSDK.Screen = function (elementsClient, screenId) { - return new Promise((resolve) => { - this.stream = new ESPSDK.GraphStream(); - const screen = this; - - const request = ESPSDK.lc.esp.v18.Graph_state_requestElementDAO.create(); - // This request has no arguments - - const stream = new ESPSDK.Stream(elementsClient.esp, - new ESPSDK.Address('qody.sg_sin0.vision.mock.stm', true), - new ESPSDK.Address('qody.sg_sin0.vision.mock.cmd'), - request, - function (msg) { - // FIXME: Resolving the Promise should wait for the screen to spool - screen.stream.process(msg, function () { - resolve(screen); - }); - }); - }); -} - -/** - * Set the change listener for this screen's graph. Only one listener can be set at a time. The listener will be - * called once for every mutation, and the mutation delta will be passed into the function. - * - * @param listener The callback function. - */ -ElementsSDK.Screen.prototype.setChangeListener = function (callback) { - this.stream.setChangeListener(callback); -} - -/** - * Return the current transaction id (txid) for this screen. The txid can be used with various other functions when - * making requests to guard synchronization. - * - * @returns {*} The transaction ID. - */ -ElementsSDK.Screen.prototype.getTxId = function () { - return this.stream.getTxId(); -} - -/** - * Send an update for a value in the graph for this screen. To clear the value for an attribute, set it to - * null. - * - * The actual mechanics of the update, including whether or not the value can be updated, are dictated by the - * backend service. If an error occurs during the mutation an exception will be thrown. - * - * @param objId The object id for the graph object. - * @param name The name of the attribute to modify. - * @param value The value to set the attribute to. - */ -ElementsSDK.Screen.prototype.updateValue = function (objId, name, value) { - throw 'Reference exception'; -} - -/******************************************************************************************************************/ - -const lc = {}; -ElementsSDK.lc = lc; -lc.elements = {}; -lc.elements.command = {}; -lc.elements.command.v18 = {}; - -lc.elements.command.v18.Dataframe_obj_update_responseElementDAO = {}; - -lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.eoType = "lc.elements.command.v18.dataframe_obj_update_response"; - -lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.KEY_TXID = "txid"; - -lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_obj_update_response'}; -}; - -lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=38d7aca2-ea43-40d3-861e-80ef56df7b02, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=9b78faf2-d6ea-4e36-8b8a-c4d4fa1017fc, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.getTxid = function (eo) { - if (!lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.KEY_TXID)]; - -}; - -lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.setTxid = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_obj_update_responseElementDAO.KEY_TXID] = value; -}; - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO = {}; - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.eoType = "lc.elements.command.v18.dataframe_obj_update_request"; - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_ID = "id"; -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_NAME = "name"; -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_VALUE = "value"; -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_TXID = "txid"; - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_obj_update_request'}; -}; - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=7d05d188-ed64-447c-8747-baad7eb0c3f5, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=d7ea553d-5e8c-43ae-8ee3-5c1cd7df677b, data={text=DataFrame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.getId = function (eo) { - if (!lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_ID)]; - -}; - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.setId = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=8ff3479f-667f-4776-9077-ed9aa2d8fb9e, data={eoType=name, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=5a493b36-d290-45cd-862b-655411fa4a24, data={text=Object Key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.getName = function (eo) { - if (!lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_NAME)]; - -}; - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.setName = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_NAME] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=aba48c27-ad06-4a64-8d9d-e3d15a04a17f, data={eoType=value, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=58d87aca-5619-4e2f-ad64-471eeba2dff9, data={text=Object Value, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.getValue = function (eo) { - if (!lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_VALUE)]; - -}; - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.setValue = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_VALUE] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=c3917f9f-de63-4d17-a844-2e5c566aeb7f, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=eba2d3dd-6f79-4be5-99d0-1d32203b53f9, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.getTxid = function (eo) { - if (!lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_TXID)]; - -}; - -lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.setTxid = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_obj_update_requestElementDAO.KEY_TXID] = value; -}; - -lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO = {}; - -lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.eoType = "lc.elements.command.v18.dataframe_obj_delete_request"; - -lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.KEY_ID = "id"; -lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.KEY_TXID = "txid"; - -lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_obj_delete_request'}; -}; - -lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=44280523-b091-47ca-a832-6f134336ee70, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=8e38cfd7-fc02-4ff0-b06b-cb2e5122ac54, data={text=DataFrame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.getId = function (eo) { - if (!lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.KEY_ID)]; - -}; - -lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.setId = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=fd19da07-045b-4241-818b-1f3c4c046984, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=3d4f4df1-1d33-4257-821b-94ba9957f767, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.getTxid = function (eo) { - if (!lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.KEY_TXID)]; - -}; - -lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.setTxid = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_obj_delete_requestElementDAO.KEY_TXID] = value; -}; - -lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO = {}; - -lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.eoType = "lc.elements.command.v18.dataframe_obj_delete_response"; - -lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.KEY_TXID = "txid"; - -lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_obj_delete_response'}; -}; - -lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=c49c8548-a92c-44c5-a9eb-87d0415aa724, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=ef198d56-88a8-41d0-a90a-4f36a062bb79, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.getTxid = function (eo) { - if (!lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.KEY_TXID)]; - -}; - -lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.setTxid = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_obj_delete_responseElementDAO.KEY_TXID] = value; -}; - -lc.elements.command.v18.Dataframe_obj_create_requestElementDAO = {}; - -lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.eoType = "lc.elements.command.v18.dataframe_obj_create_request"; - -lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.KEY_ID = "id"; - -lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_obj_create_request'}; -}; - -lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=826e4739-9d3f-4766-a533-8e2e312d30bd, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=5b73b469-1dcb-4a65-9abc-8dd4d62e6914, data={text=DataFrame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.getId = function (eo) { - if (!lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.KEY_ID)]; - -}; - -lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.setId = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_obj_create_requestElementDAO.KEY_ID] = value; -}; - -lc.elements.command.v18.Dataframe_obj_create_responseElementDAO = {}; - -lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.eoType = "lc.elements.command.v18.dataframe_obj_create_response"; - -lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.KEY_TXID = "txid"; - -lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_obj_create_response'}; -}; - -lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=720608c9-2ac0-4161-9c45-88b563d625df, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=9b751a17-9f2a-42a3-b134-72d0481d35ec, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.getTxid = function (eo) { - if (!lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.KEY_TXID)]; - -}; - -lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.setTxid = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_obj_create_responseElementDAO.KEY_TXID] = value; -}; - -lc.elements.command.v18.ErrorElementDAO = {}; - -lc.elements.command.v18.ErrorElementDAO.eoType = "lc.elements.command.v18.error"; - -lc.elements.command.v18.ErrorElementDAO.KEY_NUMBER = "number"; -lc.elements.command.v18.ErrorElementDAO.KEY_TEXT = "text"; - -lc.elements.command.v18.ErrorElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.error'}; -}; - -lc.elements.command.v18.ErrorElementDAO.assertType = function (eo) { - return lc.elements.command.v18.ErrorElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=31d38b19-63d0-495e-a27d-e24b9698adcd, data={eoType=number, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=d1d06bbe-b5e6-4472-853a-c9716ea157d2, data={text=Error Number, locale=en}, meta=null}]} , type=number}, meta=null} */ - - -lc.elements.command.v18.ErrorElementDAO.getNumber = function (eo) { - if (!lc.elements.command.v18.ErrorElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.ErrorElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.ErrorElementDAO.KEY_NUMBER)]; - -}; - -lc.elements.command.v18.ErrorElementDAO.setNumber = function (eo, value) { - if (!lc.elements.command.v18.ErrorElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.ErrorElementDAO.eoType + "]"; - eo[lc.elements.command.v18.ErrorElementDAO.KEY_NUMBER] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=299feece-9c81-4216-8648-28324b0b50c2, data={eoType=text, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=b2d7e8f6-7508-488d-a396-7263ada0f9ef, data={text=Error Text, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.ErrorElementDAO.getText = function (eo) { - if (!lc.elements.command.v18.ErrorElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.ErrorElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.ErrorElementDAO.KEY_TEXT)]; - -}; - -lc.elements.command.v18.ErrorElementDAO.setText = function (eo, value) { - if (!lc.elements.command.v18.ErrorElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.ErrorElementDAO.eoType + "]"; - eo[lc.elements.command.v18.ErrorElementDAO.KEY_TEXT] = value; -}; - -lc.elements.command.v18.Dataframe_select_responseElementDAO = {}; - -lc.elements.command.v18.Dataframe_select_responseElementDAO.eoType = "lc.elements.command.v18.dataframe_select_response"; - -lc.elements.command.v18.Dataframe_select_responseElementDAO.KEY_TXID = "txid"; - -lc.elements.command.v18.Dataframe_select_responseElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_select_response'}; -}; - -lc.elements.command.v18.Dataframe_select_responseElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_select_responseElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=8766b4fc-29c0-4e2a-ab79-b19314742b56, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=00816c53-72da-47c3-a3c4-7592bd66cb47, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_select_responseElementDAO.getTxid = function (eo) { - if (!lc.elements.command.v18.Dataframe_select_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_select_responseElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_select_responseElementDAO.KEY_TXID)]; - -}; - -lc.elements.command.v18.Dataframe_select_responseElementDAO.setTxid = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_select_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_select_responseElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_select_responseElementDAO.KEY_TXID] = value; -}; - -lc.elements.command.v18.Dataframe_select_requestElementDAO = {}; - -lc.elements.command.v18.Dataframe_select_requestElementDAO.eoType = "lc.elements.command.v18.dataframe_select_request"; - -lc.elements.command.v18.Dataframe_select_requestElementDAO.KEY_ID = "id"; -lc.elements.command.v18.Dataframe_select_requestElementDAO.KEY_TXID = "txid"; -lc.elements.command.v18.Dataframe_select_requestElementDAO.KEY_SELECTION = "selection"; - -lc.elements.command.v18.Dataframe_select_requestElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_select_request'}; -}; - -lc.elements.command.v18.Dataframe_select_requestElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_select_requestElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=2112fb2a-aa1d-4feb-b13d-5f429fce8e49, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=4a4517cc-a33d-4c29-83f9-49a0fb62ccb0, data={text=DataFrame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.elements.command.v18.Dataframe_select_requestElementDAO.getId = function (eo) { - if (!lc.elements.command.v18.Dataframe_select_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_select_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_select_requestElementDAO.KEY_ID)]; - -}; - -lc.elements.command.v18.Dataframe_select_requestElementDAO.setId = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_select_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_select_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_select_requestElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=fd7dab45-0b6b-4e53-a620-62b7e2271b84, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=3dc53873-d725-4ed3-b7de-6bbfdc91cad2, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_select_requestElementDAO.getTxid = function (eo) { - if (!lc.elements.command.v18.Dataframe_select_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_select_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_select_requestElementDAO.KEY_TXID)]; - -}; - -lc.elements.command.v18.Dataframe_select_requestElementDAO.setTxid = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_select_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_select_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_select_requestElementDAO.KEY_TXID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=e3b41dbc-bb5b-4dbd-a622-77655c5234ea, data={eoType=selection, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=465679bf-35c5-4669-943a-79645f8331f8, data={text=Selection, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_select_requestElementDAO.getSelection = function (eo) { - if (!lc.elements.command.v18.Dataframe_select_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_select_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_select_requestElementDAO.KEY_SELECTION)]; - -}; - -lc.elements.command.v18.Dataframe_select_requestElementDAO.setSelection = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_select_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_select_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_select_requestElementDAO.KEY_SELECTION] = value; -}; - -lc.elements.command.v18.Dataframe_filter_specElementDAO = {}; - -lc.elements.command.v18.Dataframe_filter_specElementDAO.eoType = "lc.elements.command.v18.dataframe_filter_spec"; - -lc.elements.command.v18.Dataframe_filter_specElementDAO.KEY_NAME = "name"; -lc.elements.command.v18.Dataframe_filter_specElementDAO.KEY_FILTER_TEXT = "filter_text"; - -lc.elements.command.v18.Dataframe_filter_specElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_filter_spec'}; -}; - -lc.elements.command.v18.Dataframe_filter_specElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_filter_specElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=27558112-ae00-4b6b-a2c2-8db3d74bb4ea, data={eoType=name, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=a65f4b53-f02f-4ca3-8846-7b0584249fbc, data={text=Column Name, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_filter_specElementDAO.getName = function (eo) { - if (!lc.elements.command.v18.Dataframe_filter_specElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_filter_specElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_filter_specElementDAO.KEY_NAME)]; - -}; - -lc.elements.command.v18.Dataframe_filter_specElementDAO.setName = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_filter_specElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_filter_specElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_filter_specElementDAO.KEY_NAME] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=093d9a68-4c22-4296-a20c-a69bd450b695, data={eoType=filter_text, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=e5c46362-7e2d-4118-9937-151c032bb911, data={text=Filter Text, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_filter_specElementDAO.getFilter_text = function (eo) { - if (!lc.elements.command.v18.Dataframe_filter_specElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_filter_specElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_filter_specElementDAO.KEY_FILTER_TEXT)]; - -}; - -lc.elements.command.v18.Dataframe_filter_specElementDAO.setFilter_text = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_filter_specElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_filter_specElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_filter_specElementDAO.KEY_FILTER_TEXT] = value; -}; - -lc.elements.command.v18.Dataframe_sort_specElementDAO = {}; - -lc.elements.command.v18.Dataframe_sort_specElementDAO.eoType = "lc.elements.command.v18.dataframe_sort_spec"; - -lc.elements.command.v18.Dataframe_sort_specElementDAO.KEY_NAME = "name"; -lc.elements.command.v18.Dataframe_sort_specElementDAO.KEY_SORT_ORDER = "sort_order"; - -lc.elements.command.v18.Dataframe_sort_specElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_sort_spec'}; -}; - -lc.elements.command.v18.Dataframe_sort_specElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_sort_specElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=ba3fcb33-00c5-43ee-a360-0f0ef828d54b, data={eoType=name, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=eeaa19d3-efd5-4239-b741-0f651ca510bf, data={text=Column Name, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_sort_specElementDAO.getName = function (eo) { - if (!lc.elements.command.v18.Dataframe_sort_specElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_sort_specElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_sort_specElementDAO.KEY_NAME)]; - -}; - -lc.elements.command.v18.Dataframe_sort_specElementDAO.setName = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_sort_specElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_sort_specElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_sort_specElementDAO.KEY_NAME] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=28214ac6-7fa3-4b37-9313-feabc7aff048, data={eoType=sort_order, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=b79a835f-a3cb-4615-9b0d-6ff0c279f145, data={text=Sort Order, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_sort_specElementDAO.getSort_order = function (eo) { - if (!lc.elements.command.v18.Dataframe_sort_specElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_sort_specElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_sort_specElementDAO.KEY_SORT_ORDER)]; - -}; - -lc.elements.command.v18.Dataframe_sort_specElementDAO.setSort_order = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_sort_specElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_sort_specElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_sort_specElementDAO.KEY_SORT_ORDER] = value; -}; - -lc.elements.command.v18.Dataframe_filter_responseElementDAO = {}; - -lc.elements.command.v18.Dataframe_filter_responseElementDAO.eoType = "lc.elements.command.v18.dataframe_filter_response"; - -lc.elements.command.v18.Dataframe_filter_responseElementDAO.KEY_TXID = "txid"; - -lc.elements.command.v18.Dataframe_filter_responseElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_filter_response'}; -}; - -lc.elements.command.v18.Dataframe_filter_responseElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_filter_responseElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=798c7b16-d5b5-4c49-af8f-e2004c5a13df, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=d596613c-07e1-4cc8-86b6-ad4bd9ffdf8b, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_filter_responseElementDAO.getTxid = function (eo) { - if (!lc.elements.command.v18.Dataframe_filter_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_filter_responseElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_filter_responseElementDAO.KEY_TXID)]; - -}; - -lc.elements.command.v18.Dataframe_filter_responseElementDAO.setTxid = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_filter_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_filter_responseElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_filter_responseElementDAO.KEY_TXID] = value; -}; - -lc.elements.command.v18.Dataframe_filter_requestElementDAO = {}; - -lc.elements.command.v18.Dataframe_filter_requestElementDAO.eoType = "lc.elements.command.v18.dataframe_filter_request"; - -lc.elements.command.v18.Dataframe_filter_requestElementDAO.KEY_COLS = "cols"; -lc.elements.command.v18.Dataframe_filter_requestElementDAO.KEY_ID = "id"; - -lc.elements.command.v18.Dataframe_filter_requestElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_filter_request'}; -}; - -lc.elements.command.v18.Dataframe_filter_requestElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_filter_requestElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=f93ef650-af9b-4a79-8d7f-cf613914e888, data={eoType=cols, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=76a99f26-0c01-499c-88d9-a3492d20aad6, data={text=Columns, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.elements.command.v18.Dataframe_filter_requestElementDAO.getCols = function (eo) { - if (!lc.elements.command.v18.Dataframe_filter_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_filter_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_filter_requestElementDAO.KEY_COLS)]; - -}; - -lc.elements.command.v18.Dataframe_filter_requestElementDAO.setCols = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_filter_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_filter_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_filter_requestElementDAO.KEY_COLS] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=b76829fe-e549-4c02-ab4c-5f3b7f8a049d, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=12f47a74-303e-454f-8335-4715477cd41a, data={text=Data Frame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.elements.command.v18.Dataframe_filter_requestElementDAO.getId = function (eo) { - if (!lc.elements.command.v18.Dataframe_filter_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_filter_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_filter_requestElementDAO.KEY_ID)]; - -}; - -lc.elements.command.v18.Dataframe_filter_requestElementDAO.setId = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_filter_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_filter_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_filter_requestElementDAO.KEY_ID] = value; -}; - -lc.elements.command.v18.Dataframe_sort_responseElementDAO = {}; - -lc.elements.command.v18.Dataframe_sort_responseElementDAO.eoType = "lc.elements.command.v18.dataframe_sort_response"; - -lc.elements.command.v18.Dataframe_sort_responseElementDAO.KEY_TXID = "txid"; - -lc.elements.command.v18.Dataframe_sort_responseElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_sort_response'}; -}; - -lc.elements.command.v18.Dataframe_sort_responseElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_sort_responseElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=bbd3d2b9-4a37-4a6b-a8d9-ea0dc198beb9, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=45ebfd3e-9f71-4638-83bf-700f2b44c7e9, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_sort_responseElementDAO.getTxid = function (eo) { - if (!lc.elements.command.v18.Dataframe_sort_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_sort_responseElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_sort_responseElementDAO.KEY_TXID)]; - -}; - -lc.elements.command.v18.Dataframe_sort_responseElementDAO.setTxid = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_sort_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_sort_responseElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_sort_responseElementDAO.KEY_TXID] = value; -}; - -lc.elements.command.v18.Dataframe_sort_requestElementDAO = {}; - -lc.elements.command.v18.Dataframe_sort_requestElementDAO.eoType = "lc.elements.command.v18.dataframe_sort_request"; - -lc.elements.command.v18.Dataframe_sort_requestElementDAO.KEY_ID = "id"; -lc.elements.command.v18.Dataframe_sort_requestElementDAO.KEY_COLS = "cols"; - -lc.elements.command.v18.Dataframe_sort_requestElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_sort_request'}; -}; - -lc.elements.command.v18.Dataframe_sort_requestElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_sort_requestElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=91a7c590-baa6-495c-b8b9-4efc3c5ea0b8, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=1551681c-05f5-4267-8d57-0e564d9c2f77, data={text=Data Frame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.elements.command.v18.Dataframe_sort_requestElementDAO.getId = function (eo) { - if (!lc.elements.command.v18.Dataframe_sort_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_sort_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_sort_requestElementDAO.KEY_ID)]; - -}; - -lc.elements.command.v18.Dataframe_sort_requestElementDAO.setId = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_sort_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_sort_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_sort_requestElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=4c0f835a-b786-4f20-a2c3-5e75bfeb6f01, data={eoType=cols, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=6398371b-33f2-45c7-b483-d9bf4222ebdf, data={text=Columns, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.elements.command.v18.Dataframe_sort_requestElementDAO.getCols = function (eo) { - if (!lc.elements.command.v18.Dataframe_sort_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_sort_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_sort_requestElementDAO.KEY_COLS)]; - -}; - -lc.elements.command.v18.Dataframe_sort_requestElementDAO.setCols = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_sort_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_sort_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_sort_requestElementDAO.KEY_COLS] = value; -}; - -lc.elements.command.v18.Dataframe_read_responseElementDAO = {}; - -lc.elements.command.v18.Dataframe_read_responseElementDAO.eoType = "lc.elements.command.v18.dataframe_read_response"; - -lc.elements.command.v18.Dataframe_read_responseElementDAO.KEY_DATA = "data"; - -lc.elements.command.v18.Dataframe_read_responseElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_read_response'}; -}; - -lc.elements.command.v18.Dataframe_read_responseElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_read_responseElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=9a0f75ee-44dd-409c-bca0-9a39a27b42d2, data={eoType=data, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=3d354092-f4f0-4874-9337-ab8044c311fe, data={text=Data, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.elements.command.v18.Dataframe_read_responseElementDAO.getData = function (eo) { - if (!lc.elements.command.v18.Dataframe_read_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_read_responseElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_read_responseElementDAO.KEY_DATA)]; - -}; - -lc.elements.command.v18.Dataframe_read_responseElementDAO.setData = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_read_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_read_responseElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_read_responseElementDAO.KEY_DATA] = value; -}; - -lc.elements.command.v18.Dataframe_read_requestElementDAO = {}; - -lc.elements.command.v18.Dataframe_read_requestElementDAO.eoType = "lc.elements.command.v18.dataframe_read_request"; - -lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_ID = "id"; -lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_TXID = "txid"; -lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_INDEX = "index"; -lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_LENGTH = "length"; - -lc.elements.command.v18.Dataframe_read_requestElementDAO.create = function () { - return {'_type': 'lc.elements.command.v18.dataframe_read_request'}; -}; - -lc.elements.command.v18.Dataframe_read_requestElementDAO.assertType = function (eo) { - return lc.elements.command.v18.Dataframe_read_requestElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=8eca0902-424d-4cf6-bd94-55c477aa2241, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=172f849a-8e81-4eb8-a7d0-2361337faf8e, data={text=Data Frame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.elements.command.v18.Dataframe_read_requestElementDAO.getId = function (eo) { - if (!lc.elements.command.v18.Dataframe_read_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_read_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_ID)]; - -}; - -lc.elements.command.v18.Dataframe_read_requestElementDAO.setId = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_read_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_read_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=fe836378-de85-465a-bbd8-ac37c7c7bcf2, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=25778e22-bd86-4e79-a35f-2e36af5bc278, data={text=Transaction ID, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.command.v18.Dataframe_read_requestElementDAO.getTxid = function (eo) { - if (!lc.elements.command.v18.Dataframe_read_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_read_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_TXID)]; - -}; - -lc.elements.command.v18.Dataframe_read_requestElementDAO.setTxid = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_read_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_read_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_TXID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=46d22a12-d007-4b06-b560-119a6946e02f, data={eoType=index, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=9b9dd85c-92c3-47ca-82ca-2c287e5e59e0, data={text=Start Index, locale=en}, meta=null}]} , type=number}, meta=null} */ - - -lc.elements.command.v18.Dataframe_read_requestElementDAO.getIndex = function (eo) { - if (!lc.elements.command.v18.Dataframe_read_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_read_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_INDEX)]; - -}; - -lc.elements.command.v18.Dataframe_read_requestElementDAO.setIndex = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_read_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_read_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_INDEX] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=35308a6f-3ee1-4089-8029-374aa1538b26, data={eoType=length, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=5e79887d-64fd-4a54-8c40-653e4aac5fdd, data={text=Length, locale=en}, meta=null}]} , type=number}, meta=null} */ - - -lc.elements.command.v18.Dataframe_read_requestElementDAO.getLength = function (eo) { - if (!lc.elements.command.v18.Dataframe_read_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_read_requestElementDAO.eoType + "]"; - return eo[(lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_LENGTH)]; - -}; - -lc.elements.command.v18.Dataframe_read_requestElementDAO.setLength = function (eo, value) { - if (!lc.elements.command.v18.Dataframe_read_requestElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.command.v18.Dataframe_read_requestElementDAO.eoType + "]"; - eo[lc.elements.command.v18.Dataframe_read_requestElementDAO.KEY_LENGTH] = value; -}; - - -/******************************************************************************************************************/ - -lc.elements.screen = {}; -lc.elements.screen.v18 = {}; - -lc.elements.screen.v18.DataframeElementDAO = {}; - -lc.elements.screen.v18.DataframeElementDAO.eoType = "lc.elements.screen.v18.dataframe"; - -lc.elements.screen.v18.DataframeElementDAO.KEY_ID = "id"; -lc.elements.screen.v18.DataframeElementDAO.KEY_VERSION = "version"; -lc.elements.screen.v18.DataframeElementDAO.KEY_SIZE = "size"; - -lc.elements.screen.v18.DataframeElementDAO.create = function () { - return {'_type': 'lc.elements.screen.v18.dataframe'}; -}; - -lc.elements.screen.v18.DataframeElementDAO.assertType = function (eo) { - return lc.elements.screen.v18.DataframeElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=8f7bdab5-2c12-4da4-9f74-735baaec911d, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=5b90ee1f-22dd-402d-8be5-32dc1238fda2, data={text=ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.elements.screen.v18.DataframeElementDAO.getId = function (eo) { - if (!lc.elements.screen.v18.DataframeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.DataframeElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.DataframeElementDAO.KEY_ID)]; - -}; - -lc.elements.screen.v18.DataframeElementDAO.setId = function (eo, value) { - if (!lc.elements.screen.v18.DataframeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.DataframeElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.DataframeElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=2eed5873-da32-4637-be28-b5a5f429f845, data={eoType=version, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=200266fa-fdca-46ef-9869-9e3823b3c3fa, data={text=version, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.screen.v18.DataframeElementDAO.getVersion = function (eo) { - if (!lc.elements.screen.v18.DataframeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.DataframeElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.DataframeElementDAO.KEY_VERSION)]; - -}; - -lc.elements.screen.v18.DataframeElementDAO.setVersion = function (eo, value) { - if (!lc.elements.screen.v18.DataframeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.DataframeElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.DataframeElementDAO.KEY_VERSION] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=2ec6352c-7883-438b-b66e-0d9cb095b17e, data={eoType=size, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=cf0e308b-27c5-4d24-841a-eeb8b2bcf767, data={text=size, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.screen.v18.DataframeElementDAO.getSize = function (eo) { - if (!lc.elements.screen.v18.DataframeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.DataframeElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.DataframeElementDAO.KEY_SIZE)]; - -}; - -lc.elements.screen.v18.DataframeElementDAO.setSize = function (eo, value) { - if (!lc.elements.screen.v18.DataframeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.DataframeElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.DataframeElementDAO.KEY_SIZE] = value; -}; - -lc.elements.screen.v18.Text_fieldElementDAO = {}; - -lc.elements.screen.v18.Text_fieldElementDAO.eoType = "lc.elements.screen.v18.text_field"; - -lc.elements.screen.v18.Text_fieldElementDAO.KEY_LABEL = "label"; -lc.elements.screen.v18.Text_fieldElementDAO.KEY_IS_READ_ONLY = "is_read_only"; - -lc.elements.screen.v18.Text_fieldElementDAO.create = function () { - return {'_type': 'lc.elements.screen.v18.text_field'}; -}; - -lc.elements.screen.v18.Text_fieldElementDAO.assertType = function (eo) { - return lc.elements.screen.v18.Text_fieldElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=4eb2b246-1463-4791-851f-8b766c1e3eb2, data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=47261237-9d15-4ba3-873c-0db3c4a3cad7, data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.screen.v18.Text_fieldElementDAO.getLabel = function (eo) { - if (!lc.elements.screen.v18.Text_fieldElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Text_fieldElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.Text_fieldElementDAO.KEY_LABEL)]; - -}; - -lc.elements.screen.v18.Text_fieldElementDAO.setLabel = function (eo, value) { - if (!lc.elements.screen.v18.Text_fieldElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Text_fieldElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.Text_fieldElementDAO.KEY_LABEL] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=3a26f8a5-cb72-44d0-ab38-78ba88919753, data={eoType=is_read_only, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=f4d035d0-2a17-498d-9e73-23b5322f3e2e, data={text=Read-Only, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - -lc.elements.screen.v18.Text_fieldElementDAO.getIs_read_only = function (eo) { - if (!lc.elements.screen.v18.Text_fieldElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Text_fieldElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.Text_fieldElementDAO.KEY_IS_READ_ONLY)]; - -}; - -lc.elements.screen.v18.Text_fieldElementDAO.setIs_read_only = function (eo, value) { - if (!lc.elements.screen.v18.Text_fieldElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Text_fieldElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.Text_fieldElementDAO.KEY_IS_READ_ONLY] = value; -}; - -lc.elements.screen.v18.Form_layoutElementDAO = {}; - -lc.elements.screen.v18.Form_layoutElementDAO.eoType = "lc.elements.screen.v18.form_layout"; - -lc.elements.screen.v18.Form_layoutElementDAO.KEY_CONTENT = "content"; - -lc.elements.screen.v18.Form_layoutElementDAO.create = function () { - return {'_type': 'lc.elements.screen.v18.form_layout'}; -}; - -lc.elements.screen.v18.Form_layoutElementDAO.assertType = function (eo) { - return lc.elements.screen.v18.Form_layoutElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=6b8c6422-e7d5-44ea-9c7e-d7ecac14a47d, data={eoType=content, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=e1a515f2-1558-4892-97da-ee84745fa542, data={text=Content, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.elements.screen.v18.Form_layoutElementDAO.getContent = function (eo) { - if (!lc.elements.screen.v18.Form_layoutElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Form_layoutElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.Form_layoutElementDAO.KEY_CONTENT)]; - -}; - -lc.elements.screen.v18.Form_layoutElementDAO.setContent = function (eo, value) { - if (!lc.elements.screen.v18.Form_layoutElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Form_layoutElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.Form_layoutElementDAO.KEY_CONTENT] = value; -}; - -lc.elements.screen.v18.Table_col_cfgElementDAO = {}; - -lc.elements.screen.v18.Table_col_cfgElementDAO.eoType = "lc.elements.screen.v18.table_col_cfg"; - -lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_NAME = "name"; -lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_LABEL = "label"; -lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_WIDTH = "width"; -lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_ALIGNMENT = "alignment"; -lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_IS_READ_ONLY = "is_read_only"; - -lc.elements.screen.v18.Table_col_cfgElementDAO.create = function () { - return {'_type': 'lc.elements.screen.v18.table_col_cfg'}; -}; - -lc.elements.screen.v18.Table_col_cfgElementDAO.assertType = function (eo) { - return lc.elements.screen.v18.Table_col_cfgElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=497f5f57-b98d-4351-8210-f2b719efe96f, data={eoType=name, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=1344b558-49e4-46db-aef3-cf7366faa0f3, data={text=Name, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.screen.v18.Table_col_cfgElementDAO.getName = function (eo) { - if (!lc.elements.screen.v18.Table_col_cfgElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Table_col_cfgElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_NAME)]; - -}; - -lc.elements.screen.v18.Table_col_cfgElementDAO.setName = function (eo, value) { - if (!lc.elements.screen.v18.Table_col_cfgElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Table_col_cfgElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_NAME] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=cee1b018-e8b2-4f0f-bb44-1fe8ec2f9bef, data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=5b8c4503-a503-4f04-8dd6-4e56f5f57cdd, data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.screen.v18.Table_col_cfgElementDAO.getLabel = function (eo) { - if (!lc.elements.screen.v18.Table_col_cfgElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Table_col_cfgElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_LABEL)]; - -}; - -lc.elements.screen.v18.Table_col_cfgElementDAO.setLabel = function (eo, value) { - if (!lc.elements.screen.v18.Table_col_cfgElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Table_col_cfgElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_LABEL] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=30a839bc-04eb-451a-968a-f33cfe52d147, data={eoType=width, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=ed61944a-ce6a-4b51-9de8-e200d89c42e3, data={text=Width (chars), locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.screen.v18.Table_col_cfgElementDAO.getWidth = function (eo) { - if (!lc.elements.screen.v18.Table_col_cfgElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Table_col_cfgElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_WIDTH)]; - -}; - -lc.elements.screen.v18.Table_col_cfgElementDAO.setWidth = function (eo, value) { - if (!lc.elements.screen.v18.Table_col_cfgElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Table_col_cfgElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_WIDTH] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=2b932a37-c1c3-4911-8f00-890f139590a1, data={eoType=alignment, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=8935c3ab-c29a-4b4b-b3e9-1e6bf4fa92be, data={text=Alignment, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.screen.v18.Table_col_cfgElementDAO.getAlignment = function (eo) { - if (!lc.elements.screen.v18.Table_col_cfgElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Table_col_cfgElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_ALIGNMENT)]; - -}; - -lc.elements.screen.v18.Table_col_cfgElementDAO.setAlignment = function (eo, value) { - if (!lc.elements.screen.v18.Table_col_cfgElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Table_col_cfgElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_ALIGNMENT] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=88a51abe-becd-41b0-ad8e-89a094f33a4d, data={eoType=is_read_only, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=1ca058e9-5777-4dbf-ba0d-40b03c364f51, data={text=Read-Only, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - -lc.elements.screen.v18.Table_col_cfgElementDAO.getIs_read_only = function (eo) { - if (!lc.elements.screen.v18.Table_col_cfgElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Table_col_cfgElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_IS_READ_ONLY)]; - -}; - -lc.elements.screen.v18.Table_col_cfgElementDAO.setIs_read_only = function (eo, value) { - if (!lc.elements.screen.v18.Table_col_cfgElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.Table_col_cfgElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.Table_col_cfgElementDAO.KEY_IS_READ_ONLY] = value; -}; - -lc.elements.screen.v18.PanelElementDAO = {}; - -lc.elements.screen.v18.PanelElementDAO.eoType = "lc.elements.screen.v18.panel"; - -lc.elements.screen.v18.PanelElementDAO.KEY_LABEL = "label"; -lc.elements.screen.v18.PanelElementDAO.KEY_CONTENT = "content"; - -lc.elements.screen.v18.PanelElementDAO.create = function () { - return {'_type': 'lc.elements.screen.v18.panel'}; -}; - -lc.elements.screen.v18.PanelElementDAO.assertType = function (eo) { - return lc.elements.screen.v18.PanelElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=53fcd119-ba2d-48a6-b928-fdabd47e1345, data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=49e0f320-f485-468f-b961-737c3c70e0e2, data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.screen.v18.PanelElementDAO.getLabel = function (eo) { - if (!lc.elements.screen.v18.PanelElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.PanelElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.PanelElementDAO.KEY_LABEL)]; - -}; - -lc.elements.screen.v18.PanelElementDAO.setLabel = function (eo, value) { - if (!lc.elements.screen.v18.PanelElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.PanelElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.PanelElementDAO.KEY_LABEL] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=35b6e6b6-d6a4-47ff-a913-0a55c9f88b35, data={eoType=content, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=c4498834-0d13-4501-8827-dddb6b5c56bb, data={text=Content, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.elements.screen.v18.PanelElementDAO.getContent = function (eo) { - if (!lc.elements.screen.v18.PanelElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.PanelElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.PanelElementDAO.KEY_CONTENT)]; - -}; - -lc.elements.screen.v18.PanelElementDAO.setContent = function (eo, value) { - if (!lc.elements.screen.v18.PanelElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.PanelElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.PanelElementDAO.KEY_CONTENT] = value; -}; - -lc.elements.screen.v18.TableElementDAO = {}; - -lc.elements.screen.v18.TableElementDAO.eoType = "lc.elements.screen.v18.table"; - -lc.elements.screen.v18.TableElementDAO.KEY_DATAFRAME_ID = "dataframe_id"; -lc.elements.screen.v18.TableElementDAO.KEY_IS_READ_ONLY = "is_read_only"; -lc.elements.screen.v18.TableElementDAO.KEY_COLUMNS = "columns"; - -lc.elements.screen.v18.TableElementDAO.create = function () { - return {'_type': 'lc.elements.screen.v18.table'}; -}; - -lc.elements.screen.v18.TableElementDAO.assertType = function (eo) { - return lc.elements.screen.v18.TableElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=8639aaf4-508f-4fb9-baf5-e7e1643198c9, data={eoType=dataframe_id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=30d0a7d1-3ea4-46dc-ad6b-77d78d4e2ff3, data={text=Dataframe ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.elements.screen.v18.TableElementDAO.getDataframe_id = function (eo) { - if (!lc.elements.screen.v18.TableElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.TableElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.TableElementDAO.KEY_DATAFRAME_ID)]; - -}; - -lc.elements.screen.v18.TableElementDAO.setDataframe_id = function (eo, value) { - if (!lc.elements.screen.v18.TableElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.TableElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.TableElementDAO.KEY_DATAFRAME_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=7a28f7e3-1627-4a63-87a5-dc0373092cb4, data={eoType=is_read_only, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=45dc3ab6-742e-4616-9948-98262ee3c265, data={text=Read-Only, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - -lc.elements.screen.v18.TableElementDAO.getIs_read_only = function (eo) { - if (!lc.elements.screen.v18.TableElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.TableElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.TableElementDAO.KEY_IS_READ_ONLY)]; - -}; - -lc.elements.screen.v18.TableElementDAO.setIs_read_only = function (eo, value) { - if (!lc.elements.screen.v18.TableElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.TableElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.TableElementDAO.KEY_IS_READ_ONLY] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=dbe39ff4-c5f7-4f0c-ade9-78f69ec5a385, data={eoType=columns, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=382fc243-5d53-41b2-9356-f01e1fa1dc8f, data={text=Columns, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.elements.screen.v18.TableElementDAO.getColumns = function (eo) { - if (!lc.elements.screen.v18.TableElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.TableElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.TableElementDAO.KEY_COLUMNS)]; - -}; - -lc.elements.screen.v18.TableElementDAO.setColumns = function (eo, value) { - if (!lc.elements.screen.v18.TableElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.TableElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.TableElementDAO.KEY_COLUMNS] = value; -}; - -lc.elements.screen.v18.ScreenElementDAO = {}; - -lc.elements.screen.v18.ScreenElementDAO.eoType = "lc.elements.screen.v18.screen"; - -lc.elements.screen.v18.ScreenElementDAO.KEY_CONTENT = "content"; -lc.elements.screen.v18.ScreenElementDAO.KEY_DATAFRAMES = "dataframes"; -lc.elements.screen.v18.ScreenElementDAO.KEY_LABEL = "label"; - -lc.elements.screen.v18.ScreenElementDAO.create = function () { - return {'_type': 'lc.elements.screen.v18.screen'}; -}; - -lc.elements.screen.v18.ScreenElementDAO.assertType = function (eo) { - return lc.elements.screen.v18.ScreenElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=decfe165-ff4f-4052-a912-0eefa00bae53, data={eoType=content, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=945643ee-3317-444d-8a80-bc59c28b344a, data={text=Content, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.elements.screen.v18.ScreenElementDAO.getContent = function (eo) { - if (!lc.elements.screen.v18.ScreenElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.ScreenElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.ScreenElementDAO.KEY_CONTENT)]; - -}; - -lc.elements.screen.v18.ScreenElementDAO.setContent = function (eo, value) { - if (!lc.elements.screen.v18.ScreenElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.ScreenElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.ScreenElementDAO.KEY_CONTENT] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=b0a6b107-0ee4-4b47-aacc-6de2ad802e15, data={eoType=dataframes, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=14e04b7d-0b6d-4450-b020-8a3e722f4bf7, data={text=Dataframes, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.elements.screen.v18.ScreenElementDAO.getDataframes = function (eo) { - if (!lc.elements.screen.v18.ScreenElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.ScreenElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.ScreenElementDAO.KEY_DATAFRAMES)]; - -}; - -lc.elements.screen.v18.ScreenElementDAO.setDataframes = function (eo, value) { - if (!lc.elements.screen.v18.ScreenElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.ScreenElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.ScreenElementDAO.KEY_DATAFRAMES] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=e800f5d6-59ae-406a-86d6-f3a0d2417064, data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=750b4a57-7830-4a2e-8f14-9c81f97e37a7, data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.elements.screen.v18.ScreenElementDAO.getLabel = function (eo) { - if (!lc.elements.screen.v18.ScreenElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.ScreenElementDAO.eoType + "]"; - return eo[(lc.elements.screen.v18.ScreenElementDAO.KEY_LABEL)]; - -}; - -lc.elements.screen.v18.ScreenElementDAO.setLabel = function (eo, value) { - if (!lc.elements.screen.v18.ScreenElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.elements.screen.v18.ScreenElementDAO.eoType + "]"; - eo[lc.elements.screen.v18.ScreenElementDAO.KEY_LABEL] = value; -}; \ No newline at end of file diff --git a/lc-elements-sdk-js/webpack.config.js b/lc-elements-sdk-js/webpack.config.js deleted file mode 100644 index 206584793..000000000 --- a/lc-elements-sdk-js/webpack.config.js +++ /dev/null @@ -1,35 +0,0 @@ -const path = require('path'); - -const webpack = require('webpack') - -module.exports = { - resolve: { - fallback: { - "fs": false, - "tls": false, - "net": false, - "path": false, - "zlib": false, - "http": false, - "https": false, - "stream": false, - "crypto": require.resolve("crypto-browserify"), - "buffer": require.resolve("buffer") - } - }, - entry: './src/index.js', - output: { - filename: 'index.js', - path: path.resolve(__dirname, 'dist'), - library: 'ElementsSDK', - libraryTarget: 'window', - libraryExport: 'ElementsSDK' - }, - plugins: [ - // fix "process is not defined" error: - // (do "npm install process" before running the build) - new webpack.ProvidePlugin({ - process: 'process/browser', - }), - ] -}; diff --git a/lc-elements-sdk/build.gradle b/lc-elements-sdk/build.gradle deleted file mode 100644 index 327a11b7d..000000000 --- a/lc-elements-sdk/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -plugins { - id 'java' -} - -group 'leighco' -version '1.0' - -sourceCompatibility = JavaVersion.VERSION_11 -targetCompatibility = JavaVersion.VERSION_11 - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-eo-schema') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/ElementsConstants.java b/lc-elements-sdk/src/main/java/lc/elements/ElementsConstants.java deleted file mode 100644 index 6a79f6fd8..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/ElementsConstants.java +++ /dev/null @@ -1,6 +0,0 @@ -package lc.elements; - -public class ElementsConstants { - public static String META_KEY_UOM = "uom"; - public static String META_KEY_DISPLAY_TEXT = "display_text"; -} diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/action/SchemaGenerator.java b/lc-elements-sdk/src/main/java/lc/elements/schema/action/SchemaGenerator.java deleted file mode 100644 index 854f97414..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/action/SchemaGenerator.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.action; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.eo.schema.DAOGenerator; -import lc.eo.schema.ElementElementDAO; -import lc.eo.schema.SchemaElementDAO; -import lc.eo.schema.util.AttributeUtil; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -public final class SchemaGenerator { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SchemaGenerator.class); - private static final String BASE_PKG = "lc.elements.action.v1"; - - public static EO generateScreenSchema() { - final EO schema = lc.eo.schema.util.SchemaUtil.create(BASE_PKG + ".Schema"); - - /* - * Indicate that a control has been "triggered". The exact meaning of this varies per-control. For example, - * for a button this would indicate that it has been clicked. - */ - final EO buttonClick = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(buttonClick); - ElementElementDAO.setEoType(buttonClick, BASE_PKG + ".Trigger"); - ElementElementDAO.getAttributes(buttonClick).add(AttributeUtil.create("id", "ID", EODataType.uuid)); - - /* - * Indicate that an attribute value in the screen graph is changing. - */ - final EO screenUpdate = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(screenUpdate); - ElementElementDAO.setEoType(screenUpdate, BASE_PKG + ".AttributeSet"); - ElementElementDAO.getAttributes(screenUpdate).add(AttributeUtil.create("id", "ID", EODataType.uuid)); - ElementElementDAO.getAttributes(screenUpdate).add(AttributeUtil.create("key", "Key")); - ElementElementDAO.getAttributes(screenUpdate).add(AttributeUtil.create("value", "Value")); - - return schema; - } - - public static void main(final String... args) throws IOException { - UniversalJob.banner(logger, "SchemaGenerator", "2022 Alex Leigh"); - final EO schema = generateScreenSchema(); - final DAOGenerator gen = new DAOGenerator(new File("lc-elements-sdk/src/main/java")); - gen.generateJava("lc.elements.schema.action.v1", schema); - try (PrintWriter pw = new PrintWriter(new FileWriter(new File("out.js")))) { - gen.generateEcma5(pw, "lc.elements.schema.v1", schema); - } - logger.info("Generated schema: {}", schema); - } -} diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/action/v1/AttributeSetElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/action/v1/AttributeSetElementDAO.java deleted file mode 100644 index d68c427b8..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/action/v1/AttributeSetElementDAO.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.action.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class AttributeSetElementDAO { - public static final String API_TYPE = "lc.elements.action.v1.AttributeSet"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_KEY = "key"; - public static final String KEY_VALUE = "value"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getKey(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_KEY); - } - - public static void setKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_KEY, value); - } - - public static void setKeyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_KEY, label); - } - - public static void getLabelOrValueKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_KEY); - } - - public static void setIfUnsetKey(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_KEY, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=value, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Value, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getValue(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_VALUE); - } - - public static void setValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_VALUE, value); - } - - public static void setValueLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_VALUE, label); - } - - public static void getLabelOrValueValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_VALUE); - } - - public static void setIfUnsetValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_VALUE, value); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/action/v1/TriggerElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/action/v1/TriggerElementDAO.java deleted file mode 100644 index 16aec73b6..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/action/v1/TriggerElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.action.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class TriggerElementDAO { - public static final String API_TYPE = "lc.elements.action.v1.Trigger"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/SchemaGenerator.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/SchemaGenerator.java deleted file mode 100644 index 5166bf590..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/SchemaGenerator.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.eo.schema.DAOGenerator; -import lc.eo.schema.ElementElementDAO; -import lc.eo.schema.SchemaElementDAO; -import lc.eo.schema.util.AttributeUtil; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -public final class SchemaGenerator { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SchemaGenerator.class); - private static final String BASE_PKG = "lc.elements.command.v18"; - - public static EO generateScreenSchema() { - final EO schema = lc.eo.schema.util.SchemaUtil.create(BASE_PKG + ".schema"); - - final EO dataframeObjUpdateResponse = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeObjUpdateResponse); - ElementElementDAO.setEoType(dataframeObjUpdateResponse, BASE_PKG + ".dataframe_obj_update_response"); - ElementElementDAO.getAttributes(dataframeObjUpdateResponse).add(AttributeUtil.create("txid", "Transaction Number")); - - final EO dataframeObjUpdateRequest = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeObjUpdateRequest); - ElementElementDAO.setEoType(dataframeObjUpdateRequest, BASE_PKG + ".dataframe_obj_update_request"); - ElementElementDAO.getAttributes(dataframeObjUpdateRequest).add(AttributeUtil.create("id", "DataFrame ID", EODataType.uuid)); - ElementElementDAO.getAttributes(dataframeObjUpdateRequest).add(AttributeUtil.create("name", "Object Key")); - ElementElementDAO.getAttributes(dataframeObjUpdateRequest).add(AttributeUtil.create("value", "Object Value")); - ElementElementDAO.getAttributes(dataframeObjUpdateRequest).add(AttributeUtil.create("txid", "Transaction Number")); - - final EO dataframeObjDeleteRequest = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeObjDeleteRequest); - ElementElementDAO.setEoType(dataframeObjDeleteRequest, BASE_PKG + ".dataframe_obj_delete_request"); - ElementElementDAO.getAttributes(dataframeObjDeleteRequest).add(AttributeUtil.create("id", "DataFrame ID", EODataType.uuid)); - ElementElementDAO.getAttributes(dataframeObjDeleteRequest).add(AttributeUtil.create("txid", "Transaction Number")); - - final EO dataframeObjDeleteResponse = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeObjDeleteResponse); - ElementElementDAO.setEoType(dataframeObjDeleteResponse, BASE_PKG + ".dataframe_obj_delete_response"); - ElementElementDAO.getAttributes(dataframeObjDeleteResponse).add(AttributeUtil.create("txid", "Transaction Number")); - - final EO dataframeObjCreateRequest = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeObjCreateRequest); - ElementElementDAO.setEoType(dataframeObjCreateRequest, BASE_PKG + ".dataframe_obj_create_request"); - ElementElementDAO.getAttributes(dataframeObjCreateRequest).add(AttributeUtil.create("id", "DataFrame ID", EODataType.uuid)); - - final EO dataframeObjCreateResponse = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeObjCreateResponse); - ElementElementDAO.setEoType(dataframeObjCreateResponse, BASE_PKG + ".dataframe_obj_create_response"); - ElementElementDAO.getAttributes(dataframeObjCreateResponse).add(AttributeUtil.create("txid", "Transaction Number")); - - final EO error = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(error); - ElementElementDAO.setEoType(error, BASE_PKG + ".error"); - ElementElementDAO.getAttributes(error).add(AttributeUtil.create("number", "Error Number", EODataType.number)); - ElementElementDAO.getAttributes(error).add(AttributeUtil.create("text", "Error Text")); - - final EO graphSelectResponse = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(graphSelectResponse); - ElementElementDAO.setEoType(graphSelectResponse, BASE_PKG + ".dataframe_select_response"); - ElementElementDAO.getAttributes(graphSelectResponse).add(AttributeUtil.create("txid", "Transaction Number")); - - final EO graphSelectRequest = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(graphSelectRequest); - ElementElementDAO.setEoType(graphSelectRequest, BASE_PKG + ".dataframe_select_request"); - ElementElementDAO.getAttributes(graphSelectRequest).add(AttributeUtil.create("id", "DataFrame ID", EODataType.uuid)); - ElementElementDAO.getAttributes(graphSelectRequest).add(AttributeUtil.create("txid", "Transaction Number")); - ElementElementDAO.getAttributes(graphSelectRequest).add(AttributeUtil.create("selection", "Selection")); - - final EO dataframeFilterSpec = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeFilterSpec); - ElementElementDAO.setEoType(dataframeFilterSpec, BASE_PKG + ".dataframe_filter_spec"); - ElementElementDAO.getAttributes(dataframeFilterSpec).add(AttributeUtil.create("name", "Column Name")); - ElementElementDAO.getAttributes(dataframeFilterSpec).add(AttributeUtil.create("filter_text", "Filter Text")); - - final EO dataframeSortSpec = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeSortSpec); - ElementElementDAO.setEoType(dataframeSortSpec, BASE_PKG + ".dataframe_sort_spec"); - ElementElementDAO.getAttributes(dataframeSortSpec).add(AttributeUtil.create("name", "Column Name")); - ElementElementDAO.getAttributes(dataframeSortSpec).add(AttributeUtil.create("sort_order", "Sort Order")); - - final EO dataframeFilterResponse = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeFilterResponse); - ElementElementDAO.setEoType(dataframeFilterResponse, BASE_PKG + ".dataframe_filter_response"); - ElementElementDAO.getAttributes(dataframeFilterResponse).add(AttributeUtil.create("txid", "Transaction Number")); - - final EO dataframeFilterRequest = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeFilterRequest); - ElementElementDAO.setEoType(dataframeFilterRequest, BASE_PKG + ".dataframe_filter_request"); - ElementElementDAO.getAttributes(dataframeFilterRequest).add(AttributeUtil.create("cols", "Columns", EODataType.loop)); - ElementElementDAO.getAttributes(dataframeFilterRequest).add(AttributeUtil.create("id", "Data Frame ID", EODataType.uuid)); - - final EO dataframeSortResponse = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeSortResponse); - ElementElementDAO.setEoType(dataframeSortResponse, BASE_PKG + ".dataframe_sort_response"); - ElementElementDAO.getAttributes(dataframeSortResponse).add(AttributeUtil.create("txid", "Transaction Number")); - - final EO dataframeSortRequest = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeSortRequest); - ElementElementDAO.setEoType(dataframeSortRequest, BASE_PKG + ".dataframe_sort_request"); - ElementElementDAO.getAttributes(dataframeSortRequest).add(AttributeUtil.create("id", "Data Frame ID", EODataType.uuid)); - ElementElementDAO.getAttributes(dataframeSortRequest).add(AttributeUtil.create("cols", "Columns", EODataType.loop)); - - final EO dataframeReadResponse = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeReadResponse); - ElementElementDAO.setEoType(dataframeReadResponse, BASE_PKG + ".dataframe_read_response"); - ElementElementDAO.getAttributes(dataframeReadResponse).add(AttributeUtil.create("data", "Data", EODataType.loop)); - - final EO dataframeReadRequest = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframeReadRequest); - ElementElementDAO.setEoType(dataframeReadRequest, BASE_PKG + ".dataframe_read_request"); - ElementElementDAO.getAttributes(dataframeReadRequest).add(AttributeUtil.create("id", "Data Frame ID", EODataType.uuid)); - ElementElementDAO.getAttributes(dataframeReadRequest).add(AttributeUtil.create("txid", "Transaction ID", EODataType.string)); - ElementElementDAO.getAttributes(dataframeReadRequest).add(AttributeUtil.create("index", "Start Index", EODataType.number)); - ElementElementDAO.getAttributes(dataframeReadRequest).add(AttributeUtil.create("length", "Length", EODataType.number)); - - return schema; - } - - public static void main(final String... args) throws IOException { - UniversalJob.banner(logger, "SchemaGenerator", "2022 Alex Leigh"); - final EO schema = generateScreenSchema(); - final DAOGenerator gen = new DAOGenerator(new File("lc-elements-sdk/src/main/java")); - gen.generateJava("lc.elements.schema.command.v18", schema); - try (PrintWriter pw = new PrintWriter(new FileWriter(new File("out.js")))) { - gen.generateEcma5(pw, "lc.elements.command.v18", schema); - } - logger.info("Generated schema: {}", schema); - } -} diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v1/ScreenGraphRequestElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v1/ScreenGraphRequestElementDAO.java deleted file mode 100644 index 0906c621f..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v1/ScreenGraphRequestElementDAO.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class ScreenGraphRequestElementDAO { - public static final String API_TYPE = "lc.elements.command.v1.ScreenGraphRequest"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - - public static String apiType(final EO eo) { - return eo.getType(); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v1/ScreenGraphResponseElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v1/ScreenGraphResponseElementDAO.java deleted file mode 100644 index c1e7f8b8b..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v1/ScreenGraphResponseElementDAO.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class ScreenGraphResponseElementDAO { - public static final String API_TYPE = "lc.elements.command.v1.ScreenGraphResponse"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_SCREEN = "screen"; - public static final String KEY_CHANGENUMBER = "changeNumber"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=screen, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Screen Graph, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getScreen(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_SCREEN); - } - - public static void setScreen(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_SCREEN, value); - } - - public static void setScreenLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_SCREEN, label); - } - - public static void getLabelOrValueScreen(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_SCREEN); - } - - public static void setIfUnsetScreen(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_SCREEN, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=changeNumber, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Change Number, locale=en}, meta=null}]} , type=number}, meta=null} */ - - - public static void setChangeNumber(final EO eo, int value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHANGENUMBER, value); - } - - public static void setChangeNumber(final EO eo, float value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHANGENUMBER, value); - } - - public static void setChangeNumber(final EO eo, double value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHANGENUMBER, value); - } - - public static void setChangeNumber(final EO eo, long value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHANGENUMBER, value); - } - - public static void setChangeNumber(final EO eo, short value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHANGENUMBER, value); - } - - public static java.math.BigDecimal getChangeNumber(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getNumber(KEY_CHANGENUMBER); - } - - public static void setChangeNumber(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHANGENUMBER, value); - } - - public static void setChangeNumberLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CHANGENUMBER, label); - } - - public static void getLabelOrValueChangeNumber(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CHANGENUMBER); - } - - public static void setIfUnsetChangeNumber(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CHANGENUMBER, value); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_requestElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_requestElementDAO.java deleted file mode 100644 index d03686451..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_requestElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_filter_requestElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_filter_request"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_COLS = "cols"; - public static final String KEY_ID = "id"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=f93ef650-af9b-4a79-8d7f-cf613914e888, data={eoType=cols, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=76a99f26-0c01-499c-88d9-a3492d20aad6, data={text=Columns, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getCols(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_COLS); - } - - public static void setCols(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_COLS, value); - } - - public static void setColsLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_COLS, label); - } - - public static void getLabelOrValueCols(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_COLS); - } - - public static void setIfUnsetCols(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_COLS, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=b76829fe-e549-4c02-ab4c-5f3b7f8a049d, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=12f47a74-303e-454f-8335-4715477cd41a, data={text=Data Frame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_responseElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_responseElementDAO.java deleted file mode 100644 index d40aa4b74..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_responseElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_filter_responseElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_filter_response"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_TXID = "txid"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=798c7b16-d5b5-4c49-af8f-e2004c5a13df, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=d596613c-07e1-4cc8-86b6-ad4bd9ffdf8b, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TXID); - } - - public static void setTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_specElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_specElementDAO.java deleted file mode 100644 index a9fb6d14f..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_filter_specElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_filter_specElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_filter_spec"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_NAME = "name"; - public static final String KEY_FILTER_TEXT = "filter_text"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=27558112-ae00-4b6b-a2c2-8db3d74bb4ea, data={eoType=name, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=a65f4b53-f02f-4ca3-8846-7b0584249fbc, data={text=Column Name, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getName(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_NAME); - } - - public static void setName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NAME, value); - } - - public static void setNameLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_NAME, label); - } - - public static void getLabelOrValueName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_NAME); - } - - public static void setIfUnsetName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_NAME, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=093d9a68-4c22-4296-a20c-a69bd450b695, data={eoType=filter_text, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=e5c46362-7e2d-4118-9937-151c032bb911, data={text=Filter Text, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getFilter_text(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_FILTER_TEXT); - } - - public static void setFilter_text(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_FILTER_TEXT, value); - } - - public static void setFilter_textLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_FILTER_TEXT, label); - } - - public static void getLabelOrValueFilter_text(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_FILTER_TEXT); - } - - public static void setIfUnsetFilter_text(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_FILTER_TEXT, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_create_requestElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_create_requestElementDAO.java deleted file mode 100644 index 1f15f551c..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_create_requestElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_obj_create_requestElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_obj_create_request"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=826e4739-9d3f-4766-a533-8e2e312d30bd, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=5b73b469-1dcb-4a65-9abc-8dd4d62e6914, data={text=DataFrame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_create_responseElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_create_responseElementDAO.java deleted file mode 100644 index 8c73a1cd6..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_create_responseElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_obj_create_responseElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_obj_create_response"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_TXID = "txid"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=720608c9-2ac0-4161-9c45-88b563d625df, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=9b751a17-9f2a-42a3-b134-72d0481d35ec, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TXID); - } - - public static void setTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_delete_requestElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_delete_requestElementDAO.java deleted file mode 100644 index 0ba5dfe68..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_delete_requestElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_obj_delete_requestElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_obj_delete_request"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_TXID = "txid"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=44280523-b091-47ca-a832-6f134336ee70, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=8e38cfd7-fc02-4ff0-b06b-cb2e5122ac54, data={text=DataFrame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=fd19da07-045b-4241-818b-1f3c4c046984, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=3d4f4df1-1d33-4257-821b-94ba9957f767, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TXID); - } - - public static void setTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_delete_responseElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_delete_responseElementDAO.java deleted file mode 100644 index f3aac426d..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_delete_responseElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_obj_delete_responseElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_obj_delete_response"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_TXID = "txid"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=c49c8548-a92c-44c5-a9eb-87d0415aa724, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=ef198d56-88a8-41d0-a90a-4f36a062bb79, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TXID); - } - - public static void setTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_update_requestElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_update_requestElementDAO.java deleted file mode 100644 index 5322f92e1..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_update_requestElementDAO.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_obj_update_requestElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_obj_update_request"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_NAME = "name"; - public static final String KEY_VALUE = "value"; - public static final String KEY_TXID = "txid"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=7d05d188-ed64-447c-8747-baad7eb0c3f5, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=d7ea553d-5e8c-43ae-8ee3-5c1cd7df677b, data={text=DataFrame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=8ff3479f-667f-4776-9077-ed9aa2d8fb9e, data={eoType=name, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=5a493b36-d290-45cd-862b-655411fa4a24, data={text=Object Key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getName(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_NAME); - } - - public static void setName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NAME, value); - } - - public static void setNameLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_NAME, label); - } - - public static void getLabelOrValueName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_NAME); - } - - public static void setIfUnsetName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_NAME, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=aba48c27-ad06-4a64-8d9d-e3d15a04a17f, data={eoType=value, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=58d87aca-5619-4e2f-ad64-471eeba2dff9, data={text=Object Value, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getValue(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_VALUE); - } - - public static void setValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_VALUE, value); - } - - public static void setValueLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_VALUE, label); - } - - public static void getLabelOrValueValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_VALUE); - } - - public static void setIfUnsetValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_VALUE, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=c3917f9f-de63-4d17-a844-2e5c566aeb7f, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=eba2d3dd-6f79-4be5-99d0-1d32203b53f9, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TXID); - } - - public static void setTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_update_responseElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_update_responseElementDAO.java deleted file mode 100644 index 37fd68b65..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_obj_update_responseElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_obj_update_responseElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_obj_update_response"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_TXID = "txid"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=38d7aca2-ea43-40d3-861e-80ef56df7b02, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=9b78faf2-d6ea-4e36-8b8a-c4d4fa1017fc, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TXID); - } - - public static void setTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_read_requestElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_read_requestElementDAO.java deleted file mode 100644 index 20c66c168..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_read_requestElementDAO.java +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_read_requestElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_read_request"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_TXID = "txid"; - public static final String KEY_INDEX = "index"; - public static final String KEY_LENGTH = "length"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=8eca0902-424d-4cf6-bd94-55c477aa2241, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=172f849a-8e81-4eb8-a7d0-2361337faf8e, data={text=Data Frame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=fe836378-de85-465a-bbd8-ac37c7c7bcf2, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=25778e22-bd86-4e79-a35f-2e36af5bc278, data={text=Transaction ID, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TXID); - } - - public static void setTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=46d22a12-d007-4b06-b560-119a6946e02f, data={eoType=index, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=9b9dd85c-92c3-47ca-82ca-2c287e5e59e0, data={text=Start Index, locale=en}, meta=null}]} , type=number}, meta=null} */ - - - public static void setIndex(final EO eo, int value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, float value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, double value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, long value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndex(final EO eo, short value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static java.math.BigDecimal getIndex(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getNumber(KEY_INDEX); - } - - public static void setIndex(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_INDEX, value); - } - - public static void setIndexLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_INDEX, label); - } - - public static void getLabelOrValueIndex(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_INDEX); - } - - public static void setIfUnsetIndex(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_INDEX, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=35308a6f-3ee1-4089-8029-374aa1538b26, data={eoType=length, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=5e79887d-64fd-4a54-8c40-653e4aac5fdd, data={text=Length, locale=en}, meta=null}]} , type=number}, meta=null} */ - - - public static void setLength(final EO eo, int value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LENGTH, value); - } - - public static void setLength(final EO eo, float value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LENGTH, value); - } - - public static void setLength(final EO eo, double value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LENGTH, value); - } - - public static void setLength(final EO eo, long value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LENGTH, value); - } - - public static void setLength(final EO eo, short value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LENGTH, value); - } - - public static java.math.BigDecimal getLength(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getNumber(KEY_LENGTH); - } - - public static void setLength(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LENGTH, value); - } - - public static void setLengthLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LENGTH, label); - } - - public static void getLabelOrValueLength(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LENGTH); - } - - public static void setIfUnsetLength(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LENGTH, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_read_responseElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_read_responseElementDAO.java deleted file mode 100644 index bd8a4e338..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_read_responseElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_read_responseElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_read_response"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_DATA = "data"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=9a0f75ee-44dd-409c-bca0-9a39a27b42d2, data={eoType=data, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=3d354092-f4f0-4874-9337-ab8044c311fe, data={text=Data, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getData(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_DATA); - } - - public static void setData(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_DATA, value); - } - - public static void setDataLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_DATA, label); - } - - public static void getLabelOrValueData(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_DATA); - } - - public static void setIfUnsetData(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_DATA, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_select_requestElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_select_requestElementDAO.java deleted file mode 100644 index 5d4714bec..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_select_requestElementDAO.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_select_requestElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_select_request"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_TXID = "txid"; - public static final String KEY_SELECTION = "selection"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=2112fb2a-aa1d-4feb-b13d-5f429fce8e49, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=4a4517cc-a33d-4c29-83f9-49a0fb62ccb0, data={text=DataFrame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=fd7dab45-0b6b-4e53-a620-62b7e2271b84, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=3dc53873-d725-4ed3-b7de-6bbfdc91cad2, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TXID); - } - - public static void setTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=e3b41dbc-bb5b-4dbd-a622-77655c5234ea, data={eoType=selection, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=465679bf-35c5-4669-943a-79645f8331f8, data={text=Selection, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getSelection(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_SELECTION); - } - - public static void setSelection(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_SELECTION, value); - } - - public static void setSelectionLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_SELECTION, label); - } - - public static void getLabelOrValueSelection(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_SELECTION); - } - - public static void setIfUnsetSelection(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_SELECTION, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_select_responseElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_select_responseElementDAO.java deleted file mode 100644 index 776f9ffe2..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_select_responseElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_select_responseElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_select_response"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_TXID = "txid"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=8766b4fc-29c0-4e2a-ab79-b19314742b56, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=00816c53-72da-47c3-a3c4-7592bd66cb47, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TXID); - } - - public static void setTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_requestElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_requestElementDAO.java deleted file mode 100644 index d3400ef8f..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_requestElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_sort_requestElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_sort_request"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_COLS = "cols"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=91a7c590-baa6-495c-b8b9-4efc3c5ea0b8, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=1551681c-05f5-4267-8d57-0e564d9c2f77, data={text=Data Frame ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=4c0f835a-b786-4f20-a2c3-5e75bfeb6f01, data={eoType=cols, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=6398371b-33f2-45c7-b483-d9bf4222ebdf, data={text=Columns, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getCols(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_COLS); - } - - public static void setCols(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_COLS, value); - } - - public static void setColsLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_COLS, label); - } - - public static void getLabelOrValueCols(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_COLS); - } - - public static void setIfUnsetCols(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_COLS, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_responseElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_responseElementDAO.java deleted file mode 100644 index ab4f8fa83..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_responseElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_sort_responseElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_sort_response"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_TXID = "txid"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=bbd3d2b9-4a37-4a6b-a8d9-ea0dc198beb9, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=45ebfd3e-9f71-4638-83bf-700f2b44c7e9, data={text=Transaction Number, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TXID); - } - - public static void setTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_specElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_specElementDAO.java deleted file mode 100644 index 177446ea0..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/Dataframe_sort_specElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Dataframe_sort_specElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.dataframe_sort_spec"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_NAME = "name"; - public static final String KEY_SORT_ORDER = "sort_order"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=ba3fcb33-00c5-43ee-a360-0f0ef828d54b, data={eoType=name, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=eeaa19d3-efd5-4239-b741-0f651ca510bf, data={text=Column Name, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getName(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_NAME); - } - - public static void setName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NAME, value); - } - - public static void setNameLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_NAME, label); - } - - public static void getLabelOrValueName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_NAME); - } - - public static void setIfUnsetName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_NAME, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=28214ac6-7fa3-4b37-9313-feabc7aff048, data={eoType=sort_order, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=b79a835f-a3cb-4615-9b0d-6ff0c279f145, data={text=Sort Order, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getSort_order(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_SORT_ORDER); - } - - public static void setSort_order(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_SORT_ORDER, value); - } - - public static void setSort_orderLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_SORT_ORDER, label); - } - - public static void getLabelOrValueSort_order(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_SORT_ORDER); - } - - public static void setIfUnsetSort_order(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_SORT_ORDER, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/ErrorElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/ErrorElementDAO.java deleted file mode 100644 index 4274b995e..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/command/v18/ErrorElementDAO.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.command.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class ErrorElementDAO { - public static final String API_TYPE = "lc.elements.command.v18.error"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_NUMBER = "number"; - public static final String KEY_TEXT = "text"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=31d38b19-63d0-495e-a27d-e24b9698adcd, data={eoType=number, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=d1d06bbe-b5e6-4472-853a-c9716ea157d2, data={text=Error Number, locale=en}, meta=null}]} , type=number}, meta=null} */ - - - public static void setNumber(final EO eo, int value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NUMBER, value); - } - - public static void setNumber(final EO eo, float value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NUMBER, value); - } - - public static void setNumber(final EO eo, double value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NUMBER, value); - } - - public static void setNumber(final EO eo, long value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NUMBER, value); - } - - public static void setNumber(final EO eo, short value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NUMBER, value); - } - - public static java.math.BigDecimal getNumber(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getNumber(KEY_NUMBER); - } - - public static void setNumber(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NUMBER, value); - } - - public static void setNumberLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_NUMBER, label); - } - - public static void getLabelOrValueNumber(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_NUMBER); - } - - public static void setIfUnsetNumber(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_NUMBER, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=299feece-9c81-4216-8648-28324b0b50c2, data={eoType=text, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=b2d7e8f6-7508-488d-a396-7263ada0f9ef, data={text=Error Text, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getText(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_TEXT); - } - - public static void setText(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TEXT, value); - } - - public static void setTextLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TEXT, label); - } - - public static void getLabelOrValueText(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TEXT); - } - - public static void setIfUnsetText(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TEXT, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/event/SchemaGenerator.java b/lc-elements-sdk/src/main/java/lc/elements/schema/event/SchemaGenerator.java deleted file mode 100644 index 03d69c477..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/event/SchemaGenerator.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.event; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.eo.schema.DAOGenerator; -import lc.eo.schema.ElementElementDAO; -import lc.eo.schema.SchemaElementDAO; -import lc.eo.schema.util.AttributeUtil; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -public final class SchemaGenerator { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SchemaGenerator.class); - private static final String BASE_PKG = "lc.elements.event.v1"; - - // Observe the procedures of a general alert - - public static EO generateScreenSchema() { - final EO schema = lc.eo.schema.util.SchemaUtil.create(BASE_PKG + ".Schema"); - - final EO screenUpdate = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(screenUpdate); - ElementElementDAO.setEoType(screenUpdate, BASE_PKG + ".ScreenUpdate"); - ElementElementDAO.getAttributes(screenUpdate).add(AttributeUtil.create("changes", "Changes", EODataType.loop)); - - return schema; - } - - public static void main(final String... args) throws IOException { - UniversalJob.banner(logger, "SchemaGenerator", "2022 Alex Leigh"); - final EO schema = generateScreenSchema(); - final DAOGenerator gen = new DAOGenerator(new File("lc-elements-sdk/src/main/java")); - gen.generateJava("lc.elements.schema.event.v1", schema); - try (PrintWriter pw = new PrintWriter(new FileWriter(new File("out.js")))) { - gen.generateEcma5(pw, "lc.elements.schema.v1", schema); - } - logger.info("Generated schema: {}", schema); - } -} diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/event/v1/ScreenUpdateElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/event/v1/ScreenUpdateElementDAO.java deleted file mode 100644 index 1c98c0d40..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/event/v1/ScreenUpdateElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.event.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class ScreenUpdateElementDAO { - public static final String API_TYPE = "lc.elements.event.v1.ScreenUpdate"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_CHANGES = "changes"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=changes, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Changes, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getChanges(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_CHANGES); - } - - public static void setChanges(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHANGES, value); - } - - public static void setChangesLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CHANGES, label); - } - - public static void getLabelOrValueChanges(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CHANGES); - } - - public static void setIfUnsetChanges(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CHANGES, value); - } - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/SchemaGenerator.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/SchemaGenerator.java deleted file mode 100644 index c701a095e..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/SchemaGenerator.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.eo.schema.DAOGenerator; -import lc.eo.schema.ElementElementDAO; -import lc.eo.schema.SchemaElementDAO; -import lc.eo.schema.util.AttributeUtil; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -public final class SchemaGenerator { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SchemaGenerator.class); - private static final String SCREEN_PKG = "lc.elements.screen.v18"; - - // Observe the procedures of a general alert - - public static EO generateScreenSchema() { - final EO schema = lc.eo.schema.util.SchemaUtil.create(SCREEN_PKG + ".schema"); - - final EO dataframe = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(dataframe); - ElementElementDAO.setEoType(dataframe, SCREEN_PKG + ".dataframe"); - ElementElementDAO.getAttributes(dataframe).add(AttributeUtil.create("id", "ID", EODataType.uuid)); - ElementElementDAO.getAttributes(dataframe).add(AttributeUtil.create("version", "version")); - ElementElementDAO.getAttributes(dataframe).add(AttributeUtil.create("size", "size", EODataType.number)); - ElementElementDAO.getAttributes(dataframe).add(AttributeUtil.create("selection", "Selection")); - - final EO textField = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(textField); - ElementElementDAO.setEoType(textField, SCREEN_PKG + ".text_field"); - ElementElementDAO.getAttributes(textField).add(AttributeUtil.create("label", "Label")); - ElementElementDAO.getAttributes(textField).add(AttributeUtil.create("is_read_only", "Read-Only", EODataType.bool)); - ElementElementDAO.getAttributes(textField).add(AttributeUtil.create("value", "Label")); - ElementElementDAO.getAttributes(textField).add(AttributeUtil.create("displayText", "Display Text")); - ElementElementDAO.getAttributes(textField).add(AttributeUtil.create("uom", "uom")); - - final EO formLayout = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(formLayout); - ElementElementDAO.setEoType(formLayout, SCREEN_PKG + ".form_layout"); - ElementElementDAO.getAttributes(formLayout).add(AttributeUtil.create("content", "Content", EODataType.loop)); - - final EO tableColCfg = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(tableColCfg); - ElementElementDAO.setEoType(tableColCfg, SCREEN_PKG + ".table_col_cfg"); - ElementElementDAO.getAttributes(tableColCfg).add(AttributeUtil.create("name", "Name")); - ElementElementDAO.getAttributes(tableColCfg).add(AttributeUtil.create("label", "Label")); - ElementElementDAO.getAttributes(tableColCfg).add(AttributeUtil.create("width", "Width (chars)")); - ElementElementDAO.getAttributes(tableColCfg).add(AttributeUtil.create("alignment", "Alignment")); - ElementElementDAO.getAttributes(tableColCfg).add(AttributeUtil.create("is_read_only", "Read-Only", EODataType.bool)); - - final EO panel = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(panel); - ElementElementDAO.setEoType(panel, SCREEN_PKG + ".panel"); - ElementElementDAO.getAttributes(panel).add(AttributeUtil.create("label", "Label")); - ElementElementDAO.getAttributes(panel).add(AttributeUtil.create("content", "Content", EODataType.loop)); - - final EO table = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(table); - ElementElementDAO.setEoType(table, SCREEN_PKG + ".table"); - ElementElementDAO.getAttributes(table).add(AttributeUtil.create("dataframe_id", "Dataframe ID", EODataType.uuid)); - ElementElementDAO.getAttributes(table).add(AttributeUtil.create("is_read_only", "Read-Only", EODataType.bool)); - ElementElementDAO.getAttributes(table).add(AttributeUtil.create("columns", "Columns", EODataType.loop)); - - final EO screen = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(screen); - ElementElementDAO.setEoType(screen, SCREEN_PKG + ".screen"); - ElementElementDAO.getAttributes(screen).add(AttributeUtil.create("content", "Content", EODataType.loop)); - ElementElementDAO.getAttributes(screen).add(AttributeUtil.create("dataframes", "Dataframes", EODataType.loop)); - ElementElementDAO.getAttributes(screen).add(AttributeUtil.create("label", "Label")); - - return schema; - } - - public static void main(final String... args) throws IOException { - UniversalJob.banner(logger, "SchemaGenerator", "2022 Alex Leigh"); - final EO schema = generateScreenSchema(); - final DAOGenerator gen = new DAOGenerator(new File("lc-elements-sdk/src/main/java")); - gen.generateJava("lc.elements.schema.screen.v18", schema); - try (PrintWriter pw = new PrintWriter(new FileWriter(new File("out.js")))) { - gen.generateEcma5(pw, "lc.elements.screen.v18", schema); - } - logger.info("Generated schema: {}", schema); - } -} diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/FormLayoutElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/FormLayoutElementDAO.java deleted file mode 100644 index 845e9a9de..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/FormLayoutElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class FormLayoutElementDAO { - public static final String API_TYPE = "lc.elements.screen.v1.FormLayout"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_CONTENT = "content"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=content, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Content, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getContent(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_CONTENT); - } - - public static void setContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CONTENT, value); - } - - public static void setContentLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CONTENT, label); - } - - public static void getLabelOrValueContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CONTENT); - } - - public static void setIfUnsetContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CONTENT, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/PanelElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/PanelElementDAO.java deleted file mode 100644 index 2e11b840e..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/PanelElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class PanelElementDAO { - public static final String API_TYPE = "lc.elements.screen.v1.Panel"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_LABEL = "label"; - public static final String KEY_CONTENT = "content"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getLabel(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_LABEL); - } - - public static void setLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=content, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Content, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getContent(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_CONTENT); - } - - public static void setContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CONTENT, value); - } - - public static void setContentLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CONTENT, label); - } - - public static void getLabelOrValueContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CONTENT); - } - - public static void setIfUnsetContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CONTENT, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/ScreenElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/ScreenElementDAO.java deleted file mode 100644 index 04b5bbe38..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/ScreenElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class ScreenElementDAO { - public static final String API_TYPE = "lc.elements.screen.v1.Screen"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_CONTENT = "content"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=content, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Content, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getContent(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_CONTENT); - } - - public static void setContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CONTENT, value); - } - - public static void setContentLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CONTENT, label); - } - - public static void getLabelOrValueContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CONTENT); - } - - public static void setIfUnsetContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CONTENT, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TableColumnCfgElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TableColumnCfgElementDAO.java deleted file mode 100644 index 845a9f022..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TableColumnCfgElementDAO.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class TableColumnCfgElementDAO { - public static final String API_TYPE = "lc.elements.screen.v1.TableColumnCfg"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_LABEL = "label"; - public static final String KEY_WIDTH = "width"; - public static final String KEY_ALIGNMENT = "alignment"; - public static final String KEY_ISREADONLY = "isReadOnly"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getLabel(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_LABEL); - } - - public static void setLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=width, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Width (chars), locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getWidth(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_WIDTH); - } - - public static void setWidth(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_WIDTH, value); - } - - public static void setWidthLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_WIDTH, label); - } - - public static void getLabelOrValueWidth(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_WIDTH); - } - - public static void setIfUnsetWidth(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_WIDTH, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=alignment, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Alignment, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getAlignment(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_ALIGNMENT); - } - - public static void setAlignment(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ALIGNMENT, value); - } - - public static void setAlignmentLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ALIGNMENT, label); - } - - public static void getLabelOrValueAlignment(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ALIGNMENT); - } - - public static void setIfUnsetAlignment(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ALIGNMENT, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=isReadOnly, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Read-Only, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - - public static java.lang.Boolean getIsReadOnly(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueBoolean(KEY_ISREADONLY); - } - - public static void setIsReadOnly(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ISREADONLY, value); - } - - public static void setIsReadOnlyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ISREADONLY, label); - } - - public static void getLabelOrValueIsReadOnly(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ISREADONLY); - } - - public static void setIfUnsetIsReadOnly(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ISREADONLY, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TableElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TableElementDAO.java deleted file mode 100644 index 538b3112c..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TableElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class TableElementDAO { - public static final String API_TYPE = "lc.elements.screen.v1.Table"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ISREADONLY = "isReadOnly"; - public static final String KEY_COLUMNS = "columns"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=isReadOnly, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Read-Only, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - - public static java.lang.Boolean getIsReadOnly(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueBoolean(KEY_ISREADONLY); - } - - public static void setIsReadOnly(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ISREADONLY, value); - } - - public static void setIsReadOnlyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ISREADONLY, label); - } - - public static void getLabelOrValueIsReadOnly(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ISREADONLY); - } - - public static void setIfUnsetIsReadOnly(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ISREADONLY, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=columns, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Columns, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getColumns(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_COLUMNS); - } - - public static void setColumns(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_COLUMNS, value); - } - - public static void setColumnsLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_COLUMNS, label); - } - - public static void getLabelOrValueColumns(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_COLUMNS); - } - - public static void setIfUnsetColumns(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_COLUMNS, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TextFieldElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TextFieldElementDAO.java deleted file mode 100644 index 762225b16..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v1/TextFieldElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class TextFieldElementDAO { - public static final String API_TYPE = "lc.elements.screen.v1.TextField"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_LABEL = "label"; - public static final String KEY_ISREADONLY = "isReadOnly"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getLabel(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_LABEL); - } - - public static void setLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', data={eoType=isReadOnly, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Read-Only, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - - public static java.lang.Boolean getIsReadOnly(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueBoolean(KEY_ISREADONLY); - } - - public static void setIsReadOnly(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ISREADONLY, value); - } - - public static void setIsReadOnlyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ISREADONLY, label); - } - - public static void getLabelOrValueIsReadOnly(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ISREADONLY); - } - - public static void setIfUnsetIsReadOnly(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ISREADONLY, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/DataframeElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/DataframeElementDAO.java deleted file mode 100644 index 613b60d14..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/DataframeElementDAO.java +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class DataframeElementDAO { - public static final String API_TYPE = "lc.elements.screen.v18.dataframe"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_VERSION = "version"; - public static final String KEY_SIZE = "size"; - public static final String KEY_SELECTION = "selection"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=515b954f-5a60-4677-a375-927355356359, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=48408b5e-be5c-461f-a52b-693d53cf3ccf, data={text=ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=c51bcfdf-3959-45a3-b1bc-2f6dc25c5a96, data={eoType=version, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=53ac95dd-3eb5-482e-8487-a5cd8daa5b37, data={text=version, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getVersion(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_VERSION); - } - - public static void setVersion(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_VERSION, value); - } - - public static void setVersionLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_VERSION, label); - } - - public static void getLabelOrValueVersion(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_VERSION); - } - - public static void setIfUnsetVersion(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_VERSION, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=6c08ae93-2f09-41e4-b17d-4b6f12cca356, data={eoType=size, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=67f19b7e-1d59-4c88-9f0e-76e0663cfb22, data={text=size, locale=en}, meta=null}]} , type=number}, meta=null} */ - - - public static void setSize(final EO eo, int value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_SIZE, value); - } - - public static void setSize(final EO eo, float value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_SIZE, value); - } - - public static void setSize(final EO eo, double value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_SIZE, value); - } - - public static void setSize(final EO eo, long value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_SIZE, value); - } - - public static void setSize(final EO eo, short value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_SIZE, value); - } - - public static java.math.BigDecimal getSize(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getNumber(KEY_SIZE); - } - - public static void setSize(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_SIZE, value); - } - - public static void setSizeLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_SIZE, label); - } - - public static void getLabelOrValueSize(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_SIZE); - } - - public static void setIfUnsetSize(final EO eo, java.math.BigDecimal value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_SIZE, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=5e0c21cd-14ba-4505-a1ea-4a3d92a23c51, data={eoType=selection, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=a7082be8-677b-49a6-8923-da9c44ae769e, data={text=Selection, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getSelection(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_SELECTION); - } - - public static void setSelection(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_SELECTION, value); - } - - public static void setSelectionLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_SELECTION, label); - } - - public static void getLabelOrValueSelection(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_SELECTION); - } - - public static void setIfUnsetSelection(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_SELECTION, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Form_layoutElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Form_layoutElementDAO.java deleted file mode 100644 index 736382190..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Form_layoutElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Form_layoutElementDAO { - public static final String API_TYPE = "lc.elements.screen.v18.form_layout"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_CONTENT = "content"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=65c72db0-c265-4725-8202-4bf7c544a4d6, data={eoType=content, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=ddd0115a-ebb4-484b-937e-8152699fa0ae, data={text=Content, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getContent(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_CONTENT); - } - - public static void setContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CONTENT, value); - } - - public static void setContentLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CONTENT, label); - } - - public static void getLabelOrValueContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CONTENT); - } - - public static void setIfUnsetContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CONTENT, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/PanelElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/PanelElementDAO.java deleted file mode 100644 index d4b74d3f4..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/PanelElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class PanelElementDAO { - public static final String API_TYPE = "lc.elements.screen.v18.panel"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_LABEL = "label"; - public static final String KEY_CONTENT = "content"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=8d09a103-c9d7-4df9-8c28-f5ca75eb9bc2, data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=e95e05de-00cd-406a-9846-6e87e0d4457a, data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getLabel(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_LABEL); - } - - public static void setLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=2d3e33c8-a4ad-48ae-9fbd-6bad4158b15c, data={eoType=content, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=966ffd6b-c58d-4db4-9eda-88dd74dc8f9e, data={text=Content, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getContent(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_CONTENT); - } - - public static void setContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CONTENT, value); - } - - public static void setContentLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CONTENT, label); - } - - public static void getLabelOrValueContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CONTENT); - } - - public static void setIfUnsetContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CONTENT, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/ScreenElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/ScreenElementDAO.java deleted file mode 100644 index 812f3fb8d..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/ScreenElementDAO.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class ScreenElementDAO { - public static final String API_TYPE = "lc.elements.screen.v18.screen"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_CONTENT = "content"; - public static final String KEY_DATAFRAMES = "dataframes"; - public static final String KEY_LABEL = "label"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=04c146b0-3497-4183-afd4-5ecaeaf98a13, data={eoType=content, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=b4f6082e-4d06-4db3-9fa4-22987730f919, data={text=Content, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getContent(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_CONTENT); - } - - public static void setContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CONTENT, value); - } - - public static void setContentLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CONTENT, label); - } - - public static void getLabelOrValueContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CONTENT); - } - - public static void setIfUnsetContent(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CONTENT, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=bfbde0ab-fe74-4a67-a8de-59af85309858, data={eoType=dataframes, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=eb83e7fe-6b01-486a-950d-849f5b0ecd1b, data={text=Dataframes, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getDataframes(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_DATAFRAMES); - } - - public static void setDataframes(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_DATAFRAMES, value); - } - - public static void setDataframesLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_DATAFRAMES, label); - } - - public static void getLabelOrValueDataframes(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_DATAFRAMES); - } - - public static void setIfUnsetDataframes(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_DATAFRAMES, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=3d51d30e-1f11-4e5a-89eb-b6360ced6600, data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=548d77b7-11a6-45c9-88c2-b851f5fe1d6b, data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getLabel(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_LABEL); - } - - public static void setLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/TableElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/TableElementDAO.java deleted file mode 100644 index a3ff6e197..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/TableElementDAO.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class TableElementDAO { - public static final String API_TYPE = "lc.elements.screen.v18.table"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_DATAFRAME_ID = "dataframe_id"; - public static final String KEY_IS_READ_ONLY = "is_read_only"; - public static final String KEY_COLUMNS = "columns"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=8a3eb577-b451-460b-89f8-63b86b42afad, data={eoType=dataframe_id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=a2b2b528-fb3f-4c6f-9b81-0ec6752dde21, data={text=Dataframe ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getDataframe_id(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_DATAFRAME_ID); - } - - public static void setDataframe_id(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_DATAFRAME_ID, value); - } - - public static void setDataframe_idLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_DATAFRAME_ID, label); - } - - public static void getLabelOrValueDataframe_id(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_DATAFRAME_ID); - } - - public static void setIfUnsetDataframe_id(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_DATAFRAME_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=2e510fca-7de8-40fe-a8a9-c13583b325df, data={eoType=is_read_only, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=a86b3200-24b2-4fa9-afb2-dc98d48e8c54, data={text=Read-Only, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - - public static java.lang.Boolean getIs_read_only(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueBoolean(KEY_IS_READ_ONLY); - } - - public static void setIs_read_only(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_IS_READ_ONLY, value); - } - - public static void setIs_read_onlyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_IS_READ_ONLY, label); - } - - public static void getLabelOrValueIs_read_only(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_IS_READ_ONLY); - } - - public static void setIfUnsetIs_read_only(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_IS_READ_ONLY, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=fafbf539-e24a-4520-94a9-80389158c386, data={eoType=columns, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=9017f454-a1fe-4112-a695-52f263edacaa, data={text=Columns, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getColumns(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_COLUMNS); - } - - public static void setColumns(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_COLUMNS, value); - } - - public static void setColumnsLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_COLUMNS, label); - } - - public static void getLabelOrValueColumns(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_COLUMNS); - } - - public static void setIfUnsetColumns(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_COLUMNS, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Table_col_cfgElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Table_col_cfgElementDAO.java deleted file mode 100644 index 5cdf9ad6e..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Table_col_cfgElementDAO.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Table_col_cfgElementDAO { - public static final String API_TYPE = "lc.elements.screen.v18.table_col_cfg"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_NAME = "name"; - public static final String KEY_LABEL = "label"; - public static final String KEY_WIDTH = "width"; - public static final String KEY_ALIGNMENT = "alignment"; - public static final String KEY_IS_READ_ONLY = "is_read_only"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=f447f427-2a50-42aa-a5c7-921e0a63fa14, data={eoType=name, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=9cfea691-b269-45b5-9b43-056eaf87e9a4, data={text=Name, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getName(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_NAME); - } - - public static void setName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NAME, value); - } - - public static void setNameLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_NAME, label); - } - - public static void getLabelOrValueName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_NAME); - } - - public static void setIfUnsetName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_NAME, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=0dd96f33-1df0-48ae-8331-4bd5fde07fdb, data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=6f89ca82-ce0d-4d8a-9173-e716abf48aa7, data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getLabel(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_LABEL); - } - - public static void setLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=9bf982c0-7f02-410e-9494-f9c648943334, data={eoType=width, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=b9406f35-6637-4227-b145-58f373f74ceb, data={text=Width (chars), locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getWidth(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_WIDTH); - } - - public static void setWidth(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_WIDTH, value); - } - - public static void setWidthLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_WIDTH, label); - } - - public static void getLabelOrValueWidth(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_WIDTH); - } - - public static void setIfUnsetWidth(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_WIDTH, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=e53e238a-ea5c-4ef4-9116-a6b61225c72d, data={eoType=alignment, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=091da2f6-92a4-4fed-890e-f6462ce0470d, data={text=Alignment, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getAlignment(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_ALIGNMENT); - } - - public static void setAlignment(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ALIGNMENT, value); - } - - public static void setAlignmentLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ALIGNMENT, label); - } - - public static void getLabelOrValueAlignment(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ALIGNMENT); - } - - public static void setIfUnsetAlignment(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ALIGNMENT, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=0be0a1e6-22aa-467b-83e2-f8b8a5868f6e, data={eoType=is_read_only, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=14d35183-9806-4cc0-b141-7924de38fd69, data={text=Read-Only, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - - public static java.lang.Boolean getIs_read_only(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueBoolean(KEY_IS_READ_ONLY); - } - - public static void setIs_read_only(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_IS_READ_ONLY, value); - } - - public static void setIs_read_onlyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_IS_READ_ONLY, label); - } - - public static void getLabelOrValueIs_read_only(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_IS_READ_ONLY); - } - - public static void setIfUnsetIs_read_only(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_IS_READ_ONLY, value); -} - - -} \ No newline at end of file diff --git a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Text_fieldElementDAO.java b/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Text_fieldElementDAO.java deleted file mode 100644 index 50c661bfe..000000000 --- a/lc-elements-sdk/src/main/java/lc/elements/schema/screen/v18/Text_fieldElementDAO.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.elements.schema.screen.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Text_fieldElementDAO { - public static final String API_TYPE = "lc.elements.screen.v18.text_field"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_LABEL = "label"; - public static final String KEY_IS_READ_ONLY = "is_read_only"; - public static final String KEY_VALUE = "value"; - public static final String KEY_DISPLAYTEXT = "displayText"; - public static final String KEY_UOM = "uom"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=05e91f1b-f7cc-4ab7-87fc-b0e71996ca5b, data={eoType=label, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=e6903441-f71a-498e-85b7-8d5029eabe2b, data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getLabel(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_LABEL); - } - - public static void setLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_LABEL, value); - } - - public static void setLabelLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_LABEL, label); - } - - public static void getLabelOrValueLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_LABEL); - } - - public static void setIfUnsetLabel(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_LABEL, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=ccb564ad-fc5a-485f-9d24-aa42023e9c10, data={eoType=is_read_only, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=a2e7f5bd-026f-4642-89b8-42245f89a3fd, data={text=Read-Only, locale=en}, meta=null}]} , type=bool}, meta=null} */ - - - public static java.lang.Boolean getIs_read_only(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueBoolean(KEY_IS_READ_ONLY); - } - - public static void setIs_read_only(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_IS_READ_ONLY, value); - } - - public static void setIs_read_onlyLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_IS_READ_ONLY, label); - } - - public static void getLabelOrValueIs_read_only(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_IS_READ_ONLY); - } - - public static void setIfUnsetIs_read_only(final EO eo, java.lang.Boolean value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_IS_READ_ONLY, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=8bec2884-c0ba-46a3-b32b-5b2655f24344, data={eoType=value, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=e140bd0c-9325-47ea-a41e-f0d968aa7dba, data={text=Label, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getValue(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_VALUE); - } - - public static void setValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_VALUE, value); - } - - public static void setValueLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_VALUE, label); - } - - public static void getLabelOrValueValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_VALUE); - } - - public static void setIfUnsetValue(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_VALUE, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=ccff9cbd-a64c-4ec1-8c3f-2282c93e57df, data={eoType=displayText, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=b6cec842-14fb-45f1-a31b-5488b54d7fab, data={text=Display Text, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getDisplayText(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_DISPLAYTEXT); - } - - public static void setDisplayText(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_DISPLAYTEXT, value); - } - - public static void setDisplayTextLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_DISPLAYTEXT, label); - } - - public static void getLabelOrValueDisplayText(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_DISPLAYTEXT); - } - - public static void setIfUnsetDisplayText(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_DISPLAYTEXT, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=ab85bfb8-f44e-40ba-9109-f57c3524bb61, data={eoType=uom, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=fcc8c2fb-6117-4f85-a4b8-b1f3ac6a010f, data={text=uom, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getUom(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_UOM); - } - - public static void setUom(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_UOM, value); - } - - public static void setUomLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_UOM, label); - } - - public static void getLabelOrValueUom(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_UOM); - } - - public static void setIfUnsetUom(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_UOM, value); - } - - -} \ No newline at end of file diff --git a/lc-esp-cli-sdk/build.gradle b/lc-esp-cli-sdk/build.gradle deleted file mode 100644 index c9720d2e4..000000000 --- a/lc-esp-cli-sdk/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} - -group 'leighco' -version '18.0' - -sourceCompatibility = JavaVersion.VERSION_11 -targetCompatibility = JavaVersion.VERSION_11 - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-esp-sdk') - api project(':lc-mecha-cli') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIClient.java b/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIClient.java deleted file mode 100644 index 4d2735368..000000000 --- a/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIClient.java +++ /dev/null @@ -1,42 +0,0 @@ -package lc.esp.cli.sdk; - -import lc.esp.sdk.*; -import lc.mecha.lang.FutureResult; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.BasicallyDangerous; - -import javax.jms.JMSException; -import java.util.List; - -/** - * This class implements a simple client for sending requests to a {@link CLIService}. - * - * @author Alex Leigh - * @since 18.0 - */ -public class CLIClient extends BasicallyDangerous { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(CLIClient.class); - private final ESPSession session; - private final ESPRequestor requestor; - - public CLIClient(ESPClient client) throws JMSException { - this.session = client.createSession(); - this.requestor = session.createRequestor(); - } - - public CLIResponse exec(ESPAddress destination, List cmd) throws Exception { - logger.info("Received exec(). [cmd: {}]", cmd); - - CLIRequest req = new CLIRequest(cmd); - ESPMessage reqMsg = req.toMessage(); - FutureResult future = requestor.request(destination, reqMsg); - logger.info("Waiting for reply..."); - return new CLIResponse((ESPMessage) future.get()); - } - - @Override - public void runDangerously() throws Exception { - requestor.runDangerously(); - } -} diff --git a/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIRequest.java b/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIRequest.java deleted file mode 100644 index e0135c95a..000000000 --- a/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIRequest.java +++ /dev/null @@ -1,46 +0,0 @@ -package lc.esp.cli.sdk; - -import lc.esp.sdk.ESPMessage; -import lc.mecha.json.JSONArray; -import lc.mecha.json.JSONObject; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public class CLIRequest { - public static final String KEY_CMD = "cmd"; - private final ArrayList cmd = new ArrayList<>(); - - public CLIRequest(List cmd) { - this.cmd.addAll(cmd); - } - - public CLIRequest(ESPMessage msg) { - JSONArray arr = msg.getPayload().getJSONArray(KEY_CMD); - for (int i = 0; i < arr.length(); i++) { - cmd.add(arr.getString(i)); - } - } - - public ESPMessage toMessage() { - JSONObject jo = new JSONObject(); - JSONArray arr = new JSONArray(); - for (String c : cmd) { - arr.put(c); - } - jo.put(KEY_CMD, arr); - return new ESPMessage(jo); - } - - @Override - public String toString() { - return "CLIRequest{" + - "cmd='" + cmd + '\'' + - '}'; - } - - public List getCmd() { - return Collections.unmodifiableList(cmd); - } -} diff --git a/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIResponse.java b/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIResponse.java deleted file mode 100644 index 5078a63db..000000000 --- a/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIResponse.java +++ /dev/null @@ -1,45 +0,0 @@ -package lc.esp.cli.sdk; - -import lc.esp.sdk.ESPMessage; -import lc.mecha.json.JSONObject; - -public class CLIResponse { - public static final String KEY_STDOUT = "out"; - public static final String KEY_STDERR = "err"; - private final String err; - private final String out; - - public CLIResponse(String stdout, String stderr) { - this.out = stdout; - this.err = stderr; - } - - public CLIResponse(ESPMessage msg) { - JSONObject obj = msg.getPayload(); - out = obj.optString(KEY_STDOUT); - err = obj.optString(KEY_STDERR); - } - - public ESPMessage toMessage() { - JSONObject jo = new JSONObject(); - if (out != null) jo.put(KEY_STDOUT, out); - if (err != null) jo.put(KEY_STDERR, err); - return new ESPMessage(jo); - } - - public String getErr() { - return err; - } - - public String getOut() { - return out; - } - - @Override - public String toString() { - return "CLIResponse{" + - "err='" + err + '\'' + - ", out='" + out + '\'' + - '}'; - } -} diff --git a/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIService.java b/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIService.java deleted file mode 100644 index 373ed4935..000000000 --- a/lc-esp-cli-sdk/src/main/java/lc/esp/cli/sdk/CLIService.java +++ /dev/null @@ -1,54 +0,0 @@ -package lc.esp.cli.sdk; - -import lc.esp.sdk.ESPAddress; -import lc.esp.sdk.ESPMessage; -import lc.esp.sdk.ESPSession; -import lc.esp.sdk.service.ESPService; -import lc.mecha.cli.cmd.BasicCommandProcessor; -import lc.mecha.cli.line.BasicLineHandler; -import lc.mecha.util.StringAccumulatorV2; - -import java.util.List; - -/** - * This class implements the framework for a CLI-based service. It formats the messages in accordance with - * {@link CLIRequest} and {@link CLIResponse}. This CLI implementation is based on lc-mecha-cli, but the - * underlying transport could be used for arbitrary command execution frameworks, including remote shell - * command execution. - * - * @author Alex Leigh - * @since 18.1 - */ -public abstract class CLIService extends ESPService { - private final BasicCommandProcessor bcp = new BasicCommandProcessor(); - - public CLIService(ESPSession client, ESPAddress address) { - super(client, address); - } - - public BasicCommandProcessor getBcp() { - return bcp; - } - - @Override - public ESPMessage handle(ESPMessage msg) throws Exception { - CLIRequest req = new CLIRequest(msg); - List cmd = req.getCmd(); - StringAccumulatorV2 outBuf = new StringAccumulatorV2(" "); - - bcp.handleCommand(new BasicLineHandler() { - @Override - public void write(String s, boolean doPrompt) { - outBuf.add(s); - } - - @Override - public void close() { - - } - }, cmd.toArray(new String[0])); - - CLIResponse res = new CLIResponse(outBuf.asString(), null); - return res.toMessage(); - } -} \ No newline at end of file diff --git a/lc-esp-engine-svc/.gitignore b/lc-esp-engine-svc/.gitignore deleted file mode 100644 index 94143827e..000000000 --- a/lc-esp-engine-svc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -Dockerfile diff --git a/lc-esp-engine-svc/LICENSE.md b/lc-esp-engine-svc/LICENSE.md deleted file mode 100644 index a723b3d26..000000000 --- a/lc-esp-engine-svc/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is intended to guarantee your freedom to share and change all -versions of a program--to make sure it remains free software for all its users. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our -General Public Licenses are designed to make sure that you have the freedom to -distribute copies of free software (and charge for them if you wish), that you -receive source code or can get it if you want it, that you can change the -software or use pieces of it in new free programs, and that you know you can do -these things. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -The precise terms and conditions for copying, distribution and modification -follow. - -## TERMS AND CONDITIONS - -### 0. Definitions. - -*This License* refers to version 3 of the GNU General Public License. - -*Copyright* also means copyright-like laws that apply to other kinds of works, -such as semiconductor masks. - -*The Program* refers to any copyrightable work licensed under this License. -Each licensee is addressed as *you*. *Licensees* and *recipients* may be -individuals or organizations. - -To *modify* a work means to copy from or adapt all or part of the work in a -fashion requiring copyright permission, other than the making of an exact copy. -The resulting work is called a *modified version* of the earlier work or a work -*based on* the earlier work. - -A *covered work* means either the unmodified Program or a work based on the -Program. - -To *propagate* a work means to do anything with it that, without permission, -would make you directly or secondarily liable for infringement under applicable -copyright law, except executing it on a computer or modifying a private copy. -Propagation includes copying, distribution (with or without modification), -making available to the public, and in some countries other activities as well. - -To *convey* a work means any kind of propagation that enables other parties to -make or receive copies. Mere interaction with a user through a computer -network, with no transfer of a copy, is not conveying. - -An interactive user interface displays *Appropriate Legal Notices* to the -extent that it includes a convenient and prominently visible feature that - -1. displays an appropriate copyright notice, and -2. tells the user that there is no warranty for the work (except to the - extent that warranties are provided), that licensees may convey the work - under this License, and how to view a copy of this License. - -If the interface presents a list of user commands or options, such as a menu, a -prominent item in the list meets this criterion. - -### 1. Source Code. - -The *source code* for a work means the preferred form of the work for making -modifications to it. *Object code* means any non-source form of a work. - -A *Standard Interface* means an interface that either is an official standard -defined by a recognized standards body, or, in the case of interfaces specified -for a particular programming language, one that is widely used among developers -working in that language. - -The *System Libraries* of an executable work include anything, other than the -work as a whole, that (a) is included in the normal form of packaging a Major -Component, but which is not part of that Major Component, and (b) serves only -to enable use of the work with that Major Component, or to implement a Standard -Interface for which an implementation is available to the public in source code -form. A *Major Component*, in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system (if any) on -which the executable work runs, or a compiler used to produce the work, or an -object code interpreter used to run it. - -The *Corresponding Source* for a work in object code form means all the source -code needed to generate, install, and (for an executable work) run the object -code and to modify the work, including scripts to control those activities. -However, it does not include the work's System Libraries, or general-purpose -tools or generally available free programs which are used unmodified in -performing those activities but which are not part of the work. For example, -Corresponding Source includes interface definition files associated with source -files for the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, such as -by intimate data communication or control flow between those subprograms and -other parts of the work. - -The Corresponding Source need not include anything that users can regenerate -automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. - -### 2. Basic Permissions. - -All rights granted under this License are granted for the term of copyright on -the Program, and are irrevocable provided the stated conditions are met. This -License explicitly affirms your unlimited permission to run the unmodified -Program. The output from running a covered work is covered by this License only -if the output, given its content, constitutes a covered work. This License -acknowledges your rights of fair use or other equivalent, as provided by -copyright law. - -You may make, run and propagate covered works that you do not convey, without -conditions so long as your license otherwise remains in force. You may convey -covered works to others for the sole purpose of having them make modifications -exclusively for you, or provide you with facilities for running those works, -provided that you comply with the terms of this License in conveying all -material for which you do not control copyright. Those thus making or running -the covered works for you must do so exclusively on your behalf, under your -direction and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the -conditions stated below. Sublicensing is not allowed; section 10 makes it -unnecessary. - -### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological measure -under any applicable law fulfilling obligations under article 11 of the WIPO -copyright treaty adopted on 20 December 1996, or similar laws prohibiting or -restricting circumvention of such measures. - -When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention is -effected by exercising rights under this License with respect to the covered -work, and you disclaim any intention to limit operation or modification of the -work as a means of enforcing, against the work's users, your or third parties' -legal rights to forbid circumvention of technological measures. - -### 4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you receive it, -in any medium, provided that you conspicuously and appropriately publish on -each copy an appropriate copyright notice; keep intact all notices stating that -this License and any non-permissive terms added in accord with section 7 apply -to the code; keep intact all notices of the absence of any warranty; and give -all recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may -offer support or warranty protection for a fee. - -### 5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to produce it -from the Program, in the form of source code under the terms of section 4, -provided that you also meet all of these conditions: - -- a) The work must carry prominent notices stating that you modified it, and - giving a relevant date. -- b) The work must carry prominent notices stating that it is released under - this License and any conditions added under section 7. This requirement - modifies the requirement in section 4 to *keep intact all notices*. -- c) You must license the entire work, as a whole, under this License to - anyone who comes into possession of a copy. This License will therefore - apply, along with any applicable section 7 additional terms, to the whole - of the work, and all its parts, regardless of how they are packaged. This - License gives no permission to license the work in any other way, but it - does not invalidate such permission if you have separately received it. -- d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your work need - not make them do so. - -A compilation of a covered work with other separate and independent works, -which are not by their nature extensions of the covered work, and which are not -combined with it such as to form a larger program, in or on a volume of a -storage or distribution medium, is called an *aggregate* if the compilation and -its resulting copyright are not used to limit the access or legal rights of the -compilation's users beyond what the individual works permit. Inclusion of a -covered work in an aggregate does not cause this License to apply to the other -parts of the aggregate. - -### 6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms of sections 4 -and 5, provided that you also convey the machine-readable Corresponding Source -under the terms of this License, in one of these ways: - -- a) Convey the object code in, or embodied in, a physical product (including - a physical distribution medium), accompanied by the Corresponding Source - fixed on a durable physical medium customarily used for software - interchange. -- b) Convey the object code in, or embodied in, a physical product (including - a physical distribution medium), accompanied by a written offer, valid for - at least three years and valid for as long as you offer spare parts or - customer support for that product model, to give anyone who possesses the - object code either -1. a copy of the Corresponding Source for all the software in the product - that is covered by this License, on a durable physical medium - customarily used for software interchange, for a price no more than your - reasonable cost of physically performing this conveying of source, or -2. access to copy the Corresponding Source from a network server at no - charge. -- c) Convey individual copies of the object code with a copy of the written - offer to provide the Corresponding Source. This alternative is allowed only - occasionally and noncommercially, and only if you received the object code - with such an offer, in accord with subsection 6b. -- d) Convey the object code by offering access from a designated place - (gratis or for a charge), and offer equivalent access to the Corresponding - Source in the same way through the same place at no further charge. You - need not require recipients to copy the Corresponding Source along with the - object code. If the place to copy the object code is a network server, the - Corresponding Source may be on a different server operated by you or a - third party) that supports equivalent copying facilities, provided you - maintain clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the Corresponding - Source, you remain obligated to ensure that it is available for as long as - needed to satisfy these requirements. -- e) Convey the object code using peer-to-peer transmission, provided you - inform other peers where the object code and Corresponding Source of the - work are being offered to the general public at no charge under subsection - 6d. - -A separable portion of the object code, whose source code is excluded from the -Corresponding Source as a System Library, need not be included in conveying the -object code work. - -A *User Product* is either - -1. a *consumer product*, which means any tangible personal property which is - normally used for personal, family, or household purposes, or -2. anything designed or sold for incorporation into a dwelling. - -In determining whether a product is a consumer product, doubtful cases shall be -resolved in favor of coverage. For a particular product received by a -particular user, *normally used* refers to a typical or common use of that -class of product, regardless of the status of the particular user or of the way -in which the particular user actually uses, or expects or is expected to use, -the product. A product is a consumer product regardless of whether the product -has substantial commercial, industrial or non-consumer uses, unless such uses -represent the only significant mode of use of the product. - -*Installation Information* for a User Product means any methods, procedures, -authorization keys, or other information required to install and execute -modified versions of a covered work in that User Product from a modified -version of its Corresponding Source. The information must suffice to ensure -that the continued functioning of the modified object code is in no case -prevented or interfered with solely because modification has been made. - -If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as part of a -transaction in which the right of possession and use of the User Product is -transferred to the recipient in perpetuity or for a fixed term (regardless of -how the transaction is characterized), the Corresponding Source conveyed under -this section must be accompanied by the Installation Information. But this -requirement does not apply if neither you nor any third party retains the -ability to install modified object code on the User Product (for example, the -work has been installed in ROM). - -The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates for a -work that has been modified or installed by the recipient, or for the User -Product in which it has been modified or installed. Access to a network may be -denied when the modification itself materially and adversely affects the -operation of the network or violates the rules and protocols for communication -across the network. - -Corresponding Source conveyed, and Installation Information provided, in accord -with this section must be in a format that is publicly documented (and with an -implementation available to the public in source code form), and must require -no special password or key for unpacking, reading or copying. - -### 7. Additional Terms. - -*Additional permissions* are terms that supplement the terms of this License by -making exceptions from one or more of its conditions. Additional permissions -that are applicable to the entire Program shall be treated as though they were -included in this License, to the extent that they are valid under applicable -law. If additional permissions apply only to part of the Program, that part may -be used separately under those permissions, but the entire Program remains -governed by this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any -additional permissions from that copy, or from any part of it. (Additional -permissions may be written to require their own removal in certain cases when -you modify the work.) You may place additional permissions on material, added -by you to a covered work, for which you have or can give appropriate copyright -permission. - -Notwithstanding any other provision of this License, for material you add to a -covered work, you may (if authorized by the copyright holders of that material) -supplement the terms of this License with terms: - -- a) Disclaiming warranty or limiting liability differently from the terms of - sections 15 and 16 of this License; or -- b) Requiring preservation of specified reasonable legal notices or author - attributions in that material or in the Appropriate Legal Notices displayed - by works containing it; or -- c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in reasonable - ways as different from the original version; or -- d) Limiting the use for publicity purposes of names of licensors or authors - of the material; or -- e) Declining to grant rights under trademark law for use of some trade - names, trademarks, or service marks; or -- f) Requiring indemnification of licensors and authors of that material by - anyone who conveys the material (or modified versions of it) with - contractual assumptions of liability to the recipient, for any liability - that these contractual assumptions directly impose on those licensors and - authors. - -All other non-permissive additional terms are considered *further restrictions* -within the meaning of section 10. If the Program as you received it, or any -part of it, contains a notice stating that it is governed by this License along -with a term that is a further restriction, you may remove that term. If a -license document contains a further restriction but permits relicensing or -conveying under this License, you may add to a covered work material governed -by the terms of that license document, provided that the further restriction -does not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, -in the relevant source files, a statement of the additional terms that apply to -those files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a -separately written license, or stated as exceptions; the above requirements -apply either way. - -### 8. Termination. - -You may not propagate or modify a covered work except as expressly provided -under this License. Any attempt otherwise to propagate or modify it is void, -and will automatically terminate your rights under this License (including any -patent licenses granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a -particular copyright holder is reinstated - -- a) provisionally, unless and until the copyright holder explicitly and - finally terminates your license, and -- b) permanently, if the copyright holder fails to notify you of the - violation by some reasonable means prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is reinstated -permanently if the copyright holder notifies you of the violation by some -reasonable means, this is the first time you have received notice of violation -of this License (for any work) from that copyright holder, and you cure the -violation prior to 30 days after your receipt of the notice. - -Termination of your rights under this section does not terminate the licenses -of parties who have received copies or rights from you under this License. If -your rights have been terminated and not permanently reinstated, you do not -qualify to receive new licenses for the same material under section 10. - -### 9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run a copy -of the Program. Ancillary propagation of a covered work occurring solely as a -consequence of using peer-to-peer transmission to receive a copy likewise does -not require acceptance. However, nothing other than this License grants you -permission to propagate or modify any covered work. These actions infringe -copyright if you do not accept this License. Therefore, by modifying or -propagating a covered work, you indicate your acceptance of this License to do -so. - -### 10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically receives a -license from the original licensors, to run, modify and propagate that work, -subject to this License. You are not responsible for enforcing compliance by -third parties with this License. - -An *entity transaction* is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered work -results from an entity transaction, each party to that transaction who receives -a copy of the work also receives whatever licenses to the work the party's -predecessor in interest had or could give under the previous paragraph, plus a -right to possession of the Corresponding Source of the work from the -predecessor in interest, if the predecessor has it or can get it with -reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights -granted or affirmed under this License. For example, you may not impose a -license fee, royalty, or other charge for exercise of rights granted under this -License, and you may not initiate litigation (including a cross-claim or -counterclaim in a lawsuit) alleging that any patent claim is infringed by -making, using, selling, offering for sale, or importing the Program or any -portion of it. - -### 11. Patents. - -A *contributor* is a copyright holder who authorizes use under this License of -the Program or a work on which the Program is based. The work thus licensed is -called the contributor's *contributor version*. - -A contributor's *essential patent claims* are all patent claims owned or -controlled by the contributor, whether already acquired or hereafter acquired, -that would be infringed by some manner, permitted by this License, of making, -using, or selling its contributor version, but do not include claims that would -be infringed only as a consequence of further modification of the contributor -version. For purposes of this definition, *control* includes the right to grant -patent sublicenses in a manner consistent with the requirements of this -License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent -license under the contributor's essential patent claims, to make, use, sell, -offer for sale, import and otherwise run, modify and propagate the contents of -its contributor version. - -In the following three paragraphs, a *patent license* is any express agreement -or commitment, however denominated, not to enforce a patent (such as an express -permission to practice a patent or covenant not to sue for patent -infringement). To *grant* such a patent license to a party means to make such -an agreement or commitment not to enforce a patent against the party. - -If you convey a covered work, knowingly relying on a patent license, and the -Corresponding Source of the work is not available for anyone to copy, free of -charge and under the terms of this License, through a publicly available -network server or other readily accessible means, then you must either - -1. cause the Corresponding Source to be so available, or -2. arrange to deprive yourself of the benefit of the patent license for this - particular work, or -3. arrange, in a manner consistent with the requirements of this License, to - extend the patent license to downstream recipients. - -*Knowingly relying* means you have actual knowledge that, but for the patent -license, your conveying the covered work in a country, or your recipient's use -of the covered work in a country, would infringe one or more identifiable -patents in that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you -convey, or propagate by procuring conveyance of, a covered work, and grant a -patent license to some of the parties receiving the covered work authorizing -them to use, propagate, modify or convey a specific copy of the covered work, -then the patent license you grant is automatically extended to all recipients -of the covered work and works based on it. - -A patent license is *discriminatory* if it does not include within the scope of -its coverage, prohibits the exercise of, or is conditioned on the non-exercise -of one or more of the rights that are specifically granted under this License. -You may not convey a covered work if you are a party to an arrangement with a -third party that is in the business of distributing software, under which you -make payment to the third party based on the extent of your activity of -conveying the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory patent -license - -- a) in connection with copies of the covered work conveyed by you (or copies - made from those copies), or -- b) primarily for and in connection with specific products or compilations - that contain the covered work, unless you entered into that arrangement, or - that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied -license or other defenses to infringement that may otherwise be available to -you under applicable patent law. - -### 12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not excuse -you from the conditions of this License. If you cannot convey a covered work so -as to satisfy simultaneously your obligations under this License and any other -pertinent obligations, then as a consequence you may not convey it at all. For -example, if you agree to terms that obligate you to collect a royalty for -further conveying from those to whom you convey the Program, the only way you -could satisfy both those terms and this License would be to refrain entirely -from conveying the Program. - -### 13. Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have permission to -link or combine any covered work with a work licensed under version 3 of the -GNU Affero General Public License into a single combined work, and to convey -the resulting work. The terms of this License will continue to apply to the -part which is the covered work, but the special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -General Public License from time to time. Such new versions will be similar in -spirit to the present version, but may differ in detail to address new problems -or concerns. - -Each version is given a distinguishing version number. If the Program specifies -that a certain numbered version of the GNU General Public License *or any later -version* applies to it, you have the option of following the terms and -conditions either of that numbered version or of any later version published by -the Free Software Foundation. If the Program does not specify a version number -of the GNU General Public License, you may choose any version ever published by -the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the -GNU General Public License can be used, that proxy's public statement of -acceptance of a version permanently authorizes you to choose that version for -the Program. - -Later license versions may give you additional or different permissions. -However, no additional obligations are imposed on any author or copyright -holder as a result of your choosing to follow a later version. - -### 15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE -LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER -PARTIES PROVIDE THE PROGRAM *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE -QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE -DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION. - -### 16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY -COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS -PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, -INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE -THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED -INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE -PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY -HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -### 17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided above cannot -be given local legal effect according to their terms, reviewing courts shall -apply local law that most closely approximates an absolute waiver of all civil -liability in connection with the Program, unless a warranty or assumption of -liability accompanies a copy of the Program in return for a fee. - -## END OF TERMS AND CONDITIONS ### - -### How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible -use to the public, the best way to achieve this is to make it free software -which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach -them to the start of each source file to most effectively state the exclusion -of warranty; and each file should have at least the *copyright* line and a -pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -You should also get your employer (if you work as a programmer) or school, if -any, to sign a *copyright disclaimer* for the program, if necessary. For more -information on this, and how to apply and follow the GNU GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/lc-esp-engine-svc/build.gradle b/lc-esp-engine-svc/build.gradle deleted file mode 100644 index 0e0435370..000000000 --- a/lc-esp-engine-svc/build.gradle +++ /dev/null @@ -1,70 +0,0 @@ -plugins { - id 'java' - id 'application' - id "com.palantir.docker" version "0.33.0" -} - -group 'leighco' -version '18.11' - -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-esp-sdk') - // https://mvnrepository.com/artifact/org.apache.activemq/activemq-broker - implementation group: 'org.apache.activemq', name: 'activemq-broker', version: '5.17.1' - // https://mvnrepository.com/artifact/org.apache.activemq/activemq-kahadb-store - implementation group: 'org.apache.activemq', name: 'activemq-kahadb-store', version: '5.17.1' - // https://mvnrepository.com/artifact/org.apache.activemq/activemq-mqtt - implementation 'org.apache.activemq:activemq-mqtt:5.17.1' - // https://mvnrepository.com/artifact/org.apache.activemq/activemq-stomp - implementation group: 'org.apache.activemq', name: 'activemq-stomp', version: '5.17.1' - // https://mvnrepository.com/artifact/org.apache.activemq/activemq-http - implementation group: 'org.apache.activemq', name: 'activemq-http', version: '5.17.1' -// https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server - implementation 'org.eclipse.jetty:jetty-server:9.4.46.v20220331' -// https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-xml - implementation 'org.eclipse.jetty:jetty-xml:9.4.46.v20220331' -// https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-webapp - implementation 'org.eclipse.jetty:jetty-webapp:9.4.46.v20220331' -// https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient - // https://mvnrepository.com/artifact/org.eclipse.jetty.websocket/websocket-server - implementation 'org.eclipse.jetty.websocket:websocket-server:9.4.46.v20220331' - - implementation 'org.apache.httpcomponents:httpclient:4.5.13' - implementation 'javax.servlet:javax.servlet-api:4.0.1' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} - -application { - mainClass = 'lc.esp.engine.service.EngineService' -} - -docker { - name "docker.leigh-co.com/${project.name}:${project.version}" - files tasks.distTar.outputs -} - -task dockerfile() { - doLast { - new File(projectDir, 'Dockerfile').text = """FROM docker.leigh-co.com/openjdk:17-alpine -EXPOSE 52018 -RUN mkdir /app -COPY ${project.name}-${project.version}.tar /dist.tar -RUN tar xfv /dist.tar -RUN rm /dist.tar -ENTRYPOINT ["/${project.name}-${project.version}/bin/${project.name}"] -""" - } -} - diff --git a/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EngineService.java b/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EngineService.java deleted file mode 100644 index e36e273a2..000000000 --- a/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EngineService.java +++ /dev/null @@ -1,66 +0,0 @@ -package lc.esp.engine.service; - -import lc.esp.sdk.ESPAddress; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.BasicallyDangerous; -import lc.mecha.util.UniversalJob; -import org.apache.activemq.broker.BrokerPlugin; -import org.apache.activemq.broker.BrokerService; -import org.apache.activemq.broker.region.DestinationInterceptor; -import org.apache.activemq.broker.region.virtual.VirtualDestination; -import org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor; -import org.apache.activemq.broker.region.virtual.VirtualTopic; -import org.apache.activemq.usage.SystemUsage; - -import static java.lang.Thread.sleep; - -public class EngineService extends BasicallyDangerous { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EngineService.class); - - public static void main(String args[]) throws InterruptedException { - UniversalJob.banner(logger, "Enhanced Services Platform mk18/ENGINE (GIPSY DANGER)"); - - EngineService eng = new EngineService(); - eng.run(); - - //noinspection InfiniteLoopStatement - while (true) { - //noinspection BusyWait - sleep(1000); - } - } - - @Override - public void runDangerously() throws Exception { - BrokerService broker = new BrokerService(); - broker.addConnector("tcp://0.0.0.0:52018"); - broker.addConnector("mqtt://0.0.0.0:52019"); - broker.addConnector("stomp://0.0.0.0:52020"); - broker.addConnector("ws://0.0.0.0:52021"); - broker.setPersistent(true); - - VirtualDestinationInterceptor virtualDestinationInterceptor = new VirtualDestinationInterceptor(); - VirtualTopic vTopic = new VirtualTopic(); - vTopic.setName(">"); - vTopic.setPrefix(ESPAddress.VIRTUAL_TOPIC_PREFIX + ".*."); - vTopic.setLocal(false); - // Note ramifications: https://activemq.apache.org/virtual-destinations - vTopic.setSelectorAware(true); - virtualDestinationInterceptor.setVirtualDestinations(new VirtualDestination[]{vTopic}); - DestinationInterceptor[] destinationInterceptors = new DestinationInterceptor[]{virtualDestinationInterceptor}; - broker.setDestinationInterceptors(destinationInterceptors); - broker.setPlugins(new BrokerPlugin[]{new EnhancedBrokerPlugin()}); - new EnhancedBrokerPlugin().installPlugin(broker.getBroker()); - broker.start(); - - //noinspection InfiniteLoopStatement - while (true) { - SystemUsage su = broker.getConsumerSystemUsage(); - logger.info("{}", su.getMemoryUsage()); - logger.info("{}", su.getStoreUsage()); - logger.info("{}", su.getTempUsage()); - sleep(60 * 1000); - } - } -} \ No newline at end of file diff --git a/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EnhancedBroker.java b/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EnhancedBroker.java deleted file mode 100644 index 53e0c4584..000000000 --- a/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EnhancedBroker.java +++ /dev/null @@ -1,82 +0,0 @@ -package lc.esp.engine.service; - -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.activemq.broker.Broker; -import org.apache.activemq.broker.BrokerFilter; -import org.apache.activemq.broker.ProducerBrokerExchange; -import org.apache.activemq.command.ActiveMQBytesMessage; -import org.apache.activemq.command.ActiveMQDestination; -import org.apache.activemq.command.Message; -import org.apache.activemq.util.ByteSequence; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; - -/** - * This class implements the Enhanced Services Platform mechanics for ActiveMQ. - * - * @author Alex Leigh - * @since mk18 (GIPSY DANGER) - */ -public class EnhancedBroker extends BrokerFilter { - public static final String KEY_TYPE = "type"; - public static final String KEY_PARAMETERS = "parameters"; - public static final String KEY_PAYLOAD = "payload"; - public static final String V18_TYPE = "lc.esp.api18.envelope"; - public static final String ESP_CORRELATION_ID = "lc.esp.correlation_id"; - public static final String ESP_REPLYTO = "lc.esp.reply_to"; - - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EnhancedBroker.class); - - public EnhancedBroker(Broker next) { - super(next); - logger.info("Created new Enhanced Broker [broker: {}]", next); - } - - public void send(ProducerBrokerExchange producerExchange, Message msg) throws Exception { - logger.trace("send(): {}", msg); - - if (msg.getCorrelationId() != null && msg.getProperty(ESP_CORRELATION_ID) == null) { - msg.setProperty(ESP_CORRELATION_ID, msg.getCorrelationId()); - } else if (msg.getCorrelationId() == null) { - Object correlationId = msg.getProperty(ESP_CORRELATION_ID); - if (correlationId != null) msg.setCorrelationId(correlationId.toString()); - } - - if (msg.getReplyTo() == null) { - Object replyTo = msg.getProperty(ESP_REPLYTO); - // Still works for topic as long as the destination is qualified - if (replyTo != null) msg.setReplyTo(ActiveMQDestination.createDestination(replyTo.toString(), - ActiveMQDestination.QUEUE_TYPE)); - } - - // For the time being all messages in ESP are JSON we can let this ride - if (msg instanceof ActiveMQBytesMessage) { - String s = new String(msg.getContent().getData()); - JSONObject envelope = new JSONObject(s); - String type = envelope.optString(KEY_TYPE); - logger.trace("Got type: {}", type); - if (type != null) { - if (type.equals(V18_TYPE)) { - JSONObject tags = envelope.optJSONObject(KEY_PARAMETERS); - if (tags != null) { - for (String key : tags.keySet()) { - try { - msg.setProperty(key, tags.get(key)); - } catch (IOException e) { - logger.warn("Unable to set property: {}", e); - } - } - } - JSONObject payload = envelope.getJSONObject(KEY_PAYLOAD); - logger.trace("Replacing messaging contents: {}", payload); - msg.setContent(new ByteSequence(payload.toString().getBytes(StandardCharsets.UTF_8))); - } - } - } - - super.send(producerExchange, msg); - } -} diff --git a/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EnhancedBrokerPlugin.java b/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EnhancedBrokerPlugin.java deleted file mode 100644 index 713e94b8b..000000000 --- a/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/EnhancedBrokerPlugin.java +++ /dev/null @@ -1,15 +0,0 @@ -package lc.esp.engine.service; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.activemq.broker.Broker; -import org.apache.activemq.broker.BrokerPlugin; - -public class EnhancedBrokerPlugin implements BrokerPlugin { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(EnhancedBrokerPlugin.class); - - @Override - public Broker installPlugin(Broker broker) throws Exception { - return new EnhancedBroker(broker); - } -} diff --git a/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/NoisyBrokerFilter.java b/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/NoisyBrokerFilter.java deleted file mode 100644 index 19ec8b47a..000000000 --- a/lc-esp-engine-svc/src/main/java/lc/esp/engine/service/NoisyBrokerFilter.java +++ /dev/null @@ -1,429 +0,0 @@ -/** - * 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. - */ -package lc.esp.engine.service; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.activemq.broker.*; -import org.apache.activemq.broker.region.Destination; -import org.apache.activemq.broker.region.MessageReference; -import org.apache.activemq.broker.region.Subscription; -import org.apache.activemq.broker.region.virtual.VirtualDestination; -import org.apache.activemq.command.*; -import org.apache.activemq.store.PListStore; -import org.apache.activemq.thread.Scheduler; -import org.apache.activemq.usage.Usage; - -import java.net.URI; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ThreadPoolExecutor; - -/** - * A "noisy" implementation of a {@link BrokerFilter} which logs its transactions. - * - * @author Alex Leigh - * @since mk18 (GIPSY DANGER) - */ -public class NoisyBrokerFilter implements Broker { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(BrokerFilter.class); - protected final Broker next; - - public NoisyBrokerFilter(Broker next) { - this.next = next; - } - - public Broker getNext() { - return next; - } - - @Override - public Broker getAdaptor(Class type) { - return type.isInstance(this) ? this : getNext().getAdaptor(type); - } - - @Override - public Map getDestinationMap() { - return getNext().getDestinationMap(); - } - - @Override - public Map getDestinationMap(ActiveMQDestination destination) { - return getNext().getDestinationMap(destination); - } - - @Override - public Set getDestinations(ActiveMQDestination destination) { - return getNext().getDestinations(destination); - } - - @Override - public void acknowledge(ConsumerBrokerExchange consumerExchange, MessageAck ack) throws Exception { - logger.info("acknowledge()"); - getNext().acknowledge(consumerExchange, ack); - } - - @Override - public Response messagePull(ConnectionContext context, MessagePull pull) throws Exception { - logger.info("messagePull()"); - return getNext().messagePull(context, pull); - } - - @Override - public void addConnection(ConnectionContext context, ConnectionInfo info) throws Exception { - logger.info("addConnection()"); - getNext().addConnection(context, info); - } - - @Override - public Subscription addConsumer(ConnectionContext context, ConsumerInfo info) throws Exception { - logger.info("addConsumer()"); - return getNext().addConsumer(context, info); - } - - @Override - public void addProducer(ConnectionContext context, ProducerInfo info) throws Exception { - logger.info("addProducer()"); - getNext().addProducer(context, info); - } - - @Override - public void commitTransaction(ConnectionContext context, TransactionId xid, boolean onePhase) throws Exception { - logger.info("commitTransaction()"); - getNext().commitTransaction(context, xid, onePhase); - } - - @Override - public void removeSubscription(ConnectionContext context, RemoveSubscriptionInfo info) throws Exception { - logger.info("removeSubscription()"); - getNext().removeSubscription(context, info); - } - - @Override - public TransactionId[] getPreparedTransactions(ConnectionContext context) throws Exception { - logger.info("getPreparedTransactions()"); - return getNext().getPreparedTransactions(context); - } - - @Override - public int prepareTransaction(ConnectionContext context, TransactionId xid) throws Exception { - logger.info("prepareTransaction()"); - return getNext().prepareTransaction(context, xid); - } - - @Override - public void removeConnection(ConnectionContext context, ConnectionInfo info, Throwable error) throws Exception { - logger.info("removeConnection()"); - getNext().removeConnection(context, info, error); - } - - @Override - public void removeConsumer(ConnectionContext context, ConsumerInfo info) throws Exception { - logger.info("removeConsumer()"); - getNext().removeConsumer(context, info); - } - - @Override - public void removeProducer(ConnectionContext context, ProducerInfo info) throws Exception { - logger.info("removeProducer()"); - getNext().removeProducer(context, info); - } - - @Override - public void rollbackTransaction(ConnectionContext context, TransactionId xid) throws Exception { - logger.info("rollbackTransaction()"); - getNext().rollbackTransaction(context, xid); - } - - @Override - public void send(ProducerBrokerExchange producerExchange, Message messageSend) throws Exception { - logger.info("send()"); - getNext().send(producerExchange, messageSend); - } - - @Override - public void beginTransaction(ConnectionContext context, TransactionId xid) throws Exception { - logger.info("beginTransaction()"); - getNext().beginTransaction(context, xid); - } - - @Override - public void forgetTransaction(ConnectionContext context, TransactionId transactionId) throws Exception { - logger.info("forgetTransaction()"); - getNext().forgetTransaction(context, transactionId); - } - - @Override - public Connection[] getClients() throws Exception { - logger.info("getClients()"); - return getNext().getClients(); - } - - @Override - public Destination addDestination(ConnectionContext context, ActiveMQDestination destination, boolean createIfTemporary) throws Exception { - logger.info("addDestination()"); - return getNext().addDestination(context, destination, createIfTemporary); - } - - @Override - public void removeDestination(ConnectionContext context, ActiveMQDestination destination, long timeout) throws Exception { - logger.info("acknowledge()"); - getNext().removeDestination(context, destination, timeout); - } - - @Override - public ActiveMQDestination[] getDestinations() throws Exception { - logger.info("getDestinations()"); - return getNext().getDestinations(); - } - - @Override - public void start() throws Exception { - getNext().start(); - } - - @Override - public void stop() throws Exception { - getNext().stop(); - } - - @Override - public void addSession(ConnectionContext context, SessionInfo info) throws Exception { - logger.info("addSession()"); - getNext().addSession(context, info); - } - - @Override - public void removeSession(ConnectionContext context, SessionInfo info) throws Exception { - logger.info("removeSession()"); - getNext().removeSession(context, info); - } - - @Override - public BrokerId getBrokerId() { - return getNext().getBrokerId(); - } - - @Override - public String getBrokerName() { - return getNext().getBrokerName(); - } - - @Override - public void gc() { - getNext().gc(); - } - - @Override - public void addBroker(Connection connection, BrokerInfo info) { - getNext().addBroker(connection, info); - } - - @Override - public void removeBroker(Connection connection, BrokerInfo info) { - getNext().removeBroker(connection, info); - } - - @Override - public BrokerInfo[] getPeerBrokerInfos() { - return getNext().getPeerBrokerInfos(); - } - - @Override - public void preProcessDispatch(MessageDispatch messageDispatch) { - getNext().preProcessDispatch(messageDispatch); - } - - @Override - public void postProcessDispatch(MessageDispatch messageDispatch) { - getNext().postProcessDispatch(messageDispatch); - } - - @Override - public void processDispatchNotification(MessageDispatchNotification messageDispatchNotification) throws Exception { - getNext().processDispatchNotification(messageDispatchNotification); - } - - @Override - public boolean isStopped() { - return getNext().isStopped(); - } - - @Override - public Set getDurableDestinations() { - return getNext().getDurableDestinations(); - } - - @Override - public void addDestinationInfo(ConnectionContext context, DestinationInfo info) throws Exception { - getNext().addDestinationInfo(context, info); - } - - @Override - public void removeDestinationInfo(ConnectionContext context, DestinationInfo info) throws Exception { - getNext().removeDestinationInfo(context, info); - } - - @Override - public boolean isFaultTolerantConfiguration() { - return getNext().isFaultTolerantConfiguration(); - } - - @Override - public ConnectionContext getAdminConnectionContext() { - return getNext().getAdminConnectionContext(); - } - - @Override - public void setAdminConnectionContext(ConnectionContext adminConnectionContext) { - getNext().setAdminConnectionContext(adminConnectionContext); - } - - @Override - public PListStore getTempDataStore() { - return getNext().getTempDataStore(); - } - - @Override - public URI getVmConnectorURI() { - return getNext().getVmConnectorURI(); - } - - @Override - public void brokerServiceStarted() { - getNext().brokerServiceStarted(); - } - - @Override - public BrokerService getBrokerService() { - return getNext().getBrokerService(); - } - - @Override - public boolean isExpired(MessageReference messageReference) { - return getNext().isExpired(messageReference); - } - - @Override - public void messageExpired(ConnectionContext context, MessageReference message, Subscription subscription) { - getNext().messageExpired(context, message, subscription); - } - - @Override - public boolean sendToDeadLetterQueue(ConnectionContext context, MessageReference messageReference, - Subscription subscription, Throwable poisonCause) { - return getNext().sendToDeadLetterQueue(context, messageReference, subscription, poisonCause); - } - - @Override - public Broker getRoot() { - return getNext().getRoot(); - } - - @Override - public long getBrokerSequenceId() { - return getNext().getBrokerSequenceId(); - } - - - @Override - public void fastProducer(ConnectionContext context, ProducerInfo producerInfo, ActiveMQDestination destination) { - getNext().fastProducer(context, producerInfo, destination); - } - - @Override - public void isFull(ConnectionContext context, Destination destination, Usage usage) { - logger.info("isFull()"); - getNext().isFull(context, destination, usage); - } - - @Override - public void messageConsumed(ConnectionContext context, MessageReference messageReference) { - logger.info("messageConsumed()"); - getNext().messageConsumed(context, messageReference); - } - - @Override - public void messageDelivered(ConnectionContext context, MessageReference messageReference) { - logger.info("messageDelivered()"); - getNext().messageDelivered(context, messageReference); - } - - @Override - public void messageDiscarded(ConnectionContext context, Subscription sub, MessageReference messageReference) { - logger.info("messageDiscarded()"); - getNext().messageDiscarded(context, sub, messageReference); - } - - @Override - public void slowConsumer(ConnectionContext context, Destination destination, Subscription subs) { - logger.info("slowConsumer()"); - getNext().slowConsumer(context, destination, subs); - } - - @Override - public void virtualDestinationAdded(ConnectionContext context, - VirtualDestination virtualDestination) { - logger.info("virtualDestinationAdded()"); - getNext().virtualDestinationAdded(context, virtualDestination); - } - - @Override - public void virtualDestinationRemoved(ConnectionContext context, - VirtualDestination virtualDestination) { - logger.info("virtualDestinationRemoved()"); - getNext().virtualDestinationRemoved(context, virtualDestination); - } - - @Override - public void nowMasterBroker() { - getNext().nowMasterBroker(); - } - - @Override - public void processConsumerControl(ConsumerBrokerExchange consumerExchange, - ConsumerControl control) { - logger.info("processConsumerControl()"); - getNext().processConsumerControl(consumerExchange, control); - } - - @Override - public void reapplyInterceptor() { - getNext().reapplyInterceptor(); - } - - @Override - public Scheduler getScheduler() { - return getNext().getScheduler(); - } - - @Override - public ThreadPoolExecutor getExecutor() { - return getNext().getExecutor(); - } - - @Override - public void networkBridgeStarted(BrokerInfo brokerInfo, boolean createdByDuplex, String remoteIp) { - logger.info("networkBridgeStarted()"); - getNext().networkBridgeStarted(brokerInfo, createdByDuplex, remoteIp); - } - - @Override - public void networkBridgeStopped(BrokerInfo brokerInfo) { - getNext().networkBridgeStopped(brokerInfo); - } -} diff --git a/lc-esp-monitor-app/.gitignore b/lc-esp-monitor-app/.gitignore deleted file mode 100644 index 94143827e..000000000 --- a/lc-esp-monitor-app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -Dockerfile diff --git a/lc-esp-monitor-app/build.gradle b/lc-esp-monitor-app/build.gradle deleted file mode 100644 index a16efff32..000000000 --- a/lc-esp-monitor-app/build.gradle +++ /dev/null @@ -1,49 +0,0 @@ -plugins { - id 'java' - id 'application' - id "com.palantir.docker" version "0.33.0" -} - -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -group 'leighco' -version '1.7' - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-esp-sdk') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} - -application { - mainClass = 'lc.esp.monitor.app.MonitorApp' -} - - -docker { - name "docker.leigh-co.com/${project.name}:${project.version}" - files tasks.distTar.outputs -} - -task dockerfile() { - doLast { - new File(projectDir, 'Dockerfile').text = """FROM docker.leigh-co.com/openjdk:17-alpine -RUN mkdir /app -COPY ${project.name}-${project.version}.tar /dist.tar -RUN tar xfv /dist.tar -RUN rm /dist.tar -ENTRYPOINT ["/${project.name}-${project.version}/bin/${project.name}"] -""" - } -} - - diff --git a/lc-esp-monitor-app/src/main/java/lc/esp/monitor/app/MonitorApp.java b/lc-esp-monitor-app/src/main/java/lc/esp/monitor/app/MonitorApp.java deleted file mode 100644 index 2bb5cc13f..000000000 --- a/lc-esp-monitor-app/src/main/java/lc/esp/monitor/app/MonitorApp.java +++ /dev/null @@ -1,36 +0,0 @@ -package lc.esp.monitor.app; - -import lc.esp.sdk.*; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; -import org.apache.commons.lang.StringUtils; - -public class MonitorApp { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(MonitorApp.class); - public static final String ENV_ADDRESS = "LC_ADDRESS"; - - public static void main(String[] args) throws Exception { - String address = System.getenv(ENV_ADDRESS); - if (StringUtils.isEmpty(address)) { - logger.info(ENV_ADDRESS + " environment variable must be set."); - System.exit(UniversalJob.RET_BADARGS); - } - - ESPClient esp = new ESPClient(); - esp.start(); - - ESPAddress telemDest = new ESPAddress(address); - - logger.info("Reading from address: {}", telemDest); - - ESPSession session = esp.createSession(); - ESPConsumer consumer = session.createConsumer(telemDest); - - //noinspection InfiniteLoopStatement - while (true) { - ESPMessage msg = consumer.receive(); - System.out.println(msg.toJson()); - } - } -} diff --git a/lc-esp-sdk-js/.babelrc b/lc-esp-sdk-js/.babelrc deleted file mode 100644 index 5a29d463f..000000000 --- a/lc-esp-sdk-js/.babelrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "presets": [ - [ - "@babel/preset-env", - { - "targets": { - "browsers": [ - "last 2 versions", - "safari >= 7" - ] - }, - "modules": false - } - ] - ] -} diff --git a/lc-esp-sdk-js/.gitignore b/lc-esp-sdk-js/.gitignore deleted file mode 100644 index 30b172713..000000000 --- a/lc-esp-sdk-js/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/*js -doc diff --git a/lc-esp-sdk-js/build.sh b/lc-esp-sdk-js/build.sh deleted file mode 100755 index f70aaeeb0..000000000 --- a/lc-esp-sdk-js/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -x - -npm run build -#npx webpack --mode production -npx webpack --mode development -documentation build src/index.js -f html -o doc diff --git a/lc-esp-sdk-js/dist/test.html b/lc-esp-sdk-js/dist/test.html deleted file mode 100644 index 83cd5d81f..000000000 --- a/lc-esp-sdk-js/dist/test.html +++ /dev/null @@ -1,16 +0,0 @@ - - - Test - - - - - -ESP SDK Test. To use: View JS console. - - - diff --git a/lc-esp-sdk-js/package-lock.json b/lc-esp-sdk-js/package-lock.json deleted file mode 100644 index 82918a13d..000000000 --- a/lc-esp-sdk-js/package-lock.json +++ /dev/null @@ -1,7366 +0,0 @@ -{ - "name": "lc-esp-sdk-js", - "version": "18.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "lc-esp-sdk-js", - "version": "18.0.0", - "license": "LGPL-3.0-only", - "dependencies": { - "@stomp/stompjs": "^6.1.2", - "crypto-browserify": "^3.12.0", - "lodash": "^4.17.21", - "uuid": "^8.3.2", - "websocket": "^1.0.34" - }, - "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "@rollup/plugin-node-resolve": "^13.2.1", - "rollup": "^2.70.2", - "rollup-plugin-babel": "^4.4.0", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", - "webpack": "^5.73.0", - "webpack-cli": "^4.10.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", - "dev": true, - "dependencies": { - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.0.tgz", - "integrity": "sha512-YH+BnkvuCiPR+MUOY6JIArdTIGrRtsxnLaIxPRy4CpGJ/V6OO6Gq/1J+FJEc4j5e5h6Bcy3/K7prlMrm93BJoA==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.0.0.tgz", - "integrity": "sha512-LcqVnHCjOAj8BTCtjpwYZCMTn4yArusbdObCVRUYvBHhrR5fVLVyENG+UVWM4T4H/ufv7NiBLdprllxWs/5PaQ==", - "deprecated": "incorrect UMD name", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.2.1.tgz", - "integrity": "sha512-btX7kzGvp1JwShQI9V6IM841YKNPYjKCvUbNrQ2EcVYbULtUd/GH6wZ/qdqH13j9pOHBER+EZXNN2L8RSJhVRA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^2.42.0" - } - }, - "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "node_modules/@stomp/stompjs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", - "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" - }, - "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.29.tgz", - "integrity": "sha512-tx5jMmMFwx7wBwq/V7OohKDVb/JwJU5qCVkeLMh1//xycAJ/ESuw9aJ9SEtlCZDYi2pBfe4JkisSoAtbOsBNAA==", - "dev": true - }, - "node_modules/@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - }, - "node_modules/bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/core-js-compat": { - "version": "3.22.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.2.tgz", - "integrity": "sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw==", - "dev": true, - "dependencies": { - "browserslist": "^4.20.2", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.123", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.123.tgz", - "integrity": "sha512-0pHGE53WkYoFbsgwYcVKEpWa6jbzlvkohIEA2CUoZ9b5KC+w/zlMiQHvW/4IBcOh7YoEFqRNavgTk02TBoUTUw==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/es5-ext": { - "version": "0.10.61", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", - "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "dependencies": { - "type": "^2.5.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", - "dev": true - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rollup": { - "version": "2.70.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", - "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel.", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "@babel/core": "7 || ^7.0.0-rc.2", - "rollup": ">=0.60.0 <3" - } - }, - "node_modules/rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-commonjs.", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "rollup": ">=1.12.0" - } - }, - "node_modules/rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve.", - "dev": true, - "dependencies": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - }, - "peerDependencies": { - "rollup": ">=1.11.0" - } - }, - "node_modules/rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "dependencies": { - "estree-walker": "^0.6.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.0.tgz", - "integrity": "sha512-sgQ99P+fRBM1jAYzN9RTnD/xEWx/7LZgYTCRgmYriSq1wxxqiQPJgXkkLBBuwySDWJ2PP0PnVQyuf4xLUuH4Ng==", - "dev": true, - "dependencies": { - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dev": true, - "dependencies": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websocket/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", - "engines": { - "node": ">=0.10.32" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", - "dev": true - }, - "@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - } - }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", - "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", - "dev": true, - "requires": { - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.0.tgz", - "integrity": "sha512-YH+BnkvuCiPR+MUOY6JIArdTIGrRtsxnLaIxPRy4CpGJ/V6OO6Gq/1J+FJEc4j5e5h6Bcy3/K7prlMrm93BJoA==", - "dev": true, - "requires": { - "@jridgewell/set-array": "1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz", - "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.0.0.tgz", - "integrity": "sha512-LcqVnHCjOAj8BTCtjpwYZCMTn4yArusbdObCVRUYvBHhrR5fVLVyENG+UVWM4T4H/ufv7NiBLdprllxWs/5PaQ==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@rollup/plugin-node-resolve": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.2.1.tgz", - "integrity": "sha512-btX7kzGvp1JwShQI9V6IM841YKNPYjKCvUbNrQ2EcVYbULtUd/GH6wZ/qdqH13j9pOHBER+EZXNN2L8RSJhVRA==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "dependencies": { - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - } - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - } - } - }, - "@stomp/stompjs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-6.1.2.tgz", - "integrity": "sha512-FHDTrIFM5Ospi4L3Xhj6v2+NzCVAeNDcBe95YjUWhWiRMrBF6uN3I7AUOlRgT6jU/2WQvvYK8ZaIxFfxFp+uHQ==" - }, - "@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/node": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.29.tgz", - "integrity": "sha512-tx5jMmMFwx7wBwq/V7OohKDVb/JwJU5qCVkeLMh1//xycAJ/ESuw9aJ9SEtlCZDYi2pBfe4JkisSoAtbOsBNAA==", - "dev": true - }, - "@types/resolve": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", - "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - }, - "bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "caniuse-lite": { - "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-js-compat": { - "version": "3.22.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.2.tgz", - "integrity": "sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw==", - "dev": true, - "requires": { - "browserslist": "^4.20.2", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "electron-to-chromium": { - "version": "1.4.123", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.123.tgz", - "integrity": "sha512-0pHGE53WkYoFbsgwYcVKEpWa6jbzlvkohIEA2CUoZ9b5KC+w/zlMiQHvW/4IBcOh7YoEFqRNavgTk02TBoUTUw==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "es5-ext": { - "version": "0.10.61", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", - "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "requires": { - "type": "^2.5.0" - }, - "dependencies": { - "type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "requires": { - "@types/estree": "*" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==" - }, - "node-releases": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rollup": { - "version": "2.70.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.2.tgz", - "integrity": "sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "rollup-plugin-babel": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", - "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-commonjs": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz", - "integrity": "sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1", - "is-reference": "^1.1.2", - "magic-string": "^0.25.2", - "resolve": "^1.11.0", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-plugin-node-resolve": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz", - "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==", - "dev": true, - "requires": { - "@types/resolve": "0.0.8", - "builtin-modules": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.11.1", - "rollup-pluginutils": "^2.8.1" - } - }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "terser": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.0.tgz", - "integrity": "sha512-sgQ99P+fRBM1jAYzN9RTnD/xEWx/7LZgYTCRgmYriSq1wxxqiQPJgXkkLBBuwySDWJ2PP0PnVQyuf4xLUuH4Ng==", - "dev": true, - "requires": { - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "requires": { - "whatwg-url": "^7.0.0" - } - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dev": true, - "requires": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "requires": { - "node-gyp-build": "^4.3.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - } - }, - "webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" - } - } -} diff --git a/lc-esp-sdk-js/package.json b/lc-esp-sdk-js/package.json deleted file mode 100644 index 1feb955ca..000000000 --- a/lc-esp-sdk-js/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "lc-esp-sdk-js", - "version": "18.0.0", - "description": "Enhanced Services Platform/CLIENT", - "author": "LEIGH&CO", - "license": "LGPL-3.0-only", - "main": "dist/lc-esp-sdk.cjs.js", - "module": "dist/lc-esp-sdk.esm.js", - "browser": "dist/lc-esp-sdk.umd.js", - "scripts": { - "build": "rollup -c", - "test": "node test/spec", - "pretest": "npm run build" - }, - "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "@rollup/plugin-node-resolve": "^13.2.1", - "rollup": "^2.70.2", - "rollup-plugin-babel": "^4.4.0", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", - "webpack": "^5.73.0", - "webpack-cli": "^4.10.0" - }, - "files": [ - "dist", - "src" - ], - "dependencies": { - "@stomp/stompjs": "^6.1.2", - "crypto-browserify": "^3.12.0", - "lodash": "^4.17.21", - "uuid": "^8.3.2", - "websocket": "^1.0.34" - } -} diff --git a/lc-esp-sdk-js/rollup.config.js b/lc-esp-sdk-js/rollup.config.js deleted file mode 100644 index a704f1d72..000000000 --- a/lc-esp-sdk-js/rollup.config.js +++ /dev/null @@ -1,39 +0,0 @@ -import resolve from "rollup-plugin-node-resolve"; -import commonjs from "rollup-plugin-commonjs"; -import babel from "rollup-plugin-babel"; -import pkg from "./package.json"; - -export default [ - { - input: "src/index.js", // your entry point - output: { - name: "lc-esp-sdk-js", // package name - file: pkg.browser, - format: "umd", - }, - plugins: [ - resolve(), - commonjs({ - namedExports: { - '../lc-esp-sdk-js/dist/lc-esp-sdk.umd.js': ['ESPSDK'] - } - }), - babel({ - exclude: ["node_modules/**"], - }), - ], - }, - { - input: "src/index.js", // your entry point - output: [ - {file: pkg.main, format: "cjs"}, - {file: pkg.module, format: "es"}, - ], - plugins: [ - babel({ - exclude: ["node_modules/**"], - }), - ], - }, -]; - diff --git a/lc-esp-sdk-js/src/index.js b/lc-esp-sdk-js/src/index.js deleted file mode 100644 index cdf554f83..000000000 --- a/lc-esp-sdk-js/src/index.js +++ /dev/null @@ -1,1275 +0,0 @@ -import {Client} from '@stomp/stompjs'; -import {v4 as uuidv4} from 'uuid'; - -export var ESPSDK = {}; - -ESPSDK.PREFIX_EOPARAM = 'lc.eo'; -ESPSDK.PARAM_CORRELATION_ID = "lc.esp.correlation_id"; -ESPSDK.PARAM_REPLY_TO = "lc.esp.reply_to" -ESPSDK.KEY_EO_ID = '_id'; -ESPSDK.KEY_EO_TYPE = '_type' - -/*** ESP CODE ***/ -console.log('Enhanced Services Platform/SDK/JS mk18 (GIPSY DANGER)'); - -/** - * An ESP address. This class provides utility methods for interacting with ESP-format addresses. The provided - * destination should be dot separated such as "a.b.c". - * - * If isTopic is set to true then this address if for a topic; otherwise, it is for a queue. - * - * @param destination A string destination. - * @param isTopic true/false if the address refers to a topic. - * @constructor - */ -ESPSDK.Address = function (destination, isTopic) { - this.destination = destination.toUpperCase(); - this.isTopic = isTopic; -} - -/** - * Return the address formatted as a STOMP consumer destination. The instance id refers to tha unique id which - * identifies this particular flight of the software. Two clients should not use the same id or undefined results - * will occur. - * - * @param instanceId The instance id for the client. - * @returns {string} The STOMP address. - */ -ESPSDK.Address.prototype.getStompConsumerDestination = function (instanceId) { - // Note that the destination is MQTT format, not ESP format - if (this.isTopic) { - return '/queue/ESP.' + instanceId + '.' + this.destination; - } - return '/queue/' + this.destination; -} - -/** - * Return the address formatted as a STOMP producer destination. - * - * @returns {string} The STOMP address. - */ -ESPSDK.Address.prototype.getStompProducerDestination = function () { - // Note that the destination is MQTT format, not ESP format - if (this.isTopic) { - return '/topic/' + this.destination; - } - return '/queue/' + this.destination; -} - -/** - * Create a new message consumer. - */ -ESPSDK.Consumer = function (espClient, subscribeCall) { - this.espClient = espClient; - this.subscribeCall = subscribeCall; -} - -/** - * Close the consumer and free any associated resources. - */ -ESPSDK.Consumer.prototype.close = function () { - this.sub.unsubscribe(); - this.espClient.consumers.delete(this); -} - -/** - * Private function. Do not call this function. - * - * @constructor - */ -ESPSDK.Producer = function (espClient, destination) { - this.espClient = espClient; - this.destination = destination; -} - -/** - * Close the producer and free any associated resources. - */ -ESPSDK.Producer.prototype.close = function () { - // NOP -} - -/** - * Send a message for which a response is expected. When the reply is received it will be resolved - * to the Promise. If no reply is received before the timeout elapses an Error will be thrown into the - * Promise. Only one reply may be received for any one request. - * - * @param msg The message to send. - * - */ -ESPSDK.Producer.prototype.sendCommand = function (msg, timeoutMs = 60000) { - return new Promise((resolve, reject) => { - const correlator = this.espClient.getCorrelator(); - const correlationId = uuidv4(); - const replyTo = correlator.getDestination(); - this.send(msg, correlationId, replyTo); - correlator.gc(); - // Note that we don't resolve - the correlator will do that later when a response is received - correlator.register(correlationId, function (msg) { - // console.log('Got reply! Resolving sendCommand() promise.'); - // TODO: Handle null case here? - resolve(msg); - }, timeoutMs); - }); -} - -/** - * Send a message on the producer. A correlation ID and reply-to address may optionally be submitted. - * - * @param msg The message to send. - * @param correlationId Optionally specify a correlation ID. - * @param replyTo Optionally specify a reply-to ESP address. - */ -ESPSDK.Producer.prototype.send = function (msg, correlationId, replyTo) { - let stompMsg = {}; - let headers = null; - - stompMsg.destination = this.destination.getStompProducerDestination(); - - stompMsg.body = JSON.stringify(msg); - - if (correlationId != null) { - headers = {}; - headers[ESPSDK.PARAM_CORRELATION_ID] = correlationId; - } - if (replyTo != null) { - if (headers == null) headers = {}; - headers[ESPSDK.PARAM_REPLY_TO] = replyTo; - } - - if (headers != null) { - stompMsg.headers = headers; - } - - this.espClient.getStompClient().publish(stompMsg); -} - -/** - * This class provides a correlation entry for the Correlator class. - * - * @param callback The callback to later call. - * @param timeoutMs How long to wait for a reply in milliseconds. - */ -ESPSDK.Correlation = function (callback, timeoutMs) { - this.expireTime = Date.now() + timeoutMs; - this.callback = callback; -} - -/** - * Determine if the correlation is expired. - * - * @param time - * @returns {boolean} - */ -ESPSDK.Correlation.prototype.isExpired = function (time) { - return time >= this.expireTime; -} - -ESPSDK.Correlation.prototype.getCallback = function () { - return this.callback; -} - -/** - * This class handles correlation of replies and pending event handlers for replies that may be asynchronously - * received in the future. - * - * @param espClient The ESP client to correlate for. - * @constructor - */ -ESPSDK.Correlator = function (espClient) { - // TODO: Allow prefix to be specified - this.destination = 'lc.global.client.' + espClient.getInstanceId() + '.cmd'; - this.pending = new Map(); - this.consumer = null; - this.espClient = espClient; - // We pre-set this so we don't uselessly run early - this.lastGc = new Date(); - this.isGc = false; -} - -/** - * Garbage collect the correlator. This will remove any expired registrations from the pending list and call - * the associated user callbacks. - */ -ESPSDK.Correlator.prototype.gc = function () { - this.isGc = true; - const now = Date.now(); - - if (now > this.lastGc + 1000) { - // console.log('gc timeout not yet reached'); - this.isGc = false; - return; - } - - const toRemove = new Set(); - - this.pending.forEach((value, key) => { - if (value.isExpired(now)) toRemove.add(key); - }); - - toRemove.forEach((cid) => { - // This wholly implies the correlation is valid - const p = this.pending.get(cid).getCallback(); - - // But we do allow null callbacks - if (p != null) { - callback(null); - } else { - console.log('WARNING: Reply promise was null: ' + cid); - } - - this.pending.delete(cid); - }) - - this.isGc = false; -} - -/** - * Create the correlator consumer in the ESP client. - */ -ESPSDK.Correlator.prototype.createConsumer = function () { - const correlator = this; - this.consumer = this.espClient.createConsumer(new ESPSDK.Address(this.destination), - function (msg, correlationId) { - // TODO: We need to be able to get the correlation-id here! - // console.log('REPLY: ' + correlationId + ' => ' + msg); - let correlation = correlator.pending.get(correlationId); - - if (correlation == null) { - console.log('WARNING: Received reply but no correlation registered: ' + correlationId); - return; - } - correlator.pending.delete(correlationId); - // console.log('Calling correlated callback...'); - correlation.getCallback()(msg); - }); - this.gc(); -} - -/** - * Close the correlator and release any associated resources. - */ -ESPSDK.Correlator.prototype.close = function () { - // TODO: Deal with the correlator - if (this.consumer != null) this.consumer.close(); -} - -/** - * Return the destination for this correlator in bare format. - * - * @returns {any} The destination. - */ -ESPSDK.Correlator.prototype.getDestination = function () { - return this.destination; -} - -/** - * Register a new correlator for future processing. When a reply is received the callback will be called - * with the message. If the timeout elapses before a message is received the callback will be called with - * a null argument. - * - * @param id The correlation ID. - * @param callback The callback when a reply is received or the timeout occurs. - * @param timeoutMs The timeout in milliseconds. - */ -ESPSDK.Correlator.prototype.register = function (id, callback, timeoutMs = 60000) { - this.pending.set(id, new ESPSDK.Correlation(callback, timeoutMs)); - this.gc(); -} - -/** - * An Enhanced Services Platform client. This client implementation provides support for ESP mk18 and connects - * to the ESP engine service via STOMP over WebSocket. Multiple ESP clients can be present in a web application - * at any one time. - * - * The URL for LC production is 'ws://esp1.leigh-co.com:52021/ws'. - * - * After the client is created, it must be started by calling the connect() method. - * - * @constructor Create a new Client. - */ -ESPSDK.Client = function (engineURL) { - this.instanceId = uuidv4(); - this.consumers = new Set(); - this.stompClient = new Client({ - brokerURL: engineURL, - debug: function (str) { - console.log(str); - }, - reconnectDelay: 5000, - heartbeatIncoming: 4000, - heartbeatOutgoing: 4000, - }); - this.hasConnected = false; - this.correlator = new ESPSDK.Correlator(this); -} - -/** - * Return the Correlator associated with this client. - * - * @returns {*} The correlator. - */ -ESPSDK.Client.prototype.getCorrelator = function () { - return this.correlator; -} - -/** - * Start the connection to ESP. When the connection is established the promise is fulfilled with the newly created - * client. - */ -ESPSDK.Client.prototype.connect = function () { - return new Promise((resolve) => { - const espClient = this; - this.stompClient.onConnect = function () { - // Subscribe to any consumers we have - - // Note that creating the consumers is actually asynchronous, so here lurks a race condition in the case - // of bare topics, or virtual topics for the time gap between first-registration of the virtual topic. - // In normal operation this should not be an issue. - - espClient.consumers.forEach((value) => { - value.subscribeCall(); - }); - - espClient.getCorrelator().createConsumer(); - - if (!espClient.hasConnected) { - console.log('ESP has connected: ' + resolve); - espClient.hasConnected = true; - resolve(espClient); - } - } - this.stompClient.activate(); - }); -} - -/** - * Stop the connection to ESP. This asynchronously disconnects any underlying network connections. - */ -ESPSDK.Client.prototype.close = function () { - this.stompClient.deactivate(); -} - -/** - * Return the STOMP client associated with this client. - * - * @returns {Client} The STOMP client. - */ -ESPSDK.Client.prototype.getStompClient = function () { - return this.stompClient; -} - -/** - * Return the instance ID for this client. A new instance ID is automatically generated each time an Client - * is created and is unchanging for the life of the client. - * - * @returns {*} The instance ID. - */ -ESPSDK.Client.prototype.getInstanceId = function () { - return this.instanceId; -} - -/** - * Create a new consumer for the specified address. - * - * Multiple consumers for the same address on the same client should not be created. If multiple consumers for the - * same address are created undefined results will occur. - * - * @param address The Address for the consumer. - * @param msgCallback The message callback. This function will be called every time a message is received on the - * consumer. - * @returns {*} - */ -ESPSDK.Client.prototype.createConsumer = function (address, callback) { - const esp = this; - const consumer = new ESPSDK.Consumer(this, function () { - // Note subtly that the subscription may actually not be ready by the time we return, but that is OK. - consumer.sub = esp.stompClient.subscribe(address.getStompConsumerDestination(esp.getInstanceId()), - function (msg) { - // console.log("Received bare message: " + msg); - callback(JSON.parse(msg.body), msg.headers[ESPSDK.PARAM_CORRELATION_ID]); - }); - }); - this.consumers.add(consumer); - consumer.subscribeCall(); - return consumer; -} - -/** - * Create a new producer for the specified destination. - * - * Multiple producers for the same address on the same client should not be created. If multiple producers - * for the same address are created undefined results will occur. - * - * @param address The Address for the producer. - * @returns {ESPSDK.Producer} - */ -ESPSDK.Client.prototype.createProducer = function (address) { - return new ESPSDK.Producer(this, address); -} - -/** - * This class processes an ESP graph stream. It maintains a local copy of the graph and applies the received - * delta messages from the backend service. - * - * @constructor - */ -ESPSDK.GraphStream = function () { - this.graph = null; - this.txid = null; - this.graphIndex = new Map(); - this.changeListener = null; -} - -/** - * Return the current transaction-id for this graph. - */ -ESPSDK.GraphStream.prototype.getTxId = function () { - return this.txid; -} - -/** - * Set the change listener for this graph stream. Only one listener can be set at a time. The listener will be - * called once for every mutation, and the mutation delta will be passed into the function. - * - * @param listener The callback function. - */ -ESPSDK.GraphStream.prototype.setChangeListener = function (callback) { - this.changeListener = callback; -} - -/** - * Process a message from the stream. - * - * This function will queue deltas until a state response is received. The initial graph is established from - * that state response, and once it is loaded, then any pending changes are applied in the order - * in which they were received. - * - * @param msg The message to handle. - */ -ESPSDK.GraphStream.prototype.process = function (msg, callback) { - console.log("Received message: " + JSON.stringify(msg)); - if (this.graph == null) { - this.graph = lc.esp.v18.Graph_state_responseElementDAO.getGraph(msg)[0]; - this.txid = lc.esp.v18.Graph_state_responseElementDAO.getTxid(msg); - console.log('Received graph: ' + this.txid + ' ' + this.graph); - this._index(this.graph); - console.log('Built initial graph index: ' + this.graphIndex.size); - callback(); - } else { - // console.log('Received delta: ' + JSON.stringify(msg)); - const deltaTxid = lc.esp.v18.Graph_txnElementDAO.getTxid(msg); - if (deltaTxid <= this.txid) { - console.log('Received redundant delta.'); - return; - } - - if (deltaTxid !== this.txid + 1) { - console.log('WARNING: Unexpected txid in stream. This/Delta: ' + this.txid + ' ' + deltaTxid); - } - - const changes = lc.esp.v18.Graph_txnElementDAO.getChangeset(msg); - const gs = this; - changes.forEach(function (change) { - gs.processDelta(change); - }); - - console.log('Updated graph: ' + JSON.stringify(this.graph)); - - this.txid = deltaTxid; - } -} - -/** - * Process an individual change. This will apply the given mutation to the graph. - * - * @param change The change EO to process. - */ -ESPSDK.GraphStream.prototype.processDelta = function (change) { - // console.log('Processing delta: ' + JSON.stringify(change)); - - switch (change['_type']) { - case lc.eo.changestream.v1.Attribute_setElementDAO.eoType: { - // For an object we already have, set an attribute. - let id = lc.eo.changestream.v1.Attribute_setElementDAO.getId(change); - let obj = this.graphIndex.get(id); - if (obj == null) { - console.log('WARNING: Could not locate object for change: ' + JSON.stringify(change)); - return; - } - let key = lc.eo.changestream.v1.Attribute_setElementDAO.getKey(change); - let value = lc.eo.changestream.v1.Attribute_setElementDAO.getValue(change); - obj[key] = value; - } - break; - case lc.eo.changestream.v1.Object_addElementDAO.eoType: { - let id = lc.eo.changestream.v1.Object_addElementDAO.getId(change); - let type = lc.eo.changestream.v1.Object_addElementDAO.getType(change); - let obj = {}; - - obj[ESPSDK.KEY_EO_ID] = id; - obj[ESPSDK.KEY_EO_TYPE] = type; - - this.graphIndex.set(id, obj); - } - break; - case lc.eo.changestream.v1.Loop_addElementDAO.eoType: { - let parentId = lc.eo.changestream.v1.Loop_addElementDAO.getId(change); - let parentObj = this.graphIndex.get(parentId); - if (parentObj == null) { - throw 'Could not locate object for change: ' + change; - } - - let childId = lc.eo.changestream.v1.Loop_addElementDAO.getChildId(change); - let childObj = this.graphIndex.get(childId); - if (childObj == null) { - throw 'Could not locate object for change: ' + change; - } - - let key = lc.eo.changestream.v1.Loop_addElementDAO.getKey(change); - - if (!parentObj.hasOwnProperty(key)) { - parentObj[key] = []; - } - parentObj[key].push(childObj); - - } - break; - case lc.eo.changestream.v1.Loop_removeElementDAO.eoType: { - let id = lc.eo.changestream.v1.Loop_removeElementDAO.getId(change); - - let obj = this.graphIndex.get(id); - if (obj == null) { - throw 'Could not locate object for change: ' + change; - } - - let key = lc.eo.changestream.v1.Loop_removeElementDAO.getKey(change); - let idx = lc.eo.changestream.v1.Loop_removeElementDAO.getIndex(change); - let loop = obj[key]; - if (loop == null) { - throw 'Loop unexpectedly empty during change mutation'; - } - - console.log('Located loop for remove: ' + JSON.stringify(loop)); - loop.splice(loop.indexOf(idx), 1); - } - break; - - default: - console.log('WARNING: Received unknown delta: ' + JSON.stringify(change)); - } - if (this.changeListener != null) this.changeListener(change); -} - -/** - * Private function - do not call. - */ -ESPSDK.GraphStream.prototype._index = function (eo) { - const id = eo[ESPSDK.KEY_EO_ID]; - - if (id == null) { - console.log('ERROR: Failed to index EO which does not contain an id: ' + JSON.stringify(eo)); - return; - } - - this.graphIndex.set(id, eo); - - for (const [key, value] of Object.entries(eo)) { - if (Array.isArray(value)) { - value.forEach((child) => { - this._index(child); - }); - } - } -} - -/** - * This class performs the necessary low-level processing to attach to an ESP stream. Note that this class - * does not provide any processing of the contents of the messages whatsoever. - * - * First, a consumer is created for the provided streamAddress, and messages begin to be received. Messages - * that are received at this stage are queued. - * - * Second, the provided request is sent to the provided cmdAddress in order to perform a sync operation. - * - * Third, when the sync command returns a response, that response is sent to the provided callback. - * - * Fourth, all pending messages that had previously been queued are replayed in the order they were received - * to the provided callback. - * - * From this point forward, received messages on the stream address are immediately sent to the provided callback. - * - * This implementation has a major limitation that only one stream may be monitored per address. - * - * @param esp The ESP client. - * @param streamAddress The address to receive stream updates. - * @param cmdAddress The address to send commands to. - * @param request The request message to send to the backend. - * @param callback The callback handler when messages are received. - */ -ESPSDK.Stream = function (esp, streamAddress, cmdAddress, request, callback) { - this.pending = new Set(); - this.isSynced = false; - this.callback = callback; - const s = this; - - this.consumer = esp.createConsumer(streamAddress, function (msg) { - if (s.isSynced === false) { - s.pending.add(msg); - } else { - s.callback(msg); - } - }); - - this.producer = esp.createProducer(cmdAddress); - - this.producer.sendCommand(request).then(function (msg) { - s.callback(msg); - s.isSynced = true; - s.pending.forEach(function (v) { - s.callback(v); - }); - s.pending = null; - }, 5000); -} - -/** - * Close the ESP stream and release any associated resources. - */ -ESPSDK.Stream.prototype.close = function () { - this.producer.close(); - this.consumer.close(); -} - -/******************************************************************************************************************/ - -const lc = {}; -ESPSDK.lc = lc; -lc.eo = {}; -lc.eo.changestream = {}; -lc.eo.changestream.v1 = {}; -lc.eo.changestream.v1.Change_setElementDAO = {}; - -lc.eo.changestream.v1.Change_setElementDAO.eoType = "lc.eo.changestream.v1.change_set"; - -lc.eo.changestream.v1.Change_setElementDAO.KEY_CHANGES = "changes"; - -lc.eo.changestream.v1.Change_setElementDAO.create = function () { - return {'_type': 'lc.eo.changestream.v1.change_set'}; -}; - -lc.eo.changestream.v1.Change_setElementDAO.assertType = function (eo) { - return lc.eo.changestream.v1.Change_setElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=9ec3d43d-9c35-42e0-9b03-e1c9989d8542, data={eoType=changes, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=4225b071-28fe-43d7-ab13-8f7f5e9dfb43, data={text=changes, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.eo.changestream.v1.Change_setElementDAO.getChanges = function (eo) { - if (!lc.eo.changestream.v1.Change_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Change_setElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Change_setElementDAO.KEY_CHANGES)]; - -}; - -lc.eo.changestream.v1.Change_setElementDAO.setChanges = function (eo, value) { - if (!lc.eo.changestream.v1.Change_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Change_setElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Change_setElementDAO.KEY_CHANGES] = value; -}; - -lc.eo.changestream.v1.Loop_setElementDAO = {}; - -lc.eo.changestream.v1.Loop_setElementDAO.eoType = "lc.eo.changestream.v1.loop_set"; - -lc.eo.changestream.v1.Loop_setElementDAO.KEY_ID = "id"; -lc.eo.changestream.v1.Loop_setElementDAO.KEY_KEY = "key"; -lc.eo.changestream.v1.Loop_setElementDAO.KEY_INDEX = "index"; -lc.eo.changestream.v1.Loop_setElementDAO.KEY_CHILDID = "childId"; - -lc.eo.changestream.v1.Loop_setElementDAO.create = function () { - return {'_type': 'lc.eo.changestream.v1.loop_set'}; -}; - -lc.eo.changestream.v1.Loop_setElementDAO.assertType = function (eo) { - return lc.eo.changestream.v1.Loop_setElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=4ff74153-4085-48ff-bf44-446e767b032b, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=ac21b155-c22b-42af-a982-0887bc44273a, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.eo.changestream.v1.Loop_setElementDAO.getId = function (eo) { - if (!lc.eo.changestream.v1.Loop_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_setElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Loop_setElementDAO.KEY_ID)]; - -}; - -lc.eo.changestream.v1.Loop_setElementDAO.setId = function (eo, value) { - if (!lc.eo.changestream.v1.Loop_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_setElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Loop_setElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=6741fb7a-1d96-4984-a0b2-97b3346533c9, data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=2f4e12dd-27d9-45e4-a66b-1853deb08e63, data={text=key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.eo.changestream.v1.Loop_setElementDAO.getKey = function (eo) { - if (!lc.eo.changestream.v1.Loop_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_setElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Loop_setElementDAO.KEY_KEY)]; - -}; - -lc.eo.changestream.v1.Loop_setElementDAO.setKey = function (eo, value) { - if (!lc.eo.changestream.v1.Loop_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_setElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Loop_setElementDAO.KEY_KEY] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=da07d883-e376-4768-bf87-264fcab6354e, data={eoType=index, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=4b44e047-f64e-42b6-adec-03e1abdafebe, data={text=index, locale=en}, meta=null}]} , type=number}, meta=null} */ - - -lc.eo.changestream.v1.Loop_setElementDAO.getIndex = function (eo) { - if (!lc.eo.changestream.v1.Loop_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_setElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Loop_setElementDAO.KEY_INDEX)]; - -}; - -lc.eo.changestream.v1.Loop_setElementDAO.setIndex = function (eo, value) { - if (!lc.eo.changestream.v1.Loop_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_setElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Loop_setElementDAO.KEY_INDEX] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=2365ae19-1874-428c-acba-e41bb41a6675, data={eoType=childId, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=c60848ad-d58e-4ffe-a824-896ec8036cec, data={text=Child EO ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.eo.changestream.v1.Loop_setElementDAO.getChildId = function (eo) { - if (!lc.eo.changestream.v1.Loop_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_setElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Loop_setElementDAO.KEY_CHILDID)]; - -}; - -lc.eo.changestream.v1.Loop_setElementDAO.setChildId = function (eo, value) { - if (!lc.eo.changestream.v1.Loop_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_setElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Loop_setElementDAO.KEY_CHILDID] = value; -}; - -lc.eo.changestream.v1.Loop_removeElementDAO = {}; - -lc.eo.changestream.v1.Loop_removeElementDAO.eoType = "lc.eo.changestream.v1.loop_remove"; - -lc.eo.changestream.v1.Loop_removeElementDAO.KEY_ID = "id"; -lc.eo.changestream.v1.Loop_removeElementDAO.KEY_KEY = "key"; -lc.eo.changestream.v1.Loop_removeElementDAO.KEY_INDEX = "index"; - -lc.eo.changestream.v1.Loop_removeElementDAO.create = function () { - return {'_type': 'lc.eo.changestream.v1.loop_remove'}; -}; - -lc.eo.changestream.v1.Loop_removeElementDAO.assertType = function (eo) { - return lc.eo.changestream.v1.Loop_removeElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=1533eb7f-d4e8-4c2b-ae9b-260cf55de222, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=4e560415-1d5f-4d85-a2f2-78762e2e1c09, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.eo.changestream.v1.Loop_removeElementDAO.getId = function (eo) { - if (!lc.eo.changestream.v1.Loop_removeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_removeElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Loop_removeElementDAO.KEY_ID)]; - -}; - -lc.eo.changestream.v1.Loop_removeElementDAO.setId = function (eo, value) { - if (!lc.eo.changestream.v1.Loop_removeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_removeElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Loop_removeElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=3278dad2-8ee1-4403-8c6c-bd7437ca2ef2, data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=47ce4b59-ad93-47bd-bf17-8a7bbc0ee7e9, data={text=key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.eo.changestream.v1.Loop_removeElementDAO.getKey = function (eo) { - if (!lc.eo.changestream.v1.Loop_removeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_removeElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Loop_removeElementDAO.KEY_KEY)]; - -}; - -lc.eo.changestream.v1.Loop_removeElementDAO.setKey = function (eo, value) { - if (!lc.eo.changestream.v1.Loop_removeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_removeElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Loop_removeElementDAO.KEY_KEY] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=4ebb782c-b20d-4d5c-b1e8-a2cb1d937305, data={eoType=index, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=8e832adb-70ed-4b7e-a49a-d91ea40388aa, data={text=Index, locale=en}, meta=null}]} , type=number}, meta=null} */ - - -lc.eo.changestream.v1.Loop_removeElementDAO.getIndex = function (eo) { - if (!lc.eo.changestream.v1.Loop_removeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_removeElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Loop_removeElementDAO.KEY_INDEX)]; - -}; - -lc.eo.changestream.v1.Loop_removeElementDAO.setIndex = function (eo, value) { - if (!lc.eo.changestream.v1.Loop_removeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_removeElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Loop_removeElementDAO.KEY_INDEX] = value; -}; - -lc.eo.changestream.v1.Loop_addElementDAO = {}; - -lc.eo.changestream.v1.Loop_addElementDAO.eoType = "lc.eo.changestream.v1.loop_add"; - -lc.eo.changestream.v1.Loop_addElementDAO.KEY_ID = "id"; -lc.eo.changestream.v1.Loop_addElementDAO.KEY_KEY = "key"; -lc.eo.changestream.v1.Loop_addElementDAO.KEY_CHILDID = "childId"; - -lc.eo.changestream.v1.Loop_addElementDAO.create = function () { - return {'_type': 'lc.eo.changestream.v1.loop_add'}; -}; - -lc.eo.changestream.v1.Loop_addElementDAO.assertType = function (eo) { - return lc.eo.changestream.v1.Loop_addElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=0711935e-9525-412d-8d0f-d16da9115399, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=399293ae-6729-4c25-ab05-50a4b7417d4f, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.eo.changestream.v1.Loop_addElementDAO.getId = function (eo) { - if (!lc.eo.changestream.v1.Loop_addElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_addElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Loop_addElementDAO.KEY_ID)]; - -}; - -lc.eo.changestream.v1.Loop_addElementDAO.setId = function (eo, value) { - if (!lc.eo.changestream.v1.Loop_addElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_addElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Loop_addElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=ba2c14fe-d602-4d48-a508-8b3affb69bc5, data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=09a08417-5846-475c-869c-aaef3081b774, data={text=key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.eo.changestream.v1.Loop_addElementDAO.getKey = function (eo) { - if (!lc.eo.changestream.v1.Loop_addElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_addElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Loop_addElementDAO.KEY_KEY)]; - -}; - -lc.eo.changestream.v1.Loop_addElementDAO.setKey = function (eo, value) { - if (!lc.eo.changestream.v1.Loop_addElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_addElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Loop_addElementDAO.KEY_KEY] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=60fa1731-2e33-4d16-8d57-d7c26b544f8b, data={eoType=childId, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=78c6e2a3-608a-4353-a12e-4d111d3bd691, data={text=Child EO ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.eo.changestream.v1.Loop_addElementDAO.getChildId = function (eo) { - if (!lc.eo.changestream.v1.Loop_addElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_addElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Loop_addElementDAO.KEY_CHILDID)]; - -}; - -lc.eo.changestream.v1.Loop_addElementDAO.setChildId = function (eo, value) { - if (!lc.eo.changestream.v1.Loop_addElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Loop_addElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Loop_addElementDAO.KEY_CHILDID] = value; -}; - -lc.eo.changestream.v1.Attribute_deleteElementDAO = {}; - -lc.eo.changestream.v1.Attribute_deleteElementDAO.eoType = "lc.eo.changestream.v1.attribute_delete"; - -lc.eo.changestream.v1.Attribute_deleteElementDAO.KEY_ID = "id"; -lc.eo.changestream.v1.Attribute_deleteElementDAO.KEY_KEY = "key"; - -lc.eo.changestream.v1.Attribute_deleteElementDAO.create = function () { - return {'_type': 'lc.eo.changestream.v1.attribute_delete'}; -}; - -lc.eo.changestream.v1.Attribute_deleteElementDAO.assertType = function (eo) { - return lc.eo.changestream.v1.Attribute_deleteElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=6e9a936f-a99f-4e31-ac4e-e4a2880dc555, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=16804526-4aee-4162-8548-4a92db0ba357, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.eo.changestream.v1.Attribute_deleteElementDAO.getId = function (eo) { - if (!lc.eo.changestream.v1.Attribute_deleteElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Attribute_deleteElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Attribute_deleteElementDAO.KEY_ID)]; - -}; - -lc.eo.changestream.v1.Attribute_deleteElementDAO.setId = function (eo, value) { - if (!lc.eo.changestream.v1.Attribute_deleteElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Attribute_deleteElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Attribute_deleteElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=5da04b24-c7d8-40c5-8fe6-93a1ba6721d2, data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=e64330d3-312c-45d4-b1e1-9e871b7126de, data={text=key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.eo.changestream.v1.Attribute_deleteElementDAO.getKey = function (eo) { - if (!lc.eo.changestream.v1.Attribute_deleteElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Attribute_deleteElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Attribute_deleteElementDAO.KEY_KEY)]; - -}; - -lc.eo.changestream.v1.Attribute_deleteElementDAO.setKey = function (eo, value) { - if (!lc.eo.changestream.v1.Attribute_deleteElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Attribute_deleteElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Attribute_deleteElementDAO.KEY_KEY] = value; -}; - -lc.eo.changestream.v1.Attribute_setElementDAO = {}; - -lc.eo.changestream.v1.Attribute_setElementDAO.eoType = "lc.eo.changestream.v1.attribute_set"; - -lc.eo.changestream.v1.Attribute_setElementDAO.KEY_ID = "id"; -lc.eo.changestream.v1.Attribute_setElementDAO.KEY_KEY = "key"; -lc.eo.changestream.v1.Attribute_setElementDAO.KEY_VALUE = "value"; - -lc.eo.changestream.v1.Attribute_setElementDAO.create = function () { - return {'_type': 'lc.eo.changestream.v1.attribute_set'}; -}; - -lc.eo.changestream.v1.Attribute_setElementDAO.assertType = function (eo) { - return lc.eo.changestream.v1.Attribute_setElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=335f4bf5-e278-464b-933e-f4c1a5730c2a, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=12df1cd2-3bf6-4c44-9d9d-6cda4c17ab48, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.eo.changestream.v1.Attribute_setElementDAO.getId = function (eo) { - if (!lc.eo.changestream.v1.Attribute_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Attribute_setElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Attribute_setElementDAO.KEY_ID)]; - -}; - -lc.eo.changestream.v1.Attribute_setElementDAO.setId = function (eo, value) { - if (!lc.eo.changestream.v1.Attribute_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Attribute_setElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Attribute_setElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=8b915420-e117-4a81-ae56-df23b0e0a295, data={eoType=key, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=723f290e-8dda-4eb1-b746-a126ce7e0f6f, data={text=key, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.eo.changestream.v1.Attribute_setElementDAO.getKey = function (eo) { - if (!lc.eo.changestream.v1.Attribute_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Attribute_setElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Attribute_setElementDAO.KEY_KEY)]; - -}; - -lc.eo.changestream.v1.Attribute_setElementDAO.setKey = function (eo, value) { - if (!lc.eo.changestream.v1.Attribute_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Attribute_setElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Attribute_setElementDAO.KEY_KEY] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=b8c223a1-289a-4263-8ec2-28c7d1d562d8, data={eoType=value, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=f8d99001-5d8c-43d9-a7d1-80d4a9751055, data={text=value, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.eo.changestream.v1.Attribute_setElementDAO.getValue = function (eo) { - if (!lc.eo.changestream.v1.Attribute_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Attribute_setElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Attribute_setElementDAO.KEY_VALUE)]; - -}; - -lc.eo.changestream.v1.Attribute_setElementDAO.setValue = function (eo, value) { - if (!lc.eo.changestream.v1.Attribute_setElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Attribute_setElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Attribute_setElementDAO.KEY_VALUE] = value; -}; - -lc.eo.changestream.v1.Object_removeElementDAO = {}; - -lc.eo.changestream.v1.Object_removeElementDAO.eoType = "lc.eo.changestream.v1.object_remove"; - -lc.eo.changestream.v1.Object_removeElementDAO.KEY_ID = "id"; - -lc.eo.changestream.v1.Object_removeElementDAO.create = function () { - return {'_type': 'lc.eo.changestream.v1.object_remove'}; -}; - -lc.eo.changestream.v1.Object_removeElementDAO.assertType = function (eo) { - return lc.eo.changestream.v1.Object_removeElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=46d4084e-92a2-4fd0-bc2c-94876ee5dfb7, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=834d08f4-19ee-441b-ac8b-e42e94dc9254, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.eo.changestream.v1.Object_removeElementDAO.getId = function (eo) { - if (!lc.eo.changestream.v1.Object_removeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Object_removeElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Object_removeElementDAO.KEY_ID)]; - -}; - -lc.eo.changestream.v1.Object_removeElementDAO.setId = function (eo, value) { - if (!lc.eo.changestream.v1.Object_removeElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Object_removeElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Object_removeElementDAO.KEY_ID] = value; -}; - -lc.eo.changestream.v1.Object_addElementDAO = {}; - -lc.eo.changestream.v1.Object_addElementDAO.eoType = "lc.eo.changestream.v1.object_add"; - -lc.eo.changestream.v1.Object_addElementDAO.KEY_ID = "id"; -lc.eo.changestream.v1.Object_addElementDAO.KEY_TYPE = "type"; - -lc.eo.changestream.v1.Object_addElementDAO.create = function () { - return {'_type': 'lc.eo.changestream.v1.object_add'}; -}; - -lc.eo.changestream.v1.Object_addElementDAO.assertType = function (eo) { - return lc.eo.changestream.v1.Object_addElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=eac10692-b4c1-4b64-8a9c-38af2b60c3cf, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=46c85401-794a-434c-b6ec-ed2e6fe5a704, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.eo.changestream.v1.Object_addElementDAO.getId = function (eo) { - if (!lc.eo.changestream.v1.Object_addElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Object_addElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Object_addElementDAO.KEY_ID)]; - -}; - -lc.eo.changestream.v1.Object_addElementDAO.setId = function (eo, value) { - if (!lc.eo.changestream.v1.Object_addElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Object_addElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Object_addElementDAO.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=06ee16ca-749f-4cca-9a83-0d962aa94641, data={eoType=type, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=1013612d-bf3b-44d7-880d-1ebd5268f4fc, data={text=Type, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.eo.changestream.v1.Object_addElementDAO.getType = function (eo) { - if (!lc.eo.changestream.v1.Object_addElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Object_addElementDAO.eoType + "]"; - return eo[(lc.eo.changestream.v1.Object_addElementDAO.KEY_TYPE)]; - -}; - -lc.eo.changestream.v1.Object_addElementDAO.setType = function (eo, value) { - if (!lc.eo.changestream.v1.Object_addElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.eo.changestream.v1.Object_addElementDAO.eoType + "]"; - eo[lc.eo.changestream.v1.Object_addElementDAO.KEY_TYPE] = value; -}; - - -/********************************************************************************************************************/ -lc.esp = {}; -lc.esp.test = {}; -lc.esp.test.v1 = {}; -lc.esp.test.v1.BeaconElementDAO = {}; -lc.esp.test.v1.BeaconElementDAO = {}; - -lc.esp.test.v1.BeaconElementDAO.eoType = "lc.esp.test.v1.beacon"; - -lc.esp.test.v1.BeaconElementDAO.KEY_ID = "id"; -lc.esp.test.v1.BeaconElementDAO.KEY_TIME = "time"; - -lc.esp.test.v1.BeaconElementDAO.create = function () { - return {'_type': 'lc.esp.test.v1.beacon'}; -}; - -lc.esp.test.v1.BeaconElementDAO.assertType = function (eo) { - return this.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.esp.test.v1.BeaconElementDAO.getId = function (eo) { - if (!this.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + this.eoType + "]"; - return eo[(this.KEY_ID)]; - -}; - -lc.esp.test.v1.BeaconElementDAO.setId = function (eo, value) { - if (!this.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + this.eoType + "]"; - eo[this.KEY_ID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', data={eoType=time, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=time, locale=en}, meta=null}]} , type=instant}, meta=null} */ - - -lc.esp.test.v1.BeaconElementDAO.getTime = function (eo) { - if (!this.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + this.eoType + "]"; - return eo[(this.KEY_TIME)]; - -}; - -lc.esp.test.v1.BeaconElementDAO.setTime = function (eo, value) { - if (!this.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + this.eoType + "]"; - eo[this.KEY_TIME] = value; -}; - -lc.esp.test.v1.Greeting_requestElementDAO = {}; - -lc.esp.test.v1.Greeting_requestElementDAO.eoType = "lc.esp.test.v1.greeting_request"; - -lc.esp.test.v1.Greeting_requestElementDAO.KEY_NAME = "name"; - -lc.esp.test.v1.Greeting_requestElementDAO.create = function () { - return {'_type': 'lc.esp.test.v1.greeting_request'}; -}; - -lc.esp.test.v1.Greeting_requestElementDAO.assertType = function (eo) { - return this.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', data={eoType=name, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Name, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.esp.test.v1.Greeting_requestElementDAO.getName = function (eo) { - if (!this.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + this.eoType + "]"; - return eo[(this.KEY_NAME)]; - -}; - -lc.esp.test.v1.Greeting_requestElementDAO.setName = function (eo, value) { - if (!this.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + this.eoType + "]"; - eo[this.KEY_NAME] = value; -}; - -lc.esp.test.v1.Greeting_responseElementDAO = {}; - -lc.esp.test.v1.Greeting_responseElementDAO.eoType = "lc.esp.test.v1.greeting_response"; - -lc.esp.test.v1.Greeting_responseElementDAO.KEY_MESSAGE = "message"; - -lc.esp.test.v1.Greeting_responseElementDAO.create = function () { - return {'_type': 'lc.esp.test.v1.greeting_response'}; -}; - -lc.esp.test.v1.Greeting_responseElementDAO.assertType = function (eo) { - return this.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', data={eoType=message, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', data={text=Message, locale=en}, meta=null}]} , type=string}, meta=null} */ - - -lc.esp.test.v1.Greeting_responseElementDAO.getMessage = function (eo) { - if (!this.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + this.eoType + "]"; - return eo[(this.KEY_MESSAGE)]; - -}; - -lc.esp.test.v1.Greeting_responseElementDAO.setMessage = function (eo, value) { - if (!this.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + this.eoType + "]"; - eo[this.KEY_MESSAGE] = value; -}; - - -/*********************************************************************************************************************/ - -lc.esp = {}; -lc.esp.v18 = {}; -lc.esp.v18.Graph_state_requestElementDAO = {}; - -lc.esp.v18.Graph_state_requestElementDAO.eoType = "lc.esp.v18.graph_state_request"; - - -lc.esp.v18.Graph_state_requestElementDAO.create = function () { - return {'_type': 'lc.esp.v18.graph_state_request'}; -}; - -lc.esp.v18.Graph_state_requestElementDAO.assertType = function (eo) { - return lc.esp.v18.Graph_state_requestElementDAO.eoType === eo['_type']; -}; - -lc.esp.v18.Graph_state_responseElementDAO = {}; - -lc.esp.v18.Graph_state_responseElementDAO.eoType = "lc.esp.v18.graph_state_response"; - -lc.esp.v18.Graph_state_responseElementDAO.KEY_TXID = "txid"; -lc.esp.v18.Graph_state_responseElementDAO.KEY_GRAPH = "graph"; - -lc.esp.v18.Graph_state_responseElementDAO.create = function () { - return {'_type': 'lc.esp.v18.graph_state_response'}; -}; - -lc.esp.v18.Graph_state_responseElementDAO.assertType = function (eo) { - return lc.esp.v18.Graph_state_responseElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=6902986e-ba71-46ac-8976-c59c468fbae5, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=f63a51b4-bb39-451c-8eb6-eb26fa42d0f9, data={text=Transaction ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.esp.v18.Graph_state_responseElementDAO.getTxid = function (eo) { - if (!lc.esp.v18.Graph_state_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.esp.v18.Graph_state_responseElementDAO.eoType + "]"; - return eo[(lc.esp.v18.Graph_state_responseElementDAO.KEY_TXID)]; - -}; - -lc.esp.v18.Graph_state_responseElementDAO.setTxid = function (eo, value) { - if (!lc.esp.v18.Graph_state_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.esp.v18.Graph_state_responseElementDAO.eoType + "]"; - eo[lc.esp.v18.Graph_state_responseElementDAO.KEY_TXID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=de23a3c9-8235-457d-8e80-50412da00b07, data={eoType=graph, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=d89d097d-8ef5-453c-9090-9ac8f0c14bba, data={text=Graph, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.esp.v18.Graph_state_responseElementDAO.getGraph = function (eo) { - if (!lc.esp.v18.Graph_state_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.esp.v18.Graph_state_responseElementDAO.eoType + "]"; - return eo[(lc.esp.v18.Graph_state_responseElementDAO.KEY_GRAPH)]; - -}; - -lc.esp.v18.Graph_state_responseElementDAO.setGraph = function (eo, value) { - if (!lc.esp.v18.Graph_state_responseElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.esp.v18.Graph_state_responseElementDAO.eoType + "]"; - eo[lc.esp.v18.Graph_state_responseElementDAO.KEY_GRAPH] = value; -}; - -lc.esp.v18.Graph_txnElementDAO = {}; - -lc.esp.v18.Graph_txnElementDAO.eoType = "lc.esp.v18.graph_txn"; - -lc.esp.v18.Graph_txnElementDAO.KEY_TXID = "txid"; -lc.esp.v18.Graph_txnElementDAO.KEY_CHANGESET = "changeset"; - -lc.esp.v18.Graph_txnElementDAO.create = function () { - return {'_type': 'lc.esp.v18.graph_txn'}; -}; - -lc.esp.v18.Graph_txnElementDAO.assertType = function (eo) { - return lc.esp.v18.Graph_txnElementDAO.eoType === eo['_type']; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=858ecbd1-a42b-49ed-93d9-ffd0f66127af, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=74b8973c-a1b6-4621-8101-1c02367ddce2, data={text=Transaction ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - -lc.esp.v18.Graph_txnElementDAO.getTxid = function (eo) { - if (!lc.esp.v18.Graph_txnElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.esp.v18.Graph_txnElementDAO.eoType + "]"; - return eo[(lc.esp.v18.Graph_txnElementDAO.KEY_TXID)]; - -}; - -lc.esp.v18.Graph_txnElementDAO.setTxid = function (eo, value) { - if (!lc.esp.v18.Graph_txnElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.esp.v18.Graph_txnElementDAO.eoType + "]"; - eo[lc.esp.v18.Graph_txnElementDAO.KEY_TXID] = value; -}; - - -/* EO{typeName='lc.eo.schema.Attribute', id=d45bb887-03e0-4a9d-b004-cf4fd20e2809, data={eoType=changeset, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=89659871-892d-4a51-8e13-f19e1d696002, data={text=Graph Deltas, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - -lc.esp.v18.Graph_txnElementDAO.getChangeset = function (eo) { - if (!lc.esp.v18.Graph_txnElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.esp.v18.Graph_txnElementDAO.eoType + "]"; - return eo[(lc.esp.v18.Graph_txnElementDAO.KEY_CHANGESET)]; - -}; - -lc.esp.v18.Graph_txnElementDAO.setChangeset = function (eo, value) { - if (!lc.esp.v18.Graph_txnElementDAO.assertType(eo)) throw "Mismatched EO type: [found: " + eo['eoType'] + "] [expected: " + lc.esp.v18.Graph_txnElementDAO.eoType + "]"; - eo[lc.esp.v18.Graph_txnElementDAO.KEY_CHANGESET] = value; -}; - diff --git a/lc-esp-sdk-js/webpack.config.js b/lc-esp-sdk-js/webpack.config.js deleted file mode 100644 index 00b8bf0ae..000000000 --- a/lc-esp-sdk-js/webpack.config.js +++ /dev/null @@ -1,12 +0,0 @@ -const path = require('path'); - -module.exports = { - entry: './src/index.js', - output: { - filename: 'index.js', - path: path.resolve(__dirname, 'dist'), - library: 'ESPSDK', - libraryTarget: 'window', - libraryExport: 'ESPSDK' - }, -}; diff --git a/lc-esp-sdk/LICENSE.md b/lc-esp-sdk/LICENSE.md deleted file mode 100644 index a723b3d26..000000000 --- a/lc-esp-sdk/LICENSE.md +++ /dev/null @@ -1,636 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and -other kinds of works. - -The licenses for most software and other practical works are designed to take -away your freedom to share and change the works. By contrast, the GNU General -Public License is intended to guarantee your freedom to share and change all -versions of a program--to make sure it remains free software for all its users. -We, the Free Software Foundation, use the GNU General Public License for most -of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our -General Public Licenses are designed to make sure that you have the freedom to -distribute copies of free software (and charge for them if you wish), that you -receive source code or can get it if you want it, that you can change the -software or use pieces of it in new free programs, and that you know you can do -these things. - -To protect your rights, we need to prevent others from denying you these rights -or asking you to surrender the rights. Therefore, you have certain -responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must pass on to the recipients the same freedoms that you received. -You must make sure that they, too, receive or can get the source code. And you -must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute - and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that -there is no warranty for this free software. For both users' and authors' sake, -the GPL requires that modified versions be marked as changed, so that their -problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified -versions of the software inside them, although the manufacturer can do so. This -is fundamentally incompatible with the aim of protecting users' freedom to -change the software. The systematic pattern of such abuse occurs in the area of -products for individuals to use, which is precisely where it is most -unacceptable. Therefore, we have designed this version of the GPL to prohibit -the practice for those products. If such problems arise substantially in other -domains, we stand ready to extend this provision to those domains in future -versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States -should not allow patents to restrict development and use of software on -general-purpose computers, but in those that do, we wish to avoid the special -danger that patents applied to a free program could make it effectively -proprietary. To prevent this, the GPL assures that patents cannot be used to -render the program non-free. - -The precise terms and conditions for copying, distribution and modification -follow. - -## TERMS AND CONDITIONS - -### 0. Definitions. - -*This License* refers to version 3 of the GNU General Public License. - -*Copyright* also means copyright-like laws that apply to other kinds of works, -such as semiconductor masks. - -*The Program* refers to any copyrightable work licensed under this License. -Each licensee is addressed as *you*. *Licensees* and *recipients* may be -individuals or organizations. - -To *modify* a work means to copy from or adapt all or part of the work in a -fashion requiring copyright permission, other than the making of an exact copy. -The resulting work is called a *modified version* of the earlier work or a work -*based on* the earlier work. - -A *covered work* means either the unmodified Program or a work based on the -Program. - -To *propagate* a work means to do anything with it that, without permission, -would make you directly or secondarily liable for infringement under applicable -copyright law, except executing it on a computer or modifying a private copy. -Propagation includes copying, distribution (with or without modification), -making available to the public, and in some countries other activities as well. - -To *convey* a work means any kind of propagation that enables other parties to -make or receive copies. Mere interaction with a user through a computer -network, with no transfer of a copy, is not conveying. - -An interactive user interface displays *Appropriate Legal Notices* to the -extent that it includes a convenient and prominently visible feature that - -1. displays an appropriate copyright notice, and -2. tells the user that there is no warranty for the work (except to the - extent that warranties are provided), that licensees may convey the work - under this License, and how to view a copy of this License. - -If the interface presents a list of user commands or options, such as a menu, a -prominent item in the list meets this criterion. - -### 1. Source Code. - -The *source code* for a work means the preferred form of the work for making -modifications to it. *Object code* means any non-source form of a work. - -A *Standard Interface* means an interface that either is an official standard -defined by a recognized standards body, or, in the case of interfaces specified -for a particular programming language, one that is widely used among developers -working in that language. - -The *System Libraries* of an executable work include anything, other than the -work as a whole, that (a) is included in the normal form of packaging a Major -Component, but which is not part of that Major Component, and (b) serves only -to enable use of the work with that Major Component, or to implement a Standard -Interface for which an implementation is available to the public in source code -form. A *Major Component*, in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system (if any) on -which the executable work runs, or a compiler used to produce the work, or an -object code interpreter used to run it. - -The *Corresponding Source* for a work in object code form means all the source -code needed to generate, install, and (for an executable work) run the object -code and to modify the work, including scripts to control those activities. -However, it does not include the work's System Libraries, or general-purpose -tools or generally available free programs which are used unmodified in -performing those activities but which are not part of the work. For example, -Corresponding Source includes interface definition files associated with source -files for the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, such as -by intimate data communication or control flow between those subprograms and -other parts of the work. - -The Corresponding Source need not include anything that users can regenerate -automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. - -### 2. Basic Permissions. - -All rights granted under this License are granted for the term of copyright on -the Program, and are irrevocable provided the stated conditions are met. This -License explicitly affirms your unlimited permission to run the unmodified -Program. The output from running a covered work is covered by this License only -if the output, given its content, constitutes a covered work. This License -acknowledges your rights of fair use or other equivalent, as provided by -copyright law. - -You may make, run and propagate covered works that you do not convey, without -conditions so long as your license otherwise remains in force. You may convey -covered works to others for the sole purpose of having them make modifications -exclusively for you, or provide you with facilities for running those works, -provided that you comply with the terms of this License in conveying all -material for which you do not control copyright. Those thus making or running -the covered works for you must do so exclusively on your behalf, under your -direction and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the -conditions stated below. Sublicensing is not allowed; section 10 makes it -unnecessary. - -### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological measure -under any applicable law fulfilling obligations under article 11 of the WIPO -copyright treaty adopted on 20 December 1996, or similar laws prohibiting or -restricting circumvention of such measures. - -When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention is -effected by exercising rights under this License with respect to the covered -work, and you disclaim any intention to limit operation or modification of the -work as a means of enforcing, against the work's users, your or third parties' -legal rights to forbid circumvention of technological measures. - -### 4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you receive it, -in any medium, provided that you conspicuously and appropriately publish on -each copy an appropriate copyright notice; keep intact all notices stating that -this License and any non-permissive terms added in accord with section 7 apply -to the code; keep intact all notices of the absence of any warranty; and give -all recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may -offer support or warranty protection for a fee. - -### 5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to produce it -from the Program, in the form of source code under the terms of section 4, -provided that you also meet all of these conditions: - -- a) The work must carry prominent notices stating that you modified it, and - giving a relevant date. -- b) The work must carry prominent notices stating that it is released under - this License and any conditions added under section 7. This requirement - modifies the requirement in section 4 to *keep intact all notices*. -- c) You must license the entire work, as a whole, under this License to - anyone who comes into possession of a copy. This License will therefore - apply, along with any applicable section 7 additional terms, to the whole - of the work, and all its parts, regardless of how they are packaged. This - License gives no permission to license the work in any other way, but it - does not invalidate such permission if you have separately received it. -- d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your work need - not make them do so. - -A compilation of a covered work with other separate and independent works, -which are not by their nature extensions of the covered work, and which are not -combined with it such as to form a larger program, in or on a volume of a -storage or distribution medium, is called an *aggregate* if the compilation and -its resulting copyright are not used to limit the access or legal rights of the -compilation's users beyond what the individual works permit. Inclusion of a -covered work in an aggregate does not cause this License to apply to the other -parts of the aggregate. - -### 6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms of sections 4 -and 5, provided that you also convey the machine-readable Corresponding Source -under the terms of this License, in one of these ways: - -- a) Convey the object code in, or embodied in, a physical product (including - a physical distribution medium), accompanied by the Corresponding Source - fixed on a durable physical medium customarily used for software - interchange. -- b) Convey the object code in, or embodied in, a physical product (including - a physical distribution medium), accompanied by a written offer, valid for - at least three years and valid for as long as you offer spare parts or - customer support for that product model, to give anyone who possesses the - object code either -1. a copy of the Corresponding Source for all the software in the product - that is covered by this License, on a durable physical medium - customarily used for software interchange, for a price no more than your - reasonable cost of physically performing this conveying of source, or -2. access to copy the Corresponding Source from a network server at no - charge. -- c) Convey individual copies of the object code with a copy of the written - offer to provide the Corresponding Source. This alternative is allowed only - occasionally and noncommercially, and only if you received the object code - with such an offer, in accord with subsection 6b. -- d) Convey the object code by offering access from a designated place - (gratis or for a charge), and offer equivalent access to the Corresponding - Source in the same way through the same place at no further charge. You - need not require recipients to copy the Corresponding Source along with the - object code. If the place to copy the object code is a network server, the - Corresponding Source may be on a different server operated by you or a - third party) that supports equivalent copying facilities, provided you - maintain clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the Corresponding - Source, you remain obligated to ensure that it is available for as long as - needed to satisfy these requirements. -- e) Convey the object code using peer-to-peer transmission, provided you - inform other peers where the object code and Corresponding Source of the - work are being offered to the general public at no charge under subsection - 6d. - -A separable portion of the object code, whose source code is excluded from the -Corresponding Source as a System Library, need not be included in conveying the -object code work. - -A *User Product* is either - -1. a *consumer product*, which means any tangible personal property which is - normally used for personal, family, or household purposes, or -2. anything designed or sold for incorporation into a dwelling. - -In determining whether a product is a consumer product, doubtful cases shall be -resolved in favor of coverage. For a particular product received by a -particular user, *normally used* refers to a typical or common use of that -class of product, regardless of the status of the particular user or of the way -in which the particular user actually uses, or expects or is expected to use, -the product. A product is a consumer product regardless of whether the product -has substantial commercial, industrial or non-consumer uses, unless such uses -represent the only significant mode of use of the product. - -*Installation Information* for a User Product means any methods, procedures, -authorization keys, or other information required to install and execute -modified versions of a covered work in that User Product from a modified -version of its Corresponding Source. The information must suffice to ensure -that the continued functioning of the modified object code is in no case -prevented or interfered with solely because modification has been made. - -If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as part of a -transaction in which the right of possession and use of the User Product is -transferred to the recipient in perpetuity or for a fixed term (regardless of -how the transaction is characterized), the Corresponding Source conveyed under -this section must be accompanied by the Installation Information. But this -requirement does not apply if neither you nor any third party retains the -ability to install modified object code on the User Product (for example, the -work has been installed in ROM). - -The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates for a -work that has been modified or installed by the recipient, or for the User -Product in which it has been modified or installed. Access to a network may be -denied when the modification itself materially and adversely affects the -operation of the network or violates the rules and protocols for communication -across the network. - -Corresponding Source conveyed, and Installation Information provided, in accord -with this section must be in a format that is publicly documented (and with an -implementation available to the public in source code form), and must require -no special password or key for unpacking, reading or copying. - -### 7. Additional Terms. - -*Additional permissions* are terms that supplement the terms of this License by -making exceptions from one or more of its conditions. Additional permissions -that are applicable to the entire Program shall be treated as though they were -included in this License, to the extent that they are valid under applicable -law. If additional permissions apply only to part of the Program, that part may -be used separately under those permissions, but the entire Program remains -governed by this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any -additional permissions from that copy, or from any part of it. (Additional -permissions may be written to require their own removal in certain cases when -you modify the work.) You may place additional permissions on material, added -by you to a covered work, for which you have or can give appropriate copyright -permission. - -Notwithstanding any other provision of this License, for material you add to a -covered work, you may (if authorized by the copyright holders of that material) -supplement the terms of this License with terms: - -- a) Disclaiming warranty or limiting liability differently from the terms of - sections 15 and 16 of this License; or -- b) Requiring preservation of specified reasonable legal notices or author - attributions in that material or in the Appropriate Legal Notices displayed - by works containing it; or -- c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in reasonable - ways as different from the original version; or -- d) Limiting the use for publicity purposes of names of licensors or authors - of the material; or -- e) Declining to grant rights under trademark law for use of some trade - names, trademarks, or service marks; or -- f) Requiring indemnification of licensors and authors of that material by - anyone who conveys the material (or modified versions of it) with - contractual assumptions of liability to the recipient, for any liability - that these contractual assumptions directly impose on those licensors and - authors. - -All other non-permissive additional terms are considered *further restrictions* -within the meaning of section 10. If the Program as you received it, or any -part of it, contains a notice stating that it is governed by this License along -with a term that is a further restriction, you may remove that term. If a -license document contains a further restriction but permits relicensing or -conveying under this License, you may add to a covered work material governed -by the terms of that license document, provided that the further restriction -does not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, -in the relevant source files, a statement of the additional terms that apply to -those files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a -separately written license, or stated as exceptions; the above requirements -apply either way. - -### 8. Termination. - -You may not propagate or modify a covered work except as expressly provided -under this License. Any attempt otherwise to propagate or modify it is void, -and will automatically terminate your rights under this License (including any -patent licenses granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a -particular copyright holder is reinstated - -- a) provisionally, unless and until the copyright holder explicitly and - finally terminates your license, and -- b) permanently, if the copyright holder fails to notify you of the - violation by some reasonable means prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is reinstated -permanently if the copyright holder notifies you of the violation by some -reasonable means, this is the first time you have received notice of violation -of this License (for any work) from that copyright holder, and you cure the -violation prior to 30 days after your receipt of the notice. - -Termination of your rights under this section does not terminate the licenses -of parties who have received copies or rights from you under this License. If -your rights have been terminated and not permanently reinstated, you do not -qualify to receive new licenses for the same material under section 10. - -### 9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run a copy -of the Program. Ancillary propagation of a covered work occurring solely as a -consequence of using peer-to-peer transmission to receive a copy likewise does -not require acceptance. However, nothing other than this License grants you -permission to propagate or modify any covered work. These actions infringe -copyright if you do not accept this License. Therefore, by modifying or -propagating a covered work, you indicate your acceptance of this License to do -so. - -### 10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically receives a -license from the original licensors, to run, modify and propagate that work, -subject to this License. You are not responsible for enforcing compliance by -third parties with this License. - -An *entity transaction* is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered work -results from an entity transaction, each party to that transaction who receives -a copy of the work also receives whatever licenses to the work the party's -predecessor in interest had or could give under the previous paragraph, plus a -right to possession of the Corresponding Source of the work from the -predecessor in interest, if the predecessor has it or can get it with -reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights -granted or affirmed under this License. For example, you may not impose a -license fee, royalty, or other charge for exercise of rights granted under this -License, and you may not initiate litigation (including a cross-claim or -counterclaim in a lawsuit) alleging that any patent claim is infringed by -making, using, selling, offering for sale, or importing the Program or any -portion of it. - -### 11. Patents. - -A *contributor* is a copyright holder who authorizes use under this License of -the Program or a work on which the Program is based. The work thus licensed is -called the contributor's *contributor version*. - -A contributor's *essential patent claims* are all patent claims owned or -controlled by the contributor, whether already acquired or hereafter acquired, -that would be infringed by some manner, permitted by this License, of making, -using, or selling its contributor version, but do not include claims that would -be infringed only as a consequence of further modification of the contributor -version. For purposes of this definition, *control* includes the right to grant -patent sublicenses in a manner consistent with the requirements of this -License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent -license under the contributor's essential patent claims, to make, use, sell, -offer for sale, import and otherwise run, modify and propagate the contents of -its contributor version. - -In the following three paragraphs, a *patent license* is any express agreement -or commitment, however denominated, not to enforce a patent (such as an express -permission to practice a patent or covenant not to sue for patent -infringement). To *grant* such a patent license to a party means to make such -an agreement or commitment not to enforce a patent against the party. - -If you convey a covered work, knowingly relying on a patent license, and the -Corresponding Source of the work is not available for anyone to copy, free of -charge and under the terms of this License, through a publicly available -network server or other readily accessible means, then you must either - -1. cause the Corresponding Source to be so available, or -2. arrange to deprive yourself of the benefit of the patent license for this - particular work, or -3. arrange, in a manner consistent with the requirements of this License, to - extend the patent license to downstream recipients. - -*Knowingly relying* means you have actual knowledge that, but for the patent -license, your conveying the covered work in a country, or your recipient's use -of the covered work in a country, would infringe one or more identifiable -patents in that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you -convey, or propagate by procuring conveyance of, a covered work, and grant a -patent license to some of the parties receiving the covered work authorizing -them to use, propagate, modify or convey a specific copy of the covered work, -then the patent license you grant is automatically extended to all recipients -of the covered work and works based on it. - -A patent license is *discriminatory* if it does not include within the scope of -its coverage, prohibits the exercise of, or is conditioned on the non-exercise -of one or more of the rights that are specifically granted under this License. -You may not convey a covered work if you are a party to an arrangement with a -third party that is in the business of distributing software, under which you -make payment to the third party based on the extent of your activity of -conveying the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory patent -license - -- a) in connection with copies of the covered work conveyed by you (or copies - made from those copies), or -- b) primarily for and in connection with specific products or compilations - that contain the covered work, unless you entered into that arrangement, or - that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied -license or other defenses to infringement that may otherwise be available to -you under applicable patent law. - -### 12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not excuse -you from the conditions of this License. If you cannot convey a covered work so -as to satisfy simultaneously your obligations under this License and any other -pertinent obligations, then as a consequence you may not convey it at all. For -example, if you agree to terms that obligate you to collect a royalty for -further conveying from those to whom you convey the Program, the only way you -could satisfy both those terms and this License would be to refrain entirely -from conveying the Program. - -### 13. Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have permission to -link or combine any covered work with a work licensed under version 3 of the -GNU Affero General Public License into a single combined work, and to convey -the resulting work. The terms of this License will continue to apply to the -part which is the covered work, but the special requirements of the GNU Affero -General Public License, section 13, concerning interaction through a network -will apply to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU -General Public License from time to time. Such new versions will be similar in -spirit to the present version, but may differ in detail to address new problems -or concerns. - -Each version is given a distinguishing version number. If the Program specifies -that a certain numbered version of the GNU General Public License *or any later -version* applies to it, you have the option of following the terms and -conditions either of that numbered version or of any later version published by -the Free Software Foundation. If the Program does not specify a version number -of the GNU General Public License, you may choose any version ever published by -the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the -GNU General Public License can be used, that proxy's public statement of -acceptance of a version permanently authorizes you to choose that version for -the Program. - -Later license versions may give you additional or different permissions. -However, no additional obligations are imposed on any author or copyright -holder as a result of your choosing to follow a later version. - -### 15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE -LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER -PARTIES PROVIDE THE PROGRAM *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE -QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE -DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION. - -### 16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY -COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS -PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, -INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE -THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED -INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE -PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY -HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -### 17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided above cannot -be given local legal effect according to their terms, reviewing courts shall -apply local law that most closely approximates an absolute waiver of all civil -liability in connection with the Program, unless a warranty or assumption of -liability accompanies a copy of the Program in return for a fee. - -## END OF TERMS AND CONDITIONS ### - -### How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible -use to the public, the best way to achieve this is to make it free software -which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach -them to the start of each source file to most effectively state the exclusion -of warranty; and each file should have at least the *copyright* line and a -pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like -this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate -parts of the General Public License. Of course, your program's commands might -be different; for a GUI interface, you would use an *about box*. - -You should also get your employer (if you work as a programmer) or school, if -any, to sign a *copyright disclaimer* for the program, if necessary. For more -information on this, and how to apply and follow the GNU GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may consider -it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead -of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/lc-esp-sdk/build.gradle b/lc-esp-sdk/build.gradle deleted file mode 100644 index e016fc30a..000000000 --- a/lc-esp-sdk/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} - -group 'leighco' -version '18.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -sourceCompatibility = JavaVersion.VERSION_11 -targetCompatibility = JavaVersion.VERSION_11 - -dependencies { - api project(':lc-zero-sdk') - api project(':lc-eo-json') - api project(':lc-eo-changestream') - // https://mvnrepository.com/artifact/org.apache.activemq/activemq-client - api group: 'org.apache.activemq', name: 'activemq-client', version: '5.17.1' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/AsyncSender.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/AsyncSender.java deleted file mode 100644 index 80c211db9..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/AsyncSender.java +++ /dev/null @@ -1,36 +0,0 @@ -package lc.esp.sdk; - -import lc.mecha.util.BasicallyDangerous; - -import java.util.concurrent.LinkedBlockingQueue; - -/** - * Implementation of an asynchronous sender for {@link ESPMessage} objects. This class - * is useful when you are in a critical section of code (such as a game tick handler) - * and want to send a message, but are unwilling to incur any delay. - *

- * Messages are enqueued in a {@link LinkedBlockingQueue} and a dedicated thread transmits them at rate. - * - * @author Alex Leigh - * @since mk18 (GIPSY DANGER) - */ -public class AsyncSender extends BasicallyDangerous { - private final ESPProducer producer; - private final LinkedBlockingQueue q = new LinkedBlockingQueue<>(); - - public AsyncSender(ESPProducer producer) { - this.producer = producer; - } - - public void send(ESPMessage msg) { - q.add(msg); - } - - @Override - public void runDangerously() throws Exception { - //noinspection InfiniteLoopStatement - while (true) { - producer.send(q.take()); - } - } -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPAddress.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPAddress.java deleted file mode 100644 index 36301ac71..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPAddress.java +++ /dev/null @@ -1,226 +0,0 @@ -package lc.esp.sdk; - -import com.anthonynsimon.url.URL; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.StringAccumulatorV2; -import org.apache.activemq.command.ActiveMQQueue; -import org.apache.activemq.command.ActiveMQTopic; - -import javax.jms.Destination; -import javax.jms.IllegalStateException; -import javax.jms.JMSException; -import javax.jms.Session; -import java.util.Locale; -import java.util.UUID; - -/** - * This class holds a destination address for {@link ESPMessage}s. - * - * @author Alex Leigh - * @since mk18 (GIPSY DANGER) - */ -public class ESPAddress { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ESPAddress.class); - public static final String VIRTUAL_TOPIC_PREFIX = "ESP"; - private final String org; - private final String domain; - private final String service; - private final String name; - private final ESPAddressClass addressClass; - private final ESPMessageClass messageClass; - private final String consumerId; - - public ESPAddress(Destination dst) throws JMSException { - logger.trace("Got destination: {} {}", dst.getClass().toString(), dst.toString()); - - if (dst instanceof ActiveMQQueue) { - // If this is a queue, it is possible it's a virtual consumer. See: ATG-51 - ActiveMQQueue q = (ActiveMQQueue) dst; - String[] path = q.getQueueName().split("\\."); - - if (path.length == 5) { - this.org = path[0]; - this.domain = path[1]; - this.service = path[2]; - this.name = path[3]; - this.messageClass = ESPMessageClass.val(path[4]); - this.addressClass = ESPAddressClass.QUEUE; - this.consumerId = makeConsumerId(); - } else if (path.length == 7) { - this.consumerId = path[1]; - this.org = path[2]; - this.domain = path[3]; - this.service = path[4]; - this.name = path[5]; - this.messageClass = ESPMessageClass.val(path[6]); - this.addressClass = ESPAddressClass.QUEUE; - } else { - throw new IllegalStateException("Unknown address format: " + dst); - } - } else if (dst instanceof ActiveMQTopic) { - ActiveMQTopic q = (ActiveMQTopic) dst; - String[] path = q.getTopicName().split("\\."); - this.org = path[0]; - this.domain = path[1]; - this.service = path[2]; - this.name = path[3]; - this.messageClass = ESPMessageClass.val(path[4]); - this.addressClass = ESPAddressClass.TOPIC; - this.consumerId = makeConsumerId(); - } else { - throw new IllegalStateException("Unknown destination type."); - } - } - - private String makeConsumerId() { - return UUID.randomUUID().toString(); - } - - public ESPAddress(String org, String domain, String service, String name, - ESPAddressClass serviceClass, ESPMessageClass destClass) { - this.org = org; - this.domain = domain; - this.service = service; - this.name = name; - this.addressClass = serviceClass; - this.messageClass = destClass; - this.consumerId = makeConsumerId(); - } - - /** - * Parses a URL in string format. - *

- * queue://name - * topic://name - */ - public ESPAddress(String address) throws Exception { - URL addrUrl = URL.parse(address); - - String[] host = addrUrl.getHostname().split("\\."); - this.addressClass = ESPAddressClass.val(addrUrl.getScheme()); - this.org = host[0]; - this.domain = host[1]; - this.service = host[2]; - this.name = host[3]; - this.messageClass = ESPMessageClass.val(host[4]); - this.consumerId = addrUrl.getUsername(); - } - - public String getDomain() { - return domain; - } - - public String getService() { - return service; - } - - public String getName() { - return name; - } - - public ESPAddressClass getAddressClass() { - return addressClass; - } - - public ESPMessageClass getMessageClass() { - return messageClass; - } - - public String getOrg() { - return org; - } - - @Override - public String toString() { - return "ESPDestination{" + - "org='" + org + '\'' + - ", domain='" + domain + '\'' + - ", service='" + service + '\'' + - ", name='" + name + '\'' + - ", serviceClass=" + addressClass + - ", destClass=" + messageClass + - '}'; - } - - public String toOpenWireBase() { - StringAccumulatorV2 sa = new StringAccumulatorV2("."); - sa.push(org.toUpperCase(Locale.ROOT)); - sa.push(domain.toUpperCase(Locale.ROOT)); - sa.push(service.toUpperCase(Locale.ROOT)); - sa.push(name.toUpperCase(Locale.ROOT)); - return sa.asString(); - } - - /** - * Returns this destination in OpenWire format. Note that the OpenWire address does not include the service - * class, so the caller will need to deal with that appropriately. - */ - public String toOpenWireAddress() { - StringAccumulatorV2 sa = new StringAccumulatorV2("."); - sa.push(org.toUpperCase(Locale.ROOT)); - sa.push(domain.toUpperCase(Locale.ROOT)); - sa.push(service.toUpperCase(Locale.ROOT)); - sa.push(name.toUpperCase(Locale.ROOT)); - sa.push(messageClass.toString().toUpperCase(Locale.ROOT)); - return sa.asString(); - } - - public String toMQTTAddress() { - StringAccumulatorV2 sa = new StringAccumulatorV2("/"); - sa.push(org.toUpperCase(Locale.ROOT)); - sa.push(domain.toUpperCase(Locale.ROOT)); - sa.push(service.toUpperCase(Locale.ROOT)); - sa.push(name.toUpperCase(Locale.ROOT)); - sa.push(messageClass.toString().toUpperCase(Locale.ROOT)); - return sa.asString(); - } - - /** - * Return this destination in STOMP format. - */ - public String toStompAddress() { - StringAccumulatorV2 sa = new StringAccumulatorV2("/"); - sa.push(addressClass.name().toLowerCase(Locale.ROOT)); - sa.push(org.toLowerCase(Locale.ROOT)); - sa.push(domain.toLowerCase(Locale.ROOT)); - sa.push(service.toLowerCase(Locale.ROOT)); - sa.push(name.toLowerCase(Locale.ROOT)); - sa.push(messageClass.toString().toUpperCase(Locale.ROOT)); - return sa.asString(); - } - - public String getConsumerId() { - return consumerId; - } - - /** - * Convert this address to a JMS destination. If the address is for a topic, it will be prefixed with the - * provided consumer ID. Note that the consumer ID is NOT case sensitive. For the purpose of building the - * destination it will be converted to upper-case. - */ - public Destination toConsumerDestination(Session session) throws JMSException { - if (addressClass == ESPAddressClass.QUEUE) { - return session.createQueue(toOpenWireAddress()); - } else if (addressClass == ESPAddressClass.TOPIC) { - return session.createQueue(VIRTUAL_TOPIC_PREFIX + - "." + consumerId.toUpperCase(Locale.ROOT) + "." + toOpenWireAddress()); - } else { - throw new IllegalStateException("Unknown service class."); - } - } - - /** - * Convert the address to a JMS destination without any support for virtual topics. - */ - public Destination toDestination(Session session) throws JMSException { - if (addressClass == ESPAddressClass.QUEUE) { - return session.createQueue(toOpenWireAddress()); - } else if (addressClass == ESPAddressClass.TOPIC) { - return session.createTopic(toOpenWireAddress()); - } else { - throw new IllegalStateException("Unknown service class."); - } - } -} - diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPAddressClass.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPAddressClass.java deleted file mode 100644 index 9edc63a7f..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPAddressClass.java +++ /dev/null @@ -1,24 +0,0 @@ -package lc.esp.sdk; - -import java.util.Locale; - -/** - * This enum defines the semantics for an {@link ESPAddress}. The two options available are topic or queue whose - * nomenclature lines up with JMS and other popular Message Queue implementations. - * - * @author Alex Leigh - * @since mk18 (GIPSY DANGER) - */ -public enum ESPAddressClass { - TOPIC, QUEUE; - - public static ESPAddressClass val(String str) { - switch (str.toLowerCase(Locale.ROOT)) { - case "topic": - return TOPIC; - case "queue": - return QUEUE; - } - throw new IllegalStateException("Unknown class: " + str); - } -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPClient.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPClient.java deleted file mode 100644 index 15857593c..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPClient.java +++ /dev/null @@ -1,95 +0,0 @@ -package lc.esp.sdk; - -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; -import lc.zero.sdk.ZeroActivationIndex; -import lc.zero.sdk.ZeroClient; -import lc.zero.sdk.ZeroServiceConfig; -import org.apache.activemq.ActiveMQConnectionFactory; - -import javax.jms.Connection; -import javax.jms.IllegalStateException; -import javax.jms.JMSException; -import java.security.KeyManagementException; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; - -/** - * Enhanced Services Platform mk17 client. - *

- * This implementation is essentially a wrapper around the ActiveMQ JMS client. We are not adding much functionality - * here other than some protocol semantics which are peculiar to ESP and ensuring that the right dependencies - * are brought into the end-user's project. - *

- * In the future the client will also handle discovery and authentication. Note that authentication with ESP is - * peculiar, so the regular username/password available via normal JMS will not work. - * - * @author Alex Leigh - * @since mk17 (GIPSY DANGER) - */ -public class ESPClient implements AutoCloseable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ESPClient.class); - private ActiveMQConnectionFactory connectionFactory; - private Connection connection; - private final ZeroClient zero = new ZeroClient(); - public static final String SVC_ESP = "lc.esp"; - - public ESPClient() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { - UniversalJob.banner(logger, "Enhanced Services Platform/SDK mk18 (GIPSY DANGER)"); - } - - /** - * Returns the ESPClient's {@link ZeroClient} to the caller. The caller can use this to determine other - * application-specific service configuration. If start() has not been called, this method - * will return null. - */ - public ZeroClient getZero() { - return zero; - } - - /** - * Start the ESP client. This will perform Zero activation. The method blocks until the zero activation - * is successful. - */ - public ESPClient start() throws Exception { - new Thread(zero).start(); - ZeroActivationIndex zai; - - zai = zero.getZai(); - - ZeroServiceConfig espCfg = zai.readConfig(SVC_ESP); - - if (espCfg == null) { - throw new IllegalStateException("No service configuration found in ZERO."); - } - - JSONObject connections = espCfg.getCfg().getJSONObject("connections"); - String openWireUrl = connections.getString("openwire"); - - logger.info("Learned configuration from ZERO. [openwire: {}]", openWireUrl); - - connectionFactory = new ActiveMQConnectionFactory(openWireUrl); - connectionFactory.setUseAsyncSend(true); - connection = getConnectionFactory().createConnection(); - connection.start(); - return this; - } - - /** - * Return the connection factory associated with this client. - */ - public ActiveMQConnectionFactory getConnectionFactory() { - return connectionFactory; - } - - @Override - public void close() throws Exception { - if (connection != null) connection.close(); - } - - public ESPSession createSession() throws JMSException { - return new ESPSession(connection); - } -} \ No newline at end of file diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPConsumer.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPConsumer.java deleted file mode 100644 index 95329908b..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPConsumer.java +++ /dev/null @@ -1,56 +0,0 @@ -package lc.esp.sdk; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import javax.jms.*; - -import static java.lang.Thread.sleep; - -/** - * This class implements a message consumer which synchronously receives messages from an ESP/ENGINE over the - * OpenWire protocol. - * - * The consumer supports a consumerId. This uniquely identifies the consumer in such a manner that all consumers - * with the same consumer ID will compete for messages sent to a topic such that only one of the consumers - * will receive any given messages. See ATG-51 for more information. - * - * @author Alex Leigh - * @since 18.0 (GIPSY DANGER) - */ -public class ESPConsumer implements AutoCloseable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ESPConsumer.class); - private final MessageConsumer consumer; - - public ESPConsumer(ESPAddress destination, Session session) throws JMSException { - Destination d = destination.toConsumerDestination(session); - logger.debug("Created consumer. [destination: {}]", d); - consumer = session.createConsumer(d); - } - - public ESPMessage receive() throws InterruptedException { - while (true) { - try { - Message msg = consumer.receive(); - logger.debug("Received message: {}", msg); - return new ESPMessage(msg); - } catch (Exception e) { - // TODO: Demote to debug when we are ready - logger.info("Received invalid message: " + e); - sleep(100); - } - } - } - - @Override - public void close() throws Exception { - consumer.close(); - } - - @Override - public String toString() { - return "ESPConsumer{" + - "consumer=" + consumer + - '}'; - } -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPMessage.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPMessage.java deleted file mode 100644 index ec7ac237a..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPMessage.java +++ /dev/null @@ -1,206 +0,0 @@ -package lc.esp.sdk; - -import lc.eo.EO; -import lc.eo.EOJsonSerializer; -import lc.mecha.json.JSONArray; -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import org.apache.activemq.command.ActiveMQBytesMessage; - -import javax.jms.IllegalStateException; -import javax.jms.*; -import java.io.Serializable; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Objects; - -public class ESPMessage { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ESPMessage.class); - public static final String KEY_PAYLOAD = "payload"; - public static final String KEY_PARAMETERS = "parameters"; - public static final String KEY_NAME = "name"; - public static final String KEY_VALUE = "value"; - - private JSONObject payload; - private ESPAddress replyTo; - private ESPAddress destination; - private String correlationId; - private final Map parameters = new HashMap<>(); - - public ESPMessage(Message msg) throws JMSException { - logger.debug("Building from message: {}", msg); - - Destination dest = msg.getJMSDestination(); - if (dest != null) { - destination = new ESPAddress(dest); - } - - correlationId = msg.getJMSCorrelationID(); - - Destination dst = msg.getJMSReplyTo(); - if (dst != null) { - replyTo = new ESPAddress(dst); - } - - for (Iterator it = msg.getPropertyNames().asIterator(); it.hasNext(); ) { - String param = it.next(); - parameters.put(param, (Serializable) msg.getObjectProperty(param)); - } - if (msg instanceof TextMessage) { - payload = new JSONObject(((TextMessage) msg).getText()); - } else if (msg instanceof ActiveMQBytesMessage) { - String s = new String(((ActiveMQBytesMessage) msg).getContent().getData()); - payload = new JSONObject(s); - } else { - throw new IllegalStateException("Unknown message type: " + msg.getClass()); - } - } - - /** - * Serialize the entire message into JSON. - */ - public JSONObject toJson() { - JSONObject o = new JSONObject(); - o.put(KEY_PAYLOAD, payload); - JSONArray arr = new JSONArray(); - for (Map.Entry param : parameters.entrySet()) { - arr.put(new JSONObject().put(KEY_NAME, param.getKey()).put(KEY_VALUE, param.getValue())); - } - if (arr.length() > 0) o.put(KEY_PARAMETERS, arr); - return o; - } - - /** - * Return the payload of this message in JSON format. - */ - public JSONObject getPayload() { - return payload; - } - - public EO getPayloadEO() { - logger.debug("Decoding message payload: {}", payload); - return EOJsonSerializer.toEo(payload); - } - - /** - * Set a parameter in the message. This parameter may later be used to filter - * messages during the subscription process (by creating a selector). - * - * All parameters which begin with underscore are reserved by ESP. - */ - public void setParameter(String name, Serializable value) { - parameters.put(name, value); - } - - public ESPMessage() { - - } - - public Message toMessage(Session session) throws JMSException { - TextMessage jms = session.createTextMessage(getPayload().toString()); - - for (Map.Entry param : getParameters().entrySet()) { - jms.setObjectProperty(param.getKey(), param.getValue()); - } - - String correlationId = getCorrelationId(); - if (correlationId != null) jms.setJMSCorrelationID(correlationId); - - ESPAddress replyTo = getReplyTo(); - if (replyTo != null) { - jms.setJMSReplyTo(replyTo.toDestination(session)); - } - - return jms; - } - - public Serializable getParameter(String name) { - return parameters.get(name); - } - - public ESPMessage(JSONObject payload, ESPAddress replyTo, String correlationId) { - this.payload = payload; - this.replyTo = replyTo; - this.correlationId = correlationId; - } - - public void setPayload(JSONObject payload) { - this.payload = payload; - } - - /** - * Set the payload of this ESPMessage to the given {@link EO}. - * - * @param payload The message. - */ - public void setPayload(EO payload) { - this.payload = EOJsonSerializer.toJson(payload); - for (String key : payload.getKeys()) { - if (!payload.isValueLoop(key)) { - // TODO: Natural numbers would have been fine too, no need to convert to string - String s = payload.getValueString(key); - setParameter("lc.eo." + key, s); - } - } - String type = payload.getType(); - setParameter("lc.type", type); - } - - public ESPMessage(JSONObject payload) { - this(payload, null, null); - } - - public ESPMessage(EO payload) { - this(EOJsonSerializer.toJson(payload)); - } - - public String getCorrelationId() { - return correlationId; - } - - public Map getParameters() { - return parameters; - } - - @Override - public String toString() { - return "ESPMessage{" + - "payload=" + payload + - ", replyTo=" + replyTo + - ", destination=" + destination + - ", correlationId='" + correlationId + '\'' + - ", parameters=" + parameters + - '}'; - } - - public ESPAddress getReplyTo() { - return replyTo; - } - - public ESPAddress getDestination() { - return destination; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - ESPMessage that = (ESPMessage) o; - return Objects.equals(payload, that.payload); - } - - @Override - public int hashCode() { - return Objects.hash(payload); - } - - public void setReplyTo(ESPAddress replyTo) { - this.replyTo = replyTo; - } - - public void setCorrelationId(String correlationId) { - this.correlationId = correlationId; - } -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPMessageClass.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPMessageClass.java deleted file mode 100644 index cfde44efc..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPMessageClass.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.esp.sdk; - -import java.util.Locale; - -/** - * This enum contains valid destination classes. It is capable of converting the symantic meaning to the correct - * abbreviation for ESP18 addresses. - * - * @author Alex Leigh - * @since mk18 (GIPSY DANGER) - */ -public enum ESPMessageClass { - TELEMETRY { - public String toString() { - return KEY_TLM; - } - }, - STREAM { - public String toString() { - return KEY_STREAM; - } - }, - COMMAND { - public String toString() { - return KEY_COMMAND; - } - }; - - public static final String KEY_TLM = "tlm"; - public static final String KEY_STREAM = "stm"; - public static final String KEY_COMMAND = "cmd"; - - public static ESPMessageClass val(String str) { - switch (str.toLowerCase(Locale.ROOT)) { - case KEY_TLM: - return TELEMETRY; - case KEY_COMMAND: - return COMMAND; - case KEY_STREAM: - return STREAM; - } - throw new IllegalStateException("Unknown symbol: " + str); - } -} \ No newline at end of file diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPProducer.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPProducer.java deleted file mode 100644 index 4f25efffa..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPProducer.java +++ /dev/null @@ -1,44 +0,0 @@ -package lc.esp.sdk; - -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import javax.jms.*; - -public class ESPProducer implements AutoCloseable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ESPProducer.class); - private final MessageProducer producer; - private final Session session; - - @Deprecated - public ESPProducer(Session session, ESPAddress address) throws JMSException { - this.session = session; - producer = session.createProducer(address.toDestination(session)); - producer.setDeliveryMode(DeliveryMode.PERSISTENT); - } - - public ESPProducer(Session session) throws JMSException { - this.session = session; - producer = session.createProducer(null); - producer.setDeliveryMode(DeliveryMode.PERSISTENT); - } - - @Deprecated - public void send(ESPMessage msg) throws JMSException { - logger.debug("Sending message... {}", msg); - Message jms = msg.toMessage(session); - producer.send(jms); - } - - public void send(ESPAddress destination, ESPMessage msg) throws JMSException { - logger.debug("Sending message... {}", msg); - Message jms = msg.toMessage(session); - producer.send(destination.toDestination(session), jms); - } - - @Override - public void close() throws Exception { - // We leave it to ESPSession to close the session - producer.close(); - } -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPRequestor.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPRequestor.java deleted file mode 100644 index 2d33eff28..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPRequestor.java +++ /dev/null @@ -1,91 +0,0 @@ -package lc.esp.sdk; - -import lc.mecha.lang.FutureResult; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.BasicallyDangerous; - -import javax.jms.*; -import java.util.HashMap; -import java.util.UUID; - -/** - * This class implements a requestor which is capable of sending messages to JMS and waiting for a response. - * - * @author Alex Leigh - * @since 18.1 - */ -public class ESPRequestor extends BasicallyDangerous implements AutoCloseable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ESPRequestor.class); - private final MessageProducer producer; - private final MessageConsumer consumer; - private final Session session; - private final ESPAddress srcAddress; - // FIXME: This will leak futures. We need a timeout map. - private final HashMap> futures = new HashMap<>(); - - protected ESPRequestor(Session session) throws JMSException { - this.session = session; - srcAddress = new ESPAddress("lc", "client", "session", - UUID.randomUUID().toString(), ESPAddressClass.QUEUE, ESPMessageClass.COMMAND); - producer = session.createProducer(null); - consumer = session.createConsumer(srcAddress.toDestination(session)); - } - - /** - * Asynchronously send a message to ESP. A {@link FutureResult} will be returned. If a reply to this message - * is received by the client the FutureResult will be fulfilled. - */ - public FutureResult request(ESPAddress destination, ESPMessage espMessage) - throws JMSException { - - FutureResult future = new FutureResult<>(); - String correlationId = UUID.randomUUID().toString(); - espMessage.setCorrelationId(correlationId); - espMessage.setReplyTo(srcAddress); - Message jms = espMessage.toMessage(session); - futures.put(correlationId, future); - - synchronized (this) { - producer.send(destination.toDestination(session), jms); - } - - return future; - } - - @Override - public void close() { - try { - producer.close(); - } catch (Exception ignored) { - // NOP - } - - try { - consumer.close(); - } catch (Exception ignored) { - // NOP - } - } - - @Override - public void runDangerously() throws Exception { - //noinspection InfiniteLoopStatement - while (true) { - Message msg = consumer.receive(); - String correlationId = msg.getJMSCorrelationID(); - if (correlationId == null) { - logger.warn("Received message with no correlation ID. {}", msg); - break; - } - - FutureResult future = futures.get(correlationId); - if (future == null) { - logger.warn("Received message, but no future. [correlationId: {}]", correlationId); - break; - } - - future.set(new ESPMessage(msg)); - } - } -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPSession.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPSession.java deleted file mode 100644 index 922a8d4bc..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/ESPSession.java +++ /dev/null @@ -1,35 +0,0 @@ -package lc.esp.sdk; - -import javax.jms.Connection; -import javax.jms.JMSException; -import javax.jms.Session; - -public class ESPSession implements AutoCloseable { - private final Session session; - - public ESPSession(Connection connection) throws JMSException { - this.session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - } - - public ESPConsumer createConsumer(ESPAddress destination) throws JMSException { - return new ESPConsumer(destination, session); - } - - @Deprecated - public ESPProducer createProducer(ESPAddress destination) throws JMSException { - return new ESPProducer(session, destination); - } - - public ESPProducer createProducer() throws JMSException { - return new ESPProducer(session); - } - - public ESPRequestor createRequestor() throws JMSException { - return new ESPRequestor(session); - } - - @Override - public void close() throws Exception { - session.close(); - } -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/SchemaGenerator.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/SchemaGenerator.java deleted file mode 100644 index e4dd0ec10..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/SchemaGenerator.java +++ /dev/null @@ -1,60 +0,0 @@ -package lc.esp.sdk; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.eo.schema.DAOGenerator; -import lc.eo.schema.ElementElementDAO; -import lc.eo.schema.SchemaElementDAO; -import lc.eo.schema.util.AttributeUtil; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -public class SchemaGenerator { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SchemaGenerator.class); - private static final String BASE_PKG = "lc.esp.v18"; - - // Observe the procedures of a general alert - - public static EO generate() { - final EO schema = lc.eo.schema.util.SchemaUtil.create(BASE_PKG + ".schema"); - - final EO graphStateRequest = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(graphStateRequest); - ElementElementDAO.setEoType(graphStateRequest, BASE_PKG + ".graph_state_request"); - - final EO graphStateResponse = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(graphStateResponse); - ElementElementDAO.setEoType(graphStateResponse, BASE_PKG + ".graph_state_response"); - ElementElementDAO.getAttributes(graphStateResponse).add(AttributeUtil.create("txid", - "Transaction ID", EODataType.uuid)); - ElementElementDAO.getAttributes(graphStateResponse).add(AttributeUtil.create("graph", - "Graph", EODataType.loop)); - - final EO graphTxn = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(graphTxn); - ElementElementDAO.setEoType(graphTxn, BASE_PKG + ".graph_txn"); - ElementElementDAO.getAttributes(graphTxn).add(AttributeUtil.create("txid", - "Transaction ID", EODataType.uuid)); - ElementElementDAO.getAttributes(graphTxn).add(AttributeUtil.create("changeset", - "Graph Deltas", EODataType.loop)); - - return schema; - } - - public static void main(final String... args) throws IOException { - UniversalJob.banner(logger, "Apotheosis mk3", "2014-2022 Alex Leigh"); - final EO schema = generate(); - final DAOGenerator gen = new DAOGenerator(new File("lc-esp-sdk/src/main/java")); - gen.generateJava("lc.esp.sdk.schema.v18", schema); - try (PrintWriter pw = new PrintWriter(new FileWriter(new File("out.js")))) { - gen.generateEcma5(pw, "lc.esp.v18", schema); - } - logger.info("Generated schema: {}", schema); - } -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_state_requestElementDAO.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_state_requestElementDAO.java deleted file mode 100644 index 0430ab027..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_state_requestElementDAO.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.esp.sdk.schema.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Graph_state_requestElementDAO { - public static final String API_TYPE = "lc.esp.v18.graph_state_request"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - - public static String apiType(final EO eo) { - return eo.getType(); -} - - -} \ No newline at end of file diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_state_responseElementDAO.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_state_responseElementDAO.java deleted file mode 100644 index 01e544232..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_state_responseElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.esp.sdk.schema.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Graph_state_responseElementDAO { - public static final String API_TYPE = "lc.esp.v18.graph_state_response"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_TXID = "txid"; - public static final String KEY_GRAPH = "graph"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=c80e1270-6bf7-4975-8aa2-9af1e12b95c9, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=e543ce40-b6ec-40fd-9a37-69a86d59a601, data={text=Transaction ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_TXID); - } - - public static void setTxid(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=eed7627e-73c0-4b70-ae43-1a875d3a1fee, data={eoType=graph, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=8e425555-6d0d-48ca-a469-957fe1cf4b68, data={text=Graph, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getGraph(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_GRAPH); - } - - public static void setGraph(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_GRAPH, value); - } - - public static void setGraphLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_GRAPH, label); - } - - public static void getLabelOrValueGraph(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_GRAPH); - } - - public static void setIfUnsetGraph(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_GRAPH, value); -} - - -} \ No newline at end of file diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_txnElementDAO.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_txnElementDAO.java deleted file mode 100644 index fa3785557..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/schema/v18/Graph_txnElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.esp.sdk.schema.v18; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Graph_txnElementDAO { - public static final String API_TYPE = "lc.esp.v18.graph_txn"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_TXID = "txid"; - public static final String KEY_CHANGESET = "changeset"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=08538584-26b7-4794-8f44-dcf9ec76a66e, data={eoType=txid, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=b4dd7c34-ac79-4a41-ac90-080d2d66a31e, data={text=Transaction ID, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getTxid(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_TXID); - } - - public static void setTxid(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TXID, value); - } - - public static void setTxidLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TXID, label); - } - - public static void getLabelOrValueTxid(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TXID); - } - - public static void setIfUnsetTxid(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TXID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=91ff25bd-324b-4ecf-879e-56e9854c16b6, data={eoType=changeset, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=43d5a41f-b806-47bb-ac4a-9a5cf90cfe8b, data={text=Graph Deltas, locale=en}, meta=null}]} , type=loop}, meta=null} */ - - - public static lc.eo.EOLoop getChangeset(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueLoop(KEY_CHANGESET); - } - - public static void setChangeset(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_CHANGESET, value); - } - - public static void setChangesetLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_CHANGESET, label); - } - - public static void getLabelOrValueChangeset(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_CHANGESET); - } - - public static void setIfUnsetChangeset(final EO eo, lc.eo.EOLoop value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_CHANGESET, value); -} - - -} \ No newline at end of file diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/service/ChangeStreamer.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/service/ChangeStreamer.java deleted file mode 100644 index a3fef8c18..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/service/ChangeStreamer.java +++ /dev/null @@ -1,39 +0,0 @@ -package lc.esp.sdk.service; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.eo.changestream.ChangeLogger; -import lc.eo.changestream.schema.v1.Change_setElementDAO; -import lc.esp.sdk.ESPAddress; -import lc.esp.sdk.ESPMessage; -import lc.esp.sdk.ESPProducer; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.util.ArrayList; - -/** - * This class implements a {@link ChangeLogger} which transmits changes to an ESP destination. - * - * @author Alex Leigh - * @since mk1 - */ -public class ChangeStreamer implements ChangeLogger { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ChangeStreamer.class); - private final ESPProducer producer; - private final ESPAddress destination; - - public ChangeStreamer(ESPProducer producer, ESPAddress destination) { - this.producer = producer; - this.destination = destination; - } - - @Override - public void comitted(long changeNumber, ArrayList changes) throws Exception { - ESPMessage msg = new ESPMessage(); - EO changeSet = Change_setElementDAO.create(); - Change_setElementDAO.setChanges(changeSet, new EOLoop(changes)); - logger.info("Sending change message: {}", msg); - producer.send(destination, msg); - } -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/service/ESPService.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/service/ESPService.java deleted file mode 100644 index e7b2c2cae..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/service/ESPService.java +++ /dev/null @@ -1,58 +0,0 @@ -package lc.esp.sdk.service; - -import lc.esp.sdk.*; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -/** - * This class implements a basic ESP request/response server. - * - * @author Alex Leigh - * @since 18.1 - */ -public abstract class ESPService implements Runnable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ESPService.class); - private final ESPSession session; - private final ESPAddress address; - - public ESPService(ESPSession session, ESPAddress address) { - this.session = session; - this.address = address; - } - - @Override - public void run() { - try { - try (ESPConsumer consumer = session.createConsumer(address)) { - //noinspection InfiniteLoopStatement - while (true) { - ESPMessage request = consumer.receive(); - ESPAddress replyAddress = request.getReplyTo(); - if (replyAddress != null) { - try (ESPProducer producer = session.createProducer(replyAddress)) { - try { - ESPMessage reply = handle(request); - if (reply != null) { - // We force the correlation ID to match the request. - String correlationId = request.getCorrelationId(); - if (correlationId != null) { - reply.setCorrelationId(correlationId); - } - producer.send(reply); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } else { - logger.warn("Caller did not supply a return address: {}", request); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - public abstract ESPMessage handle(ESPMessage msg) throws Exception; -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/telemetry/TelemetryFrame.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/telemetry/TelemetryFrame.java deleted file mode 100644 index b944b76ba..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/telemetry/TelemetryFrame.java +++ /dev/null @@ -1,130 +0,0 @@ -package lc.esp.sdk.telemetry; - -import lc.esp.sdk.ESPMessage; -import lc.mecha.json.JSONArray; -import lc.mecha.json.JSONObject; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import java.io.Serializable; -import java.time.Instant; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -/** - * A telemetry frame contains zero or more symbols which are grouped together into a single "reading". - *

- * If symbols happen to be inter-related, for example, a X-Y-Z positional vector, then they are said to be of the - * same reading if they are within the same frame. The frame constitutes a particular instant of time. - * - * @author Alex Leigh - * @since mk18 (GIPSY DANGER) - */ -public class TelemetryFrame { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(TelemetryFrame.class); - public static final String KEY_TIME = "time"; - public static final String KEY_TIME_NS = "time_ns"; - public static final String KEY_SYMBOLS = "symbols"; - public static final String PREFIX_TLM = "esp.tlm."; - private final HashSet symbols = new HashSet<>(); - private final HashMap tags = new HashMap<>(); - private final Instant time; - - /** - * Create a TelemetryFrame object from a {@link ESPMessage}. - *

- * All ESP message parameters that begin with "esp.tlm." will be copied into the TelemetryFrame with the TLM. - * removed. - * - * @param msg The message. - */ - public TelemetryFrame(ESPMessage msg) { - JSONObject json = msg.getPayload(); - - logger.trace("Payload: {}", json); - - if (json.has(KEY_TIME)) { - time = Instant.ofEpochMilli(json.optLong(KEY_TIME)); - } else { - // This is actually poor because we don't know how long - // the thing has been sitting in the queue - time = Instant.now(); - } - - JSONArray arr = json.getJSONArray(KEY_SYMBOLS); - for (int i = 0; i < arr.length(); i++) { - JSONObject symJson = arr.getJSONObject(i); - symbols.add(new TelemetrySymbol(symJson)); - } - - for (Map.Entry param : msg.getParameters().entrySet()) { - if (param.getKey().startsWith(PREFIX_TLM)) { - String tagName = param.getKey().substring(PREFIX_TLM.length()); - tags.put(tagName, param.getValue()); - } - } - } - - public TelemetryFrame(Instant time) { - this.time = time; - } - - public Instant getTime() { - return time; - } - - public JSONObject toJson() { - JSONObject frameJson = new JSONObject(); - frameJson.put(KEY_TIME, time.toEpochMilli()); - frameJson.put(KEY_TIME_NS, time.getNano()); - JSONArray symbolsArray = new JSONArray(); - for (TelemetrySymbol s : symbols) { - symbolsArray.put(s.toJson()); - } - if (symbolsArray.length() > 0) { - frameJson.put(KEY_SYMBOLS, symbolsArray); - } - return frameJson; - } - - /** - * Convert this TelemetryFrame to an {@link ESPMessage} in the standard format. This will copy all of the - * telemetry frame tags to the message parameters while prepending the keys with "esp.tlm.". - */ - public ESPMessage toMessage() { - ESPMessage msg = new ESPMessage(); - for (Map.Entry parameter : tags.entrySet()) { - msg.getParameters().put(PREFIX_TLM + parameter.getKey(), parameter.getValue()); - } - msg.setPayload(toJson()); - return msg; - } - - public HashMap getTags() { - return tags; - } - - @Override - public String toString() { - return "TelemetryFrame{" + - "symbols=" + symbols + - ", tags=" + tags + - ", time=" + time + - '}'; - } - - /** - * Return the symbols associated with this frame. - */ - public Set getSymbols() { - return symbols; - } - - public void addSymbol(TelemetrySymbol symbol) { - // This works on the principal that equals() is implemented properly - symbols.add(symbol); - } - -} diff --git a/lc-esp-sdk/src/main/java/lc/esp/sdk/telemetry/TelemetrySymbol.java b/lc-esp-sdk/src/main/java/lc/esp/sdk/telemetry/TelemetrySymbol.java deleted file mode 100644 index 85ccc4542..000000000 --- a/lc-esp-sdk/src/main/java/lc/esp/sdk/telemetry/TelemetrySymbol.java +++ /dev/null @@ -1,131 +0,0 @@ -package lc.esp.sdk.telemetry; - -import lc.mecha.json.JSONObject; - -import java.io.Serializable; -import java.util.Objects; - -/** - * This class holds data about a particular telemetry symbol reading. - *

- * Symbols are meant to be aggregated into {@link TelemetryFrame}s. The frame contains important meta data - * about the symbol, including the time the symbol was valid for. - *

- * When designing symbols, keep in mind that the value of the symbol should never be a set, array, or object. The - * value should be primitive. In cases where a reading is a vector, each part should be split up into an independent - * symbol, and then all those symbols can be represented in a frame to indicated they occurred at the - * same moment/reading. - * - * @author Alex Leigh - * @since mk18 (GIPSY DANGER) - */ -public class TelemetrySymbol { - public static final String KEY_NAME = "name"; - public static final String KEY_VALUE = "value"; - public static final String KEY_UOM = "uom"; - public static final String KEY_LOS = "los"; - public static final String KEY_PRIMARY = "primary"; - private final String name; - private final Serializable value; - private final String uom; - private final boolean isLos; - private final boolean isPrimary; - - public TelemetrySymbol(JSONObject obj) { - name = obj.getString(KEY_NAME); - value = (Serializable) obj.get(KEY_VALUE); - uom = obj.optString(KEY_UOM, null); - isLos = obj.getBoolean(KEY_LOS); - isPrimary = obj.getBoolean(KEY_PRIMARY); - } - - public TelemetrySymbol(String name, Serializable value, boolean isPrimary) { - this.name = name; - this.value = value; - this.uom = null; - this.isLos = false; - this.isPrimary = isPrimary; - } - - public TelemetrySymbol(String name, Serializable value, String uom, boolean isLos, boolean isPrimary) { - this.name = name; - this.value = value; - this.uom = uom; - this.isLos = isLos; - this.isPrimary = isPrimary; - } - - public JSONObject toJson() { - JSONObject obj = new JSONObject(); - obj.put(KEY_NAME, name); - obj.put(KEY_VALUE, value); - obj.put(KEY_UOM, uom); - obj.put(KEY_LOS, isLos); - obj.put(KEY_PRIMARY, isPrimary); - return obj; - } - - @Override - public String toString() { - return "TelemetrySymbol{" + - "name='" + name + '\'' + - ", value=" + value + - ", uom='" + uom + '\'' + - ", isLos=" + isLos + - '}'; - } - - /** - * Returns true> of the symbol is in the Loss Of Signal (LOM) state. - * - * Symbols can be independently in the LOS state; this indicates that the source for the symbol has become unlocked. - * The symbol may or may not contain a value; if it does, that value indicates the last known reading on the symbol - * before the LOS event occurred. - */ - public boolean isLos() { - return isLos; - } - - /** - * Return the unit-of-measure, if any, for this symbol. - */ - public String getUom() { - return uom; - } - - /** - * Return the name for this symbol. - */ - public String getName() { - return name; - } - - /** - * Return the value of this symbol. - */ - public Serializable getValue() { - return value; - } - - /** - * Returns true if this symbol value is primary. A value is considered to be primary if it is a direct - * raw value such as that read directly from a sensor. A value is considered to be secondary if it is the product - * of some calculation, including aggregations, sampling, or other formulas. - */ - public boolean isPrimary() { - return isPrimary; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - TelemetrySymbol that = (TelemetrySymbol) o; - return Objects.equals(name, that.name); - } - - @Override - public int hashCode() { - return Objects.hash(name); - } -} diff --git a/lc-esp-service-clock/LICENSE.md b/lc-esp-service-clock/LICENSE.md deleted file mode 100644 index 692047911..000000000 --- a/lc-esp-service-clock/LICENSE.md +++ /dev/null @@ -1,490 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE - -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds of works. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the -works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all -versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use -the GNU General Public License for most of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make -sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive -source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and -that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. -Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients -the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must -show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. -For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems -will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the software inside them, although -the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the -software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely -where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we stand ready to extend this provision to those -domains in future versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not allow patents to restrict -development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger -that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and modification follow. - -## TERMS AND CONDITIONS - -### 0. Definitions. - -*This License* refers to version 3 of the GNU General Public License. - -*Copyright* also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. - -*The Program* refers to any copyrightable work licensed under this License. Each licensee is addressed as *you*. * -Licensees* and *recipients* may be individuals or organizations. - -To *modify* a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, -other than the making of an exact copy. The resulting work is called a *modified version* of the earlier work or a work -*based on* the earlier work. - -A *covered work* means either the unmodified Program or a work based on the Program. - -To *propagate* a work means to do anything with it that, without permission, would make you directly or secondarily -liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. -Propagation includes copying, distribution (with or without modification), making available to the public, and in some -countries other activities as well. - -To *convey* a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction -with a user through a computer network, with no transfer of a copy, is not conveying. - -An interactive user interface displays *Appropriate Legal Notices* to the extent that it includes a convenient and -prominently visible feature that - -1. displays an appropriate copyright notice, and -2. tells the user that there is no warranty for the work (except to the extent that warranties are provided), that - licensees may convey the work under this License, and how to view a copy of this License. - -If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this -criterion. - -### 1. Source Code. - -The *source code* for a work means the preferred form of the work for making modifications to it. *Object code* means -any non-source form of a work. - -A *Standard Interface* means an interface that either is an official standard defined by a recognized standards body, -or, in the case of interfaces specified for a particular programming language, one that is widely used among developers -working in that language. - -The *System Libraries* of an executable work include anything, other than the work as a whole, that (a) is included in -the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to -enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is -available to the public in source code form. A *Major Component*, in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a -compiler used to produce the work, or an object code interpreter used to run it. - -The *Corresponding Source* for a work in object code form means all the source code needed to generate, install, and ( -for an executable work) run the object code and to modify the work, including scripts to control those activities. -However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs -which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding -Source includes interface definition files associated with source files for the work, and the source code for shared -libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data -communication or control flow between those subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the -Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. - -### 2. Basic Permissions. - -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided -the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. -The output from running a covered work is covered by this License only if the output, given its content, constitutes a -covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, without conditions so long as your license -otherwise remains in force. You may convey covered works to others for the sole purpose of having them make -modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do not control copyright. Those thus making or running -the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that -prohibit them from making any copies of your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not -allowed; section 10 makes it unnecessary. - -### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling -obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or -restricting circumvention of such measures. - -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the -extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you -disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, -your or third parties' legal rights to forbid circumvention of technological measures. - -### 4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating -that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices -of the absence of any warranty; and give all recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for -a fee. - -### 5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source -code under the terms of section 4, provided that you also meet all of these conditions: - -- a) The work must carry prominent notices stating that you modified it, and giving a relevant date. -- b) The work must carry prominent notices stating that it is released under this License and any conditions added under - section 7. This requirement modifies the requirement in section 4 to *keep intact all notices*. -- c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. - This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and - all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other - way, but it does not invalidate such permission if you have separately received it. -- d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program - has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. - -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of -the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or -distribution medium, is called an *aggregate* if the compilation and its resulting copyright are not used to limit the -access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other parts of the aggregate. - -### 6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, in one of these ways: - -- a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), - accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. -- b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), - accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or - customer support for that product model, to give anyone who possesses the object code either - 1. a copy of the Corresponding Source for all the software in the product that is covered by this License, on a - durable physical medium customarily used for software interchange, for a price no more than your reasonable cost - of physically performing this conveying of source, or - 2. access to copy the Corresponding Source from a network server at no charge. -- c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. - This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such - an offer, in accord with subsection 6b. -- d) Convey the object code by offering access from a designated place - (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same - place at no further charge. You need not require recipients to copy the Corresponding Source along with the object - code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server - operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions - next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these - requirements. -- e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and - Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, -need not be included in conveying the object code work. - -A *User Product* is either - -1. a *consumer product*, which means any tangible personal property which is normally used for personal, family, or - household purposes, or -2. anything designed or sold for incorporation into a dwelling. - -In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a -particular product received by a particular user, *normally used* refers to a typical or common use of that class of -product, regardless of the status of the particular user or of the way in which the particular user actually uses, or -expects or is expected to use, the product. A product is a consumer product regardless of whether the product has -substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of -the product. - -*Installation Information* for a User Product means any methods, procedures, authorization keys, or other information -required to install and execute modified versions of a covered work in that User Product from a modified version of its -Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code -is in no case prevented or interfered with solely because modification has been made. - -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the -conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to -the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding -Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not -apply if neither you nor any third party retains the ability to install modified object code on the User Product (for -example, the work has been installed in ROM). - -The requirement to provide Installation Information does not include a requirement to continue to provide support -service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product -in which it has been modified or installed. Access to a network may be denied when the modification itself materially -and adversely affects the operation of the network or violates the rules and protocols for communication across the -network. - -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format -that is publicly documented (and with an implementation available to the public in source code form), and must require -no special password or key for unpacking, reading or copying. - -### 7. Additional Terms. - -*Additional permissions* are terms that supplement the terms of this License by making exceptions from one or more of -its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were -included in this License, to the extent that they are valid under applicable law. If additional permissions apply only -to part of the Program, that part may be used separately under those permissions, but the entire Program remains -governed by this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or -from any part of it. (Additional permissions may be written to require their own removal in certain cases when you -modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have -or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by -the copyright holders of that material) -supplement the terms of this License with terms: - -- a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or -- b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the - Appropriate Legal Notices displayed by works containing it; or -- c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material - be marked in reasonable ways as different from the original version; or -- d) Limiting the use for publicity purposes of names of licensors or authors of the material; or -- e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or -- f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified - versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual - assumptions directly impose on those licensors and authors. - -All other non-permissive additional terms are considered *further restrictions* -within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that -it is governed by this License along with a term that is a further restriction, you may remove that term. If a license -document contains a further restriction but permits relicensing or conveying under this License, you may add to a -covered work material governed by the terms of that license document, provided that the further restriction does not -survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a -statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as -exceptions; the above requirements apply either way. - -### 8. Termination. - -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to -propagate or modify it is void, and will automatically terminate your rights under this License (including any patent -licenses granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated - -- a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and -- b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days - after the cessation. - -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you -of the violation by some reasonable means, this is the first time you have received notice of violation of this -License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the -notice. - -Termination of your rights under this section does not terminate the licenses of parties who have received copies or -rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not -qualify to receive new licenses for the same material under section 10. - -### 9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a -covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not -require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered -work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - -### 10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, -modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third -parties with this License. - -An *entity transaction* is a transaction transferring control of an organization, or substantially all assets of one, or -subdividing an organization, or merging organizations. If propagation of a covered work results from an entity -transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work -the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with -reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For -example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, -and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent -claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - -### 11. Patents. - -A *contributor* is a copyright holder who authorizes use under this License of the Program or a work on which the -Program is based. The work thus licensed is called the contributor's *contributor version*. - -A contributor's *essential patent claims* are all patent claims owned or controlled by the contributor, whether already -acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or -selling its contributor version, but do not include claims that would be infringed only as a consequence of further -modification of the contributor version. For purposes of this definition, *control* includes the right to grant patent -sublicenses in a manner consistent with the requirements of this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential -patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its -contributor version. - -In the following three paragraphs, a *patent license* is any express agreement or commitment, however denominated, not -to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). -To *grant* such a patent license to a party means to make such an agreement or commitment not to enforce a patent -against the party. - -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not -available for anyone to copy, free of charge and under the terms of this License, through a publicly available network -server or other readily accessible means, then you must either - -1. cause the Corresponding Source to be so available, or -2. arrange to deprive yourself of the benefit of the patent license for this particular work, or -3. arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream - recipients. - -*Knowingly relying* means you have actual knowledge that, but for the patent license, your conveying the covered work in -a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in -that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring -conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing -them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is -automatically extended to all recipients of the covered work and works based on it. - -A patent license is *discriminatory* if it does not include within the scope of its coverage, prohibits the exercise of, -or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You -may not convey a covered work if you are a party to an arrangement with a third party that is in the business of -distributing software, under which you make payment to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a -discriminatory patent license - -- a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or -- b) primarily for and in connection with specific products or compilations that contain the covered work, unless you - entered into that arrangement, or that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to -infringement that may otherwise be available to you under applicable patent law. - -### 12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this -License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to -satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence -you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further -conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License -would be to refrain entirely from conveying the Program. - -### 13. Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work -licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the -resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special -requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply -to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to -time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new -problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the -GNU General Public License *or any later version* applies to it, you have the option of following the terms and -conditions either of that numbered version or of any later version published by the Free Software Foundation. If the -Program does not specify a version number of the GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, -that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the -Program. - -Later license versions may give you additional or different permissions. However, no additional obligations are imposed -on any author or copyright holder as a result of your choosing to follow a later version. - -### 15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING -THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR -IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU -ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -### 16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO -MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, -INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM -TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -### 17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to -their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil -liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program -in return for a fee. - -## END OF TERMS AND CONDITIONS ### - -### How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve -this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to -most effectively state the exclusion of warranty; and each file should have at least the *copyright* line and a pointer -to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate parts of the General Public License. Of -course, your program's commands might be different; for a GUI interface, you would use an *about box*. - -You should also get your employer (if you work as a programmer) or school, if any, to sign a *copyright disclaimer* for -the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is -a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/lc-esp-service-clock/build.gradle b/lc-esp-service-clock/build.gradle deleted file mode 100644 index 8369e3188..000000000 --- a/lc-esp-service-clock/build.gradle +++ /dev/null @@ -1,21 +0,0 @@ -plugins { - id 'java' - id 'application' -} - -group 'leighco' -version '18.0' - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-esp-sdk') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/lc-esp-service-clock/src/main/java/lc/esp/service/clock/ClockService.java b/lc-esp-service-clock/src/main/java/lc/esp/service/clock/ClockService.java deleted file mode 100644 index f1e2bd331..000000000 --- a/lc-esp-service-clock/src/main/java/lc/esp/service/clock/ClockService.java +++ /dev/null @@ -1,51 +0,0 @@ -package lc.esp.service.clock; - -import lc.esp.sdk.ESPClient; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.BasicallyDangerous; - -import javax.jms.*; -import java.security.KeyManagementException; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.time.Instant; - -/** - * This is a trivial implementation of an ESP service which provides the current time. This is primarily useful - * for dev/test. - * - * @author Alex Leigh - * @since mk17 (GIPSY DANGER) - */ -public class ClockService extends BasicallyDangerous { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(ClockService.class); - private final ESPClient esp = new ESPClient(); - - public ClockService() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { - } - - public static void main(String[] args) throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { - new ClockService().run(); - } - - @Override - public void runDangerously() throws Exception { - // Unfortunately, ActiveMQ does not support AutoCloseable - esp.start(); - Connection connection = esp.getConnectionFactory().createConnection(); - connection.start(); - Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - Destination destination = session.createTopic("CLOCK"); - MessageProducer producer = session.createProducer(destination); - producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); - - //noinspection InfiniteLoopStatement - while (true) { - TextMessage msg = session.createTextMessage(Instant.now().toString()); - producer.send(msg); - logger.info("Sent: {}", msg); - Thread.sleep(1000); - } - } -} diff --git a/lc-esp-test-sdk/build.gradle b/lc-esp-test-sdk/build.gradle deleted file mode 100644 index 28f8d7381..000000000 --- a/lc-esp-test-sdk/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - id 'java' - id 'java-library' -} - -group 'leighco' -version '1.0' - -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -repositories { - mavenCentral() -} - -dependencies { - api project(':lc-esp-sdk') - api project(':lc-eo-schema') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/BeaconElementDAO.java b/lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/BeaconElementDAO.java deleted file mode 100644 index ed155be61..000000000 --- a/lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/BeaconElementDAO.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.esp.test.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class BeaconElementDAO { - public static final String API_TYPE = "lc.esp.test.v1.beacon"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_ID = "id"; - public static final String KEY_TIME = "time"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=64389e83-225b-4667-9696-5549f910c5df, data={eoType=id, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=a79b11d7-23a5-4829-be8a-72b89a83247e, data={text=id, locale=en}, meta=null}]} , type=uuid}, meta=null} */ - - - public static java.util.UUID getId(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueUUID(KEY_ID); - } - - public static void setId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_ID, value); - } - - public static void setIdLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_ID, label); - } - - public static void getLabelOrValueId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_ID); - } - - public static void setIfUnsetId(final EO eo, java.util.UUID value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_ID, value); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=6fd508b3-c5eb-4a1c-aba7-ececad2137b7, data={eoType=time, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=d8d58a42-9ca8-40a3-ac3d-3c41af39127b, data={text=time, locale=en}, meta=null}]} , type=instant}, meta=null} */ - - - public static java.time.Instant getTime(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueInstant(KEY_TIME); - } - - public static void setTime(final EO eo, java.time.Instant value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_TIME, value); - } - - public static void setTimeLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_TIME, label); - } - - public static void getLabelOrValueTime(final EO eo, java.time.Instant value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_TIME); - } - - public static void setIfUnsetTime(final EO eo, java.time.Instant value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_TIME, value); -} - - -} \ No newline at end of file diff --git a/lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/Greeting_requestElementDAO.java b/lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/Greeting_requestElementDAO.java deleted file mode 100644 index 8e62c3be2..000000000 --- a/lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/Greeting_requestElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.esp.test.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Greeting_requestElementDAO { - public static final String API_TYPE = "lc.esp.test.v1.greeting_request"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_NAME = "name"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=a599db98-7da7-40a1-84a5-149d3c251908, data={eoType=name, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=b0047a64-f1c8-4f09-a3a5-1b36e8a2d1c5, data={text=Name, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getName(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_NAME); - } - - public static void setName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_NAME, value); - } - - public static void setNameLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_NAME, label); - } - - public static void getLabelOrValueName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_NAME); - } - - public static void setIfUnsetName(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_NAME, value); -} - - -} \ No newline at end of file diff --git a/lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/Greeting_responseElementDAO.java b/lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/Greeting_responseElementDAO.java deleted file mode 100644 index b2ad12c3e..000000000 --- a/lc-esp-test-sdk/src/main/java/lc/esp/test/schema/v1/Greeting_responseElementDAO.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2014-2022, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.esp.test.schema.v1; - -import lc.eo.EO; - -/** - * This is a dynamically generated DAO class for accessing objects within an ESP graph. This class - * has been generated by DAOGenerator and should not be modified. - * - * @author DAOGenerator (synthetically generated class) - */ -public final class Greeting_responseElementDAO { - public static final String API_TYPE = "lc.esp.test.v1.greeting_response"; - - public static EO create() { - EO eo = new EO(API_TYPE); - return eo; - } - - public static boolean assertType(final EO eo) { - return eo.getType().equals(API_TYPE); - } - - public static final String KEY_MESSAGE = "message"; - - public static String apiType(final EO eo) { - return eo.getType(); - } - - - /* EO{typeName='lc.eo.schema.Attribute', id=510987cc-038c-48b1-b89d-44a9a48a4997, data={eoType=message, label=EOLoop{array=[EO{typeName='lc.eo.schema.Text', id=8b7a2be8-3194-4f1b-ae05-940ad471fea2, data={text=Message, locale=en}, meta=null}]} , type=string}, meta=null} */ - - - public static java.lang.String getMessage(EO eo) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - return eo.getValueString(KEY_MESSAGE); - } - - public static void setMessage(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValue(KEY_MESSAGE, value); - } - - public static void setMessageLabel(final EO eo, final String label) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setLabel(KEY_MESSAGE, label); - } - - public static void getLabelOrValueMessage(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.getLabelOrValue(KEY_MESSAGE); - } - - public static void setIfUnsetMessage(final EO eo, java.lang.String value) { - if (!assertType(eo)) - throw new IllegalArgumentException("Mismatched EO type: [found: " + eo.getType() + "] [expected: " + API_TYPE + "]"); - eo.setValueIfUnset(KEY_MESSAGE, value); -} - - -} \ No newline at end of file diff --git a/lc-esp-test-sdk/src/main/java/lc/esp/test/sdk/SchemaGenerator.java b/lc-esp-test-sdk/src/main/java/lc/esp/test/sdk/SchemaGenerator.java deleted file mode 100644 index 6fc43c7da..000000000 --- a/lc-esp-test-sdk/src/main/java/lc/esp/test/sdk/SchemaGenerator.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2004-2017, by Alex Leigh. - * All rights reserved. - * - * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE - * The copyright notice above does not evidence any - * actual or intended publication of such source code. - */ - -package lc.esp.test.sdk; - -import lc.eo.EO; -import lc.eo.EODataType; -import lc.eo.schema.DAOGenerator; -import lc.eo.schema.ElementElementDAO; -import lc.eo.schema.SchemaElementDAO; -import lc.eo.schema.util.AttributeUtil; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.UniversalJob; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * Generate the schema for lc-eo-changestream. - * - * @author Alex Leigh - * @since mk1 - */ -public final class SchemaGenerator { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(SchemaGenerator.class); - private static final String BASE_PKG = "lc.esp.test.v1"; - - // Observe the procedures of a general alert - - public static EO generate() { - final EO schema = lc.eo.schema.util.SchemaUtil.create(BASE_PKG + ".schema"); - - final EO loopSet = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(loopSet); - ElementElementDAO.setEoType(loopSet, BASE_PKG + ".beacon"); - ElementElementDAO.getAttributes(loopSet).add(AttributeUtil.create("id", "id", EODataType.uuid)); - ElementElementDAO.getAttributes(loopSet).add(AttributeUtil.create("time", "time", EODataType.instant)); - - final EO helloRequest = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(helloRequest); - ElementElementDAO.setEoType(helloRequest, BASE_PKG + ".greeting_request"); - ElementElementDAO.getAttributes(helloRequest).add(AttributeUtil.create("name", "Name")); - - final EO helloResponse = ElementElementDAO.create(); - SchemaElementDAO.getElements(schema).add(helloResponse); - ElementElementDAO.setEoType(helloResponse, BASE_PKG + ".greeting_response"); - ElementElementDAO.getAttributes(helloResponse).add(AttributeUtil.create("message", "Message")); - - return schema; - } - - public static void main(final String... args) throws IOException { - UniversalJob.banner(logger, "Apotheosis mk3", "2014-2022 Alex Leigh"); - final EO schema = generate(); - final DAOGenerator gen = new DAOGenerator(new File("lc-esp-test-sdk/src/main/java")); - gen.generateJava("lc.esp.test.schema.v1", schema); - try (PrintWriter pw = new PrintWriter(new FileWriter(new File("out.js")))) { - gen.generateEcma5(pw, "lc.esp.test.v1", schema); - } - logger.info("Generated schema: {}", schema); - } -} diff --git a/lc-esp-test-svc/build.gradle b/lc-esp-test-svc/build.gradle deleted file mode 100644 index bf1f61728..000000000 --- a/lc-esp-test-svc/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -plugins { - id 'java' -} - -group 'leighco' -version '1.0' - -repositories { - mavenCentral() -} - -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -dependencies { - implementation project(':lc-esp-test-sdk') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/lc-esp-test-svc/src/main/java/lc/esp/test/svc/BeaconEndpoint.java b/lc-esp-test-svc/src/main/java/lc/esp/test/svc/BeaconEndpoint.java deleted file mode 100644 index d1b404ce2..000000000 --- a/lc-esp-test-svc/src/main/java/lc/esp/test/svc/BeaconEndpoint.java +++ /dev/null @@ -1,59 +0,0 @@ -package lc.esp.test.svc; - -import lc.eo.EO; -import lc.esp.sdk.ESPAddress; -import lc.esp.sdk.ESPMessage; -import lc.esp.sdk.ESPProducer; -import lc.esp.sdk.ESPSession; -import lc.esp.test.schema.v1.BeaconElementDAO; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import javax.jms.JMSException; -import java.time.Instant; -import java.util.UUID; - -/** - * This test service demonstrates the use of a topic. It sends out a beacon message once per second as defined - * by the test schema. - * - * @author Alex Leigh - * @since mk1 - */ -public class BeaconEndpoint implements Runnable { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(BeaconEndpoint.class); - private final ESPProducer producer; - private final ESPAddress destination; - - public BeaconEndpoint(ESPSession session, ESPAddress destination) throws JMSException { - this.producer = session.createProducer(); - this.destination = destination; - } - - @Override - public void run() { - - // public ESPAddress(String org, String domain, String service, String name, - // ESPAddressClass serviceClass, ESPMessageClass destClass) { - - logger.info("Starting beacon..."); - - while (true) { - try { - EO msg = BeaconElementDAO.create(); - BeaconElementDAO.setId(msg, UUID.randomUUID()); - BeaconElementDAO.setTime(msg, Instant.now()); - logger.debug("Sending msg: {}", msg); - producer.send(destination, new ESPMessage(msg)); - } catch (Exception e) { - e.printStackTrace(); - } - - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } - } -} diff --git a/lc-esp-test-svc/src/main/java/lc/esp/test/svc/GraphStreamEndpoint.java b/lc-esp-test-svc/src/main/java/lc/esp/test/svc/GraphStreamEndpoint.java deleted file mode 100644 index 721d59b13..000000000 --- a/lc-esp-test-svc/src/main/java/lc/esp/test/svc/GraphStreamEndpoint.java +++ /dev/null @@ -1,110 +0,0 @@ -package lc.esp.test.svc; - -import lc.eo.EO; -import lc.eo.EOLoop; -import lc.eo.changestream.ChangeLogger; -import lc.eo.changestream.EditContext; -import lc.esp.sdk.ESPAddress; -import lc.esp.sdk.ESPMessage; -import lc.esp.sdk.ESPProducer; -import lc.esp.sdk.ESPSession; -import lc.esp.sdk.schema.v18.Graph_state_responseElementDAO; -import lc.esp.sdk.schema.v18.Graph_txnElementDAO; -import lc.esp.sdk.service.ESPService; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; - -import javax.jms.JMSException; -import java.time.Instant; -import java.util.ArrayList; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock; - -/** - * Reference implementation of a change stream service. This service monotonically provides a changing EO graph - * and provides updates to clients. - * - * @author Alex Leigh - * @since mk1 - */ -public class GraphStreamEndpoint extends ESPService implements Runnable, ChangeLogger { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(GraphStreamEndpoint.class); - private final ESPProducer producer; - private final ESPAddress streamAddress; - private final EO graph = new EO(); - private final EditContext ctx = new EditContext(graph, this); - - private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); - private final Lock readLock = readWriteLock.readLock(); - private final Lock writeLock = readWriteLock.writeLock(); - - private long currentTxnId; - - public GraphStreamEndpoint(ESPSession session, ESPAddress streamAddress, ESPAddress cmdAddress) throws JMSException { - super(session, cmdAddress); - this.producer = session.createProducer(); - this.streamAddress = streamAddress; - } - - @Override - public void run() { - new Thread(new Runnable() { - @Override - public void run() { - while (true) { - try { - writeLock.lock(); - logger.info("Mutating graph... {}", graph); - graph.setValue("time", Instant.now()); - try { - // Note that we'll catch comitted() in our lock - ctx.commit(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } finally { - writeLock.unlock(); - } - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } - } - }).start(); - - super.run(); - } - - @Override - public void comitted(long changeNumber, ArrayList changeSet) throws Exception { - logger.info("Received commit. [txnid: {}] [changeset: {}]", changeNumber, changeSet); - EO txn = Graph_txnElementDAO.create(); - txn.setValue(Graph_txnElementDAO.KEY_TXID, changeNumber); - Graph_txnElementDAO.setChangeset(txn, new EOLoop(changeSet)); - ESPMessage msg = new ESPMessage(txn); - logger.info("Sending message: {}", msg); - producer.send(this.streamAddress, msg); - this.currentTxnId = changeNumber; - } - - public ESPMessage handle(ESPMessage request) { - // We actually don't care about the request at this point, just assume they want the state - try { - readLock.lock(); - EO reply = Graph_state_responseElementDAO.create(); - reply.setValue(Graph_state_responseElementDAO.KEY_TXID, this.currentTxnId); - EOLoop graph = Graph_state_responseElementDAO.getGraph(reply); - - // We do this to avoid resetting the edit tracker on our copy of the graph - graph.addWithoutTracker(this.graph); - - logger.info("Replying to caller: {}", reply); - return new ESPMessage(reply); - } finally { - readLock.unlock(); - } - } -} diff --git a/lc-esp-test-svc/src/main/java/lc/esp/test/svc/GreeterEndpoint.java b/lc-esp-test-svc/src/main/java/lc/esp/test/svc/GreeterEndpoint.java deleted file mode 100644 index 6dfbdd475..000000000 --- a/lc-esp-test-svc/src/main/java/lc/esp/test/svc/GreeterEndpoint.java +++ /dev/null @@ -1,31 +0,0 @@ -package lc.esp.test.svc; - -import lc.eo.EO; -import lc.esp.sdk.ESPAddress; -import lc.esp.sdk.ESPMessage; -import lc.esp.sdk.ESPSession; -import lc.esp.sdk.service.ESPService; -import lc.esp.test.schema.v1.Greeting_requestElementDAO; -import lc.esp.test.schema.v1.Greeting_responseElementDAO; - -/** - * This service waits for a request from clients and returns a greeting that is formulated based on the contents - * of the request. - * - * @author Alex Leigh - * @since mk1 - */ -public class GreeterEndpoint extends ESPService { - public GreeterEndpoint(ESPSession session, ESPAddress destination) throws Exception { - super(session, destination); - } - - @Override - public ESPMessage handle(ESPMessage request) { - EO req = request.getPayloadEO(); - String theirName = Greeting_requestElementDAO.getName(req); - EO reply = Greeting_responseElementDAO.create(); - Greeting_responseElementDAO.setMessage(reply, "Hello, " + theirName); - return new ESPMessage(reply); - } -} diff --git a/lc-esp-test-svc/src/main/java/lc/esp/test/svc/TestService.java b/lc-esp-test-svc/src/main/java/lc/esp/test/svc/TestService.java deleted file mode 100644 index cfc5e6fb0..000000000 --- a/lc-esp-test-svc/src/main/java/lc/esp/test/svc/TestService.java +++ /dev/null @@ -1,55 +0,0 @@ -package lc.esp.test.svc; - -import lc.esp.sdk.ESPAddress; -import lc.esp.sdk.ESPAddressClass; -import lc.esp.sdk.ESPClient; -import lc.esp.sdk.ESPMessageClass; -import lc.mecha.log.MechaLogger; -import lc.mecha.log.MechaLoggerFactory; -import lc.mecha.util.BasicallyDangerous; -import lc.mecha.util.UniversalJob; - -/** - * This service implements example backend service functionality for exercising client implementations. It is intended - * to be used by client developers to test and exercise their sdks and applications. - * - * @author Alex Leigh - * @since mk18 - */ -public class TestService extends BasicallyDangerous { - private static final MechaLogger logger = MechaLoggerFactory.getLogger(TestService.class); - private final ESPClient esp = new ESPClient(); - - public TestService() throws Exception { - esp.start(); - } - - public static void main(String[] args) throws Exception { - UniversalJob.banner(logger, "TestService mk1"); - TestService svc = new TestService(); - svc.run(); - } - - @Override - public void runDangerously() throws Exception { - esp.start(); - - // TODO: Make these configurable - - ESPAddress beaconDestination = new ESPAddress("lc", "global", "test", "beacon", - ESPAddressClass.TOPIC, ESPMessageClass.TELEMETRY); - - ESPAddress greetingDestination = new ESPAddress("lc", "global", "test", "greeting", - ESPAddressClass.QUEUE, ESPMessageClass.COMMAND); - - ESPAddress graphStreamAddress = new ESPAddress("lc", "global", "test", - "graph_stream", ESPAddressClass.TOPIC, ESPMessageClass.STREAM); - - ESPAddress graphStreamCommandAddress = new ESPAddress("lc", "global", - "test", "graph_stream", ESPAddressClass.QUEUE, ESPMessageClass.COMMAND); - - new Thread(new BeaconEndpoint(esp.createSession(), beaconDestination)).start(); - new Thread(new GreeterEndpoint(esp.createSession(), greetingDestination)).start(); - new Thread(new GraphStreamEndpoint(esp.createSession(), graphStreamAddress, graphStreamCommandAddress)).start(); - } -} diff --git a/lc-evelyn-svc/build.gradle b/lc-evelyn-svc/build.gradle deleted file mode 100644 index 50f06a8ab..000000000 --- a/lc-evelyn-svc/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - id 'java' - id 'application' -} - -group 'leighco' -version '2.0' - -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -repositories { - mavenCentral() -} - -dependencies { - implementation project(':lc-esp-cli-sdk') - implementation project(':lc-mecha-calc') - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' -} - -test { - useJUnitPlatform() -} \ No newline at end of file diff --git a/lc-evelyn-svc/src/main/java/lc/evelyn/svc/EvelynCommands.java b/lc-evelyn-svc/src/main/java/lc/evelyn/svc/EvelynCommands.java deleted file mode 100644 index cb54345e5..000000000 --- a/lc-evelyn-svc/src/main/java/lc/evelyn/svc/EvelynCommands.java +++ /dev/null @@ -1,43 +0,0 @@ -package lc.evelyn.svc; - -import lc.esp.cli.sdk.CLIService; -import lc.esp.sdk.ESPAddress; -import lc.esp.sdk.ESPSession; -import lc.mecha.calc.CalcEngine; -import lc.mecha.cli.cmd.BasicCommandProcessor; -import lc.mecha.cli.cmd.CommandHandler; -import lc.mecha.cli.line.BasicLineHandler; - -/** - * This class implements Evelyn's CLI. - * - * @author Alex Leigh - * @since 2.0 - */ -public class EvelynCommands extends CLIService { - private CalcEngine calcEngine = new CalcEngine(); - - public EvelynCommands(ESPSession client, ESPAddress address) { - super(client, address); - setupFrame(); - } - - private void setupFrame() { - BasicCommandProcessor bcp = super.getBcp(); - bcp.addCommandHandler("HELLO", new CommandHandler() { - @Override - public void handle(BasicLineHandler lineHandler, String[] cmd) throws Exception { - lineHandler.write("Hello!", false); - } - }); - - bcp.addCommandHandler("CALC", new CommandHandler() { - @Override - public void handle(BasicLineHandler lineHandler, String[] cmd) throws Exception { - // TODO: This is unsafe as unbounded scripts could be executed by a user - String result = calcEngine.calc(cmd[1]); - lineHandler.write(result, false); - } - }); - } -} \ No newline at end of file diff --git a/lc-evelyn-svc/src/main/java/lc/evelyn/svc/EvelynService.java b/lc-evelyn-svc/src/main/java/lc/evelyn/svc/EvelynService.java deleted file mode 100644 index fcfb60169..000000000 --- a/lc-evelyn-svc/src/main/java/lc/evelyn/svc/EvelynService.java +++ /dev/null @@ -1,27 +0,0 @@ -package lc.evelyn.svc; - -import lc.esp.sdk.ESPAddress; -import lc.esp.sdk.ESPClient; -import lc.mecha.util.BasicallyDangerous; - -/** - * This class implements the "brain" for Evelyn. It uses the CLI model to listen on a ESP queue for remote - * commands. The response of the command is returned to the caller via the CLI mechanics. - * - * @author Alex Leigh - * @since 2.0 - */ -public class EvelynService extends BasicallyDangerous { - public static void main(String[] args) { - new EvelynService().run(); - } - - @Override - public void runDangerously() throws Exception { - ESPClient client = new ESPClient(); - client.start(); - EvelynCommands cli = new EvelynCommands(client.createSession(), - new ESPAddress("queue://svc@lc.global.loa.evelyn.cmd")); - cli.run(); - } -} diff --git a/lc-example-graphql/build.gradle b/lc-example-graphql/build.gradle index 8f8e10a7a..905b36127 100644 --- a/lc-example-graphql/build.gradle +++ b/lc-example-graphql/build.gradle @@ -4,7 +4,7 @@ plugins { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 group 'leigh' -version '18.0' +version '19.0' repositories { mavenCentral() diff --git a/lc-gdn-chef/LICENSE.md b/lc-gdn-chef/LICENSE.md deleted file mode 100644 index 45a627286..000000000 --- a/lc-gdn-chef/LICENSE.md +++ /dev/null @@ -1,492 +0,0 @@ -# GNU GENERAL PUBLIC LICENSE - -Version 3, 29 June 2007 - -Copyright (C) 2007 [Free Software Foundation, Inc.](http://fsf.org/) - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -## Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds of works. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the -works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all -versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use -the GNU General Public License for most of our software; it applies also to any other work released this way by its -authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make -sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive -source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and -that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. -Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: -responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients -the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must -show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: - -1. assert copyright on the software, and -2. offer you this License giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. -For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems -will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the software inside them, although -the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the -software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely -where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we stand ready to extend this provision to those -domains in future versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not allow patents to restrict -development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger -that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and modification follow. - -## TERMS AND CONDITIONS - -### 0. Definitions. - -*This License* refers to version 3 of the GNU General Public License. - -*Copyright* also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. - -*The Program* refers to any copyrightable work licensed under this License. Each licensee is addressed as *you*. * -Licensees* and *recipients* may be individuals or organizations. - -To *modify* a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, -other than the making of an exact copy. The resulting work is called a *modified version* of the earlier work or a work -*based on* the earlier work. - -A *covered work* means either the unmodified Program or a work based on the Program. - -To *propagate* a work means to do anything with it that, without permission, would make you directly or secondarily -liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. -Propagation includes copying, distribution (with or without modification), making available to the public, and in some -countries other activities as well. - -To *convey* a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction -with a user through a computer network, with no transfer of a copy, is not conveying. - -An interactive user interface displays *Appropriate Legal Notices* to the extent that it includes a convenient and -prominently visible feature that - -1. displays an appropriate copyright notice, and -2. tells the user that there is no warranty for the work (except to the extent that warranties are provided), that - licensees may convey the work under this License, and how to view a copy of this License. - -If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this -criterion. - -### 1. Source Code. - -The *source code* for a work means the preferred form of the work for making modifications to it. *Object code* means -any non-source form of a work. - -A *Standard Interface* means an interface that either is an official standard defined by a recognized standards body, -or, in the case of interfaces specified for a particular programming language, one that is widely used among developers -working in that language. - -The *System Libraries* of an executable work include anything, other than the work as a whole, that (a) is included in -the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to -enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is -available to the public in source code form. A *Major Component*, in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a -compiler used to produce the work, or an object code interpreter used to run it. - -The *Corresponding Source* for a work in object code form means all the source code needed to generate, install, and ( -for an executable work) run the object code and to modify the work, including scripts to control those activities. -However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs -which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding -Source includes interface definition files associated with source files for the work, and the source code for shared -libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data -communication or control flow between those subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the -Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. - -### 2. Basic Permissions. - -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided -the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. -The output from running a covered work is covered by this License only if the output, given its content, constitutes a -covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, without conditions so long as your license -otherwise remains in force. You may convey covered works to others for the sole purpose of having them make -modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do not control copyright. Those thus making or running -the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that -prohibit them from making any copies of your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not -allowed; section 10 makes it unnecessary. - -### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling -obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or -restricting circumvention of such measures. - -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the -extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you -disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, -your or third parties' legal rights to forbid circumvention of technological measures. - -### 4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating -that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices -of the absence of any warranty; and give all recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for -a fee. - -### 5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source -code under the terms of section 4, provided that you also meet all of these conditions: - -- a) The work must carry prominent notices stating that you modified it, and giving a relevant date. -- b) The work must carry prominent notices stating that it is released under this License and any conditions added under - section 7. This requirement modifies the requirement in section 4 to *keep intact all notices*. -- c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. - This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and - all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other - way, but it does not invalidate such permission if you have separately received it. -- d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program - has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. - -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of -the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or -distribution medium, is called an *aggregate* if the compilation and its resulting copyright are not used to limit the -access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other parts of the aggregate. - -### 6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, in one of these ways: - -- a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), - accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. -- b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), - accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or - customer support for that product model, to give anyone who possesses the object code either - -1. a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable - physical medium customarily used for software interchange, for a price no more than your reasonable cost of - physically performing this conveying of source, or -2. access to copy the Corresponding Source from a network server at no charge. - -- c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. - This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such - an offer, in accord with subsection 6b. -- d) Convey the object code by offering access from a designated place - (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same - place at no further charge. You need not require recipients to copy the Corresponding Source along with the object - code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server - operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions - next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these - requirements. -- e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and - Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, -need not be included in conveying the object code work. - -A *User Product* is either - -1. a *consumer product*, which means any tangible personal property which is normally used for personal, family, or - household purposes, or -2. anything designed or sold for incorporation into a dwelling. - -In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a -particular product received by a particular user, *normally used* refers to a typical or common use of that class of -product, regardless of the status of the particular user or of the way in which the particular user actually uses, or -expects or is expected to use, the product. A product is a consumer product regardless of whether the product has -substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of -the product. - -*Installation Information* for a User Product means any methods, procedures, authorization keys, or other information -required to install and execute modified versions of a covered work in that User Product from a modified version of its -Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code -is in no case prevented or interfered with solely because modification has been made. - -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the -conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to -the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding -Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not -apply if neither you nor any third party retains the ability to install modified object code on the User Product (for -example, the work has been installed in ROM). - -The requirement to provide Installation Information does not include a requirement to continue to provide support -service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product -in which it has been modified or installed. Access to a network may be denied when the modification itself materially -and adversely affects the operation of the network or violates the rules and protocols for communication across the -network. - -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format -that is publicly documented (and with an implementation available to the public in source code form), and must require -no special password or key for unpacking, reading or copying. - -### 7. Additional Terms. - -*Additional permissions* are terms that supplement the terms of this License by making exceptions from one or more of -its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were -included in this License, to the extent that they are valid under applicable law. If additional permissions apply only -to part of the Program, that part may be used separately under those permissions, but the entire Program remains -governed by this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or -from any part of it. (Additional permissions may be written to require their own removal in certain cases when you -modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have -or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by -the copyright holders of that material) -supplement the terms of this License with terms: - -- a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or -- b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the - Appropriate Legal Notices displayed by works containing it; or -- c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material - be marked in reasonable ways as different from the original version; or -- d) Limiting the use for publicity purposes of names of licensors or authors of the material; or -- e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or -- f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified - versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual - assumptions directly impose on those licensors and authors. - -All other non-permissive additional terms are considered *further restrictions* -within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that -it is governed by this License along with a term that is a further restriction, you may remove that term. If a license -document contains a further restriction but permits relicensing or conveying under this License, you may add to a -covered work material governed by the terms of that license document, provided that the further restriction does not -survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a -statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as -exceptions; the above requirements apply either way. - -### 8. Termination. - -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to -propagate or modify it is void, and will automatically terminate your rights under this License (including any patent -licenses granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated - -- a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and -- b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days - after the cessation. - -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you -of the violation by some reasonable means, this is the first time you have received notice of violation of this -License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the -notice. - -Termination of your rights under this section does not terminate the licenses of parties who have received copies or -rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not -qualify to receive new licenses for the same material under section 10. - -### 9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a -covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not -require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered -work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - -### 10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, -modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third -parties with this License. - -An *entity transaction* is a transaction transferring control of an organization, or substantially all assets of one, or -subdividing an organization, or merging organizations. If propagation of a covered work results from an entity -transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work -the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with -reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For -example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, -and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent -claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - -### 11. Patents. - -A *contributor* is a copyright holder who authorizes use under this License of the Program or a work on which the -Program is based. The work thus licensed is called the contributor's *contributor version*. - -A contributor's *essential patent claims* are all patent claims owned or controlled by the contributor, whether already -acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or -selling its contributor version, but do not include claims that would be infringed only as a consequence of further -modification of the contributor version. For purposes of this definition, *control* includes the right to grant patent -sublicenses in a manner consistent with the requirements of this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential -patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its -contributor version. - -In the following three paragraphs, a *patent license* is any express agreement or commitment, however denominated, not -to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). -To *grant* such a patent license to a party means to make such an agreement or commitment not to enforce a patent -against the party. - -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not -available for anyone to copy, free of charge and under the terms of this License, through a publicly available network -server or other readily accessible means, then you must either - -1. cause the Corresponding Source to be so available, or -2. arrange to deprive yourself of the benefit of the patent license for this particular work, or -3. arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream - recipients. - -*Knowingly relying* means you have actual knowledge that, but for the patent license, your conveying the covered work in -a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in -that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring -conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing -them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is -automatically extended to all recipients of the covered work and works based on it. - -A patent license is *discriminatory* if it does not include within the scope of its coverage, prohibits the exercise of, -or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You -may not convey a covered work if you are a party to an arrangement with a third party that is in the business of -distributing software, under which you make payment to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a -discriminatory patent license - -- a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or -- b) primarily for and in connection with specific products or compilations that contain the covered work, unless you - entered into that arrangement, or that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to -infringement that may otherwise be available to you under applicable patent law. - -### 12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this -License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to -satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence -you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further -conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License -would be to refrain entirely from conveying the Program. - -### 13. Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work -licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the -resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special -requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply -to the combination as such. - -### 14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to -time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new -problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the -GNU General Public License *or any later version* applies to it, you have the option of following the terms and -conditions either of that numbered version or of any later version published by the Free Software Foundation. If the -Program does not specify a version number of the GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, -that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the -Program. - -Later license versions may give you additional or different permissions. However, no additional obligations are imposed -on any author or copyright holder as a result of your choosing to follow a later version. - -### 15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING -THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR -IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU -ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -### 16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO -MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, -INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM -TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -### 17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to -their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil -liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program -in return for a fee. - -## END OF TERMS AND CONDITIONS ### - -### How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve -this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to -most effectively state the exclusion of warranty; and each file should have at least the *copyright* line and a pointer -to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w` and `show c` should show the appropriate parts of the General Public License. Of -course, your program's commands might be different; for a GUI interface, you would use an *about box*. - -You should also get your employer (if you work as a programmer) or school, if any, to sign a *copyright disclaimer* for -the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see -[http://www.gnu.org/licenses/](http://www.gnu.org/licenses/). - -The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is -a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If -this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -[http://www.gnu.org/philosophy/why-not-lgpl.html](http://www.gnu.org/philosophy/why-not-lgpl.html). diff --git a/lc-gdn-chef/cookbooks/acme/.rubocop.yml b/lc-gdn-chef/cookbooks/acme/.rubocop.yml deleted file mode 100644 index 65165307e..000000000 --- a/lc-gdn-chef/cookbooks/acme/.rubocop.yml +++ /dev/null @@ -1,6 +0,0 @@ -AllCops: - TargetChefVersion: 17.latest -Chef/Modernize/FoodcriticComments: - Enabled: true -Chef/Style/CopyrightCommentFormat: - Enabled: true diff --git a/lc-gdn-chef/cookbooks/acme/Berksfile b/lc-gdn-chef/cookbooks/acme/Berksfile deleted file mode 100644 index c6b4e7a5b..000000000 --- a/lc-gdn-chef/cookbooks/acme/Berksfile +++ /dev/null @@ -1,8 +0,0 @@ -source 'https://supermarket.chef.io' - -group :integration do - cookbook 'acme_client', path: 'test/fixtures/cookbooks/acme_client' - cookbook 'acme_server', path: 'test/fixtures/cookbooks/acme_server' -end - -metadata diff --git a/lc-gdn-chef/cookbooks/acme/Berksfile.lock b/lc-gdn-chef/cookbooks/acme/Berksfile.lock deleted file mode 100644 index de9191787..000000000 --- a/lc-gdn-chef/cookbooks/acme/Berksfile.lock +++ /dev/null @@ -1,22 +0,0 @@ -DEPENDENCIES - acme - path: . - metadata: true - acme_client - path: test/fixtures/cookbooks/acme_client - acme_server - path: test/fixtures/cookbooks/acme_server - -GRAPH - acme (4.1.4) - acme_client (0.1.0) - acme (>= 0.0.0) - nginx (>= 0.0.0) - acme_server (0.1.0) - golang (>= 5.3.0) - ark (6.0.3) - seven_zip (>= 3.1) - golang (5.3.1) - ark (>= 6.0) - nginx (12.0.10) - seven_zip (4.2.2) diff --git a/lc-gdn-chef/cookbooks/acme/LICENSE b/lc-gdn-chef/cookbooks/acme/LICENSE deleted file mode 100644 index 3c7287fd8..000000000 --- a/lc-gdn-chef/cookbooks/acme/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright 2015-2018 Schuberg Philis - -Licensed 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. diff --git a/lc-gdn-chef/cookbooks/acme/README.md b/lc-gdn-chef/cookbooks/acme/README.md deleted file mode 100644 index efb8ce1d2..000000000 --- a/lc-gdn-chef/cookbooks/acme/README.md +++ /dev/null @@ -1,213 +0,0 @@ -ACME cookbook -============= - -[![Build Status](https://travis-ci.org/schubergphilis/chef-acme.svg)](https://travis-ci.org/schubergphilis/chef-acme) -[![Cookbook Version](https://img.shields.io/cookbook/v/acme.svg)](https://supermarket.chef.io/cookbooks/acme) - -Automatically get/renew free and trusted certificates from Let's Encrypt (letsencrypt.org). ACME is -the [Automated Certificate Management Environment protocol][1] used by [Let's Encrypt][2]. - -``` -Starting with v4.0.0 of the acme cookbook the acme_ssl_certificate provider has been removed! The TLS-SNI-01 validation method used by this provider been disabled by Let's Encrypt due to security concerns. Please switch to the acme_certificate provider in this cookbook to request and renew your certificate using the supported HTTP-01 validation method. -``` - -Attributes ----------- - -| Attribute | Description | Default | -| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------: | -| contact | Contact information, default empty. Set to `mailto:your@email.com` | [] | -| dir | ACME server endpoint, Set to `https://acme-staging-v02.api.letsencrypt.org/directory` if you want to use the Let's Encrypt staging environment and corresponding certificates. | `https://acme-v02.api.letsencrypt.org/directory` | -| renew | Days before the certificate expires at which the certificate will be renewed | 30 | -| source_ips | IP addresses used by Let's Encrypt to verify the TLS certificates, it will change over time. This attribute is for firewall purposes. Allow these IPs for HTTP (tcp/80). | ['66.133.109.36'] | -| private_key | Private key content of registered account. Private keys identify the ACME client with the endpoint and are not transferable between staging and production endpoints. | nil | -| key_size | Default private key size used when resource property is not. Must be one out of: 2048, 3072, 4096. | 2048 | - -Recipes -------- - -### default - -Installs the required acme-client rubygem. - -Usage ------ -Use the `acme_certificate` resource to request a certificate with the http-01 challenge. The webserver for the domain -for which you are requesting a certificate must be running on the local server. This resource only supports the http -validation method. To use the tls-sni-01 challenge, please see the resource below. Provide the path to your `wwwroot` -for the specified domain. - -```ruby -acme_certificate 'test.example.com' do - crt '/etc/ssl/test.example.com.crt' - key '/etc/ssl/test.example.com.key' - wwwroot '/var/www' -end -``` - -If your webserver needs an existing certificate already when installing a new server, you will have a bootstrap problem: -The web server cannot start without a certificate, but the certificate cannot be requested without the running web -server. To overcome this, a temporary self-signed certificate can be generated with the `acme_selfsigned` resource, -allowing the web server to start. - -```ruby -acme_selfsigned 'test.example.com' do - crt '/etc/ssl/test.example.com.crt' - chain '/etc/ssl/test.example.com-chain.crt' - key '/etc/ssl/test.example.com.key' -end -``` - -A working example can be found in the included `acme_client` test cookbook. - -Providers ---------- - -### certificate - -| Property | Type | Default | Description | -| --- | --- | --- | --- | -| `cn` | string | _name_ | The common name for the certificate | -| `alt_names` | array | [] | The common name for the certificate | -| `crt` | string | nil | File path to place the certificate | -| `key` | string | nil | File path to place the private key | -| `key_size` | integer | 2048 | Private key size. Must be one out of: 2048, 3072, 4096 | -| `owner` | string | root | Owner of the created files | -| `group` | string | root | Group of the created files | -| `wwwroot` | string | /var/www | Path to the wwwroot of the domain | -| `ignore_failure` | boolean | false | Whether to continue chef run if issuance fails | -| `retries` | integer | 0 | Number of times to catch exceptions and retry | -| `retry_delay` | integer | 2 | Number of seconds to wait between retries | -| `endpoint` | string | nil | The Let's Encrypt endpoint to use | -| `contact` | array | [] | The contact to use | - -### selfsigned - -| Property | Type | Default | Description | -| --- | --- | --- | --- | -| `cn` | string | _name_ | The common name for the certificate | -| `crt` | string | nil | File path to place the certificate | -| `key` | string | nil | File path to place the private key | -| `key_size` | integer | 2048 | Private key size. Must be one out of: 2048, 3072, 4096 | -| `chain` | string | nil | File path to place the certificate chain | -| `owner` | string | root | Owner of the created files | -| `group` | string | root | Group of the created files | - -Example -------- -To generate a certificate for an apache2 website you can use code like this: - -```ruby -# Include the recipe to install the gems -include_recipe 'acme' - -# Set up contact information. Note the mailto: notation -node.override['acme']['contact'] = ['mailto:me@example.com'] -# Real certificates please... -node.override['acme']['endpoint'] = 'https://acme-v01.api.letsencrypt.org' - -site = "example.com" -sans = ["www.#{site}"] - -# Generate a self-signed if we don't have a cert to prevent bootstrap problems -acme_selfsigned "#{site}" do - crt "/etc/httpd/ssl/#{site}.crt" - key "/etc/httpd/ssl/#{site}.key" - chain "/etc/httpd/ssl/#{site}.pem" - owner "apache" - group "apache" - notifies :restart, "service[apache2]", :immediate -end - -# Set up your web server here... - -# Get and auto-renew the certificate from Let's Encrypt -acme_certificate "#{site}" do - crt "/etc/httpd/ssl/#{site}.crt" - key "/etc/httpd/ssl/#{site}.key" - wwwroot "/var/www/#{site}/htdocs/" - notifies :restart, "service[apache2]" - alt_names sans -end -``` - -DNS verification ----------------- - -Letsencrypt supports DNS validation. Depending on the setup there may be different ways to deploy an acme challenge to -your infrastructure. If you want to use DSN validation, you have to provide two block arguments to -the `acme_certificate` resource. - -Implement 2 methods in a library in your cookbook, each returning a `Proc` object. The following example uses a HTTP API -to provide challenges to the DNS infrastructure. - -```ruby -# my_cookbook/libraries/acme_dns.rb - -class Chef - class Recipe - def install_dns_challenge(apitoken) - Proc.new do |authorization, new_resource| - # use DNS authorization - authz = authorization.dns - fqdn = authorization.identifier['value'] - r = Net::HTTP.post(URI("https://my_awesome_dns_api/#{fqdn}"), authz.record_content, {'Authorization' => "Token #{apitoken}"}) - if r.code != '200' - fail "DNS API does not want to install Challenge for #{fqdn}" - else - # do some validation that the challenge has propagated to the infrastructure - end - # it is important that the authz and fqdn is passed back, so it can be passed to the remove_dns_challenge method - [authz, fqdn] - end - end - def remove_dns_challenge(apitoken) - Proc.new do |authz, fqdn| - uri = URI("https://my_awesome_dns_api/#{fqdn}") - Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme=='https') do |http| - http.delete(uri, {'Authorization' => "Token #{apitoken}"}) - end - end - end - end -end -``` - -Use it in your recipe the following way: - -```ruby -apitoken = chef_vault_item(vault, item)['dns_api_token'] -acme_certificate node['fqdn'] do - key '/path/to/key' - crt '/path/to/crt' - install_authz_block install_dns_challenge(apitoken) - remove_authz_block remove_dns_challenge(apitoken) -end -``` - -Testing -------- -The kitchen includes a `pebble` server to run the integration tests with, so testing can run locally without interaction -with the online APIs. - -Contributing ------------- - -1. Fork the repository on Github -2. Create a named feature branch (like `add_component_x`) -3. Write your change -4. Write tests for your change (if applicable) -5. Run the tests, ensuring they all pass -6. Submit a Pull Request using Github - -License and Authors -------------------- -Authors: Thijs Houtenbos - -Credits -------- -Let’s Encrypt is a trademark of the Internet Security Research Group. All rights reserved. - -[1]: https://ietf-wg-acme.github.io/acme/ - -[2]: https://letsencrypt.org/ diff --git a/lc-gdn-chef/cookbooks/acme/attributes/default.rb b/lc-gdn-chef/cookbooks/acme/attributes/default.rb deleted file mode 100644 index 64a7d1305..000000000 --- a/lc-gdn-chef/cookbooks/acme/attributes/default.rb +++ /dev/null @@ -1,29 +0,0 @@ -# -# Author:: Thijs Houtenbos -# Cookbook:: acme -# Attribute:: default -# -# Copyright:: 2015-2021, Schuberg Philis -# -# Licensed 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['acme']['contact'] = [] -default['acme']['dir'] = 'https://acme-v02.api.letsencrypt.org/directory' -default['acme']['renew'] = 30 -default['acme']['source_ips'] = %w(66.133.109.36 64.78.149.164) - -default['acme']['private_key'] = nil -default['acme']['private_key_file'] = '/etc/acme/account_private_key.pem' -default['acme']['gem_version'] = '2.0.9' -default['acme']['key_size'] = 2048 diff --git a/lc-gdn-chef/cookbooks/acme/chefignore b/lc-gdn-chef/cookbooks/acme/chefignore deleted file mode 100644 index 138a808b6..000000000 --- a/lc-gdn-chef/cookbooks/acme/chefignore +++ /dev/null @@ -1,94 +0,0 @@ -# Put files/directories that should be ignored in this file when uploading -# or sharing to the community site. -# Lines that start with '# ' are comments. - -# OS generated files # -###################### -.DS_Store -Icon? -nohup.out -ehthumbs.db -Thumbs.db - -# SASS # -######## -.sass-cache - -# EDITORS # -########### -\#* -.#* -*~ -*.sw[a-z] -*.bak -REVISION -TAGS* -tmtags -*_flymake.* -*_flymake -*.tmproj -.project -.settings -mkmf.log - -## COMPILED ## -############## -a.out -*.o -*.pyc -*.so -*.com -*.class -*.dll -*.exe -*/rdoc/ - -# Testing # -########### -.watchr -.rspec -spec/* -spec/fixtures/* -test/* -features/* -Guardfile -Procfile - -# SCM # -####### -.git -*/.git -.gitignore -.gitmodules -.gitconfig -.gitattributes -.svn -*/.bzr/* -*/.hg/* -*/.svn/* - -# Berkshelf # -############# -cookbooks/* -tmp - -# Cookbooks # -############# -CONTRIBUTING -CHANGELOG* - -# Strainer # -############ -Colanderfile -Strainerfile -.colander -.strainer - -# Vagrant # -########### -.vagrant -Vagrantfile - -# Travis # -########## -.travis.yml diff --git a/lc-gdn-chef/cookbooks/acme/kitchen.digitalocean.yml b/lc-gdn-chef/cookbooks/acme/kitchen.digitalocean.yml deleted file mode 100644 index 1a8d08df2..000000000 --- a/lc-gdn-chef/cookbooks/acme/kitchen.digitalocean.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -driver: - name: digitalocean - private_networking: false - size: 2gb - -transport: - name: rsync diff --git a/lc-gdn-chef/cookbooks/acme/kitchen.dokken.yml b/lc-gdn-chef/cookbooks/acme/kitchen.dokken.yml deleted file mode 100644 index e6c733e13..000000000 --- a/lc-gdn-chef/cookbooks/acme/kitchen.dokken.yml +++ /dev/null @@ -1,56 +0,0 @@ ---- -driver: - name: dokken - chef_version: latest - chef_license: accept-no-persist - privileged: true # because Docker and systemd/Upstart - volumes: - - /sys/fs/cgroup:/sys/fs/cgroup # because of systemd, rabbitmq - -transport: - name: dokken - -provisioner: - name: dokken - -verifier: - name: inspec - -platforms: - - name: debian-9 - driver: - image: dokken/debian-9 - pid_one_command: /bin/systemd - intermediate_instructions: - - RUN /usr/bin/apt-get update - - - name: debian-10 - driver: - image: dokken/debian-10 - pid_one_command: /bin/systemd - intermediate_instructions: - - RUN /usr/bin/apt-get update - - - name: centos-7 - driver: - image: dokken/centos-7 - pid_one_command: /usr/lib/systemd/systemd - - - name: centos-8 - driver: - image: dokken/centos-8 - pid_one_command: /usr/lib/systemd/systemd - - - name: ubuntu-18.04 - driver: - image: dokken/ubuntu-18.04 - pid_one_command: /bin/systemd - intermediate_instructions: - - RUN /usr/bin/apt-get update - - - name: ubuntu-20.04 - driver: - image: dokken/ubuntu-20.04 - pid_one_command: /bin/systemd - intermediate_instructions: - - RUN /usr/bin/apt-get update diff --git a/lc-gdn-chef/cookbooks/acme/kitchen.yml b/lc-gdn-chef/cookbooks/acme/kitchen.yml deleted file mode 100644 index 92e9599f9..000000000 --- a/lc-gdn-chef/cookbooks/acme/kitchen.yml +++ /dev/null @@ -1,34 +0,0 @@ ---- -driver: - name: vagrant - customize: - memory: 1024 - -verifier: - name: inspec - -provisioner: - name: chef_zero - product_name: chef - chef_license: accept-no-persist - deprecations_as_errors: true - -platforms: - - name: centos-7 - - name: centos-8 - - name: centos-stream-8 - - name: debian-9 - - name: debian-10 - - name: ubuntu-18.04 - - name: ubuntu-20.04 - -suites: - - name: http - run_list: - - recipe[acme_server] - - recipe[acme_client::http] - attributes: - acme: - dir: https://127.0.0.1:14000/dir - contact: - - mailto:admin@example.com diff --git a/lc-gdn-chef/cookbooks/acme/libraries/acme.rb b/lc-gdn-chef/cookbooks/acme/libraries/acme.rb deleted file mode 100644 index cb5262a52..000000000 --- a/lc-gdn-chef/cookbooks/acme/libraries/acme.rb +++ /dev/null @@ -1,116 +0,0 @@ -# -# Author:: Thijs Houtenbos -# Cookbook:: acme -# Library:: acme -# -# Copyright:: 2015-2021, Schuberg Philis -# -# Licensed 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. -# - -begin - require 'acme-client' -rescue LoadError => e - Chef::Log.warn("Acme library dependency 'acme-client' not loaded: #{e}") -end - -def acme_client - return @client if @client - - # load private_key from disk if present - private_key_file = node['acme']['private_key_file'] - node.default['acme']['private_key'] = ::File.read(private_key_file) if ::File.exist?(private_key_file) - - private_key = OpenSSL::PKey::RSA.new(node['acme']['private_key'] || 2048) - - directory = new_resource.dir || node['acme']['dir'] - - contact = (new_resource.contact.nil? || new_resource.contact.empty?) ? node['acme']['contact'] : new_resource.contact - - @client = Acme::Client.new(private_key: private_key, directory: directory) - - if node['acme']['private_key'].nil? - acme_client.new_account(contact: contact, terms_of_service_agreed: true) - node.default['acme']['private_key'] = private_key.to_pem - - # write key to disk for persistence - directory File.dirname(private_key_file) do - recursive true - end - - file private_key_file do - content private_key.to_pem - mode '600' - sensitive true - end - end - - @client -end - -def acme_order_certs_for(names) - acme_client.new_order(identifiers: names) -end - -def acme_validate(authz) - authz.request_validation - - times = 60 - - while times > 0 - break unless authz.status == 'pending' - times -= 1 - sleep 1 - authz.reload - end - - authz -end - -def acme_cert(order, cn, key, alt_names = []) - csr = Acme::Client::CertificateRequest.new( - common_name: cn, - names: alt_names, - private_key: key - ) - order.finalize(csr: csr) - - while order.status == 'processing' - sleep 1 - order.reload - end - - order.certificate -end - -def self_signed_cert(cn, alts, key) - cert = OpenSSL::X509::Certificate.new - cert.subject = cert.issuer = OpenSSL::X509::Name.new([['CN', cn, OpenSSL::ASN1::UTF8STRING]]) - cert.not_before = Time.now - cert.not_after = Time.now + 60 * 60 * 24 * node['acme']['renew'] - cert.public_key = key.public_key - cert.serial = 0x0 - cert.version = 2 - - ef = OpenSSL::X509::ExtensionFactory.new - ef.subject_certificate = cert - ef.issuer_certificate = cert - - cert.extensions = [] - - cert.extensions += [ef.create_extension('basicConstraints', 'CA:FALSE', true)] - cert.extensions += [ef.create_extension('subjectKeyIdentifier', 'hash')] - cert.extensions += [ef.create_extension('subjectAltName', alts.map { |d| "DNS:#{d}" }.join(','))] unless alts.empty? - - cert.sign key, OpenSSL::Digest.new('SHA256') -end diff --git a/lc-gdn-chef/cookbooks/acme/metadata.json b/lc-gdn-chef/cookbooks/acme/metadata.json deleted file mode 100644 index 4f7812d43..000000000 --- a/lc-gdn-chef/cookbooks/acme/metadata.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "acme", - "description": "ACME client cookbook for free and trusted SSL/TLS certificates from Let's Encrypt", - "long_description": "", - "maintainer": "Thijs Houtenbos", - "maintainer_email": "thoutenbos@schubergphilis.com", - "license": "Apache-2.0", - "platforms": { - "ubuntu": ">= 0.0.0", - "debian": ">= 0.0.0", - "redhat": ">= 0.0.0", - "centos": ">= 0.0.0", - "fedora": ">= 0.0.0" - }, - "dependencies": { - }, - "providing": { - }, - "recipes": { - }, - "version": "4.1.5", - "source_url": "https://github.com/schubergphilis/chef-acme", - "issues_url": "https://github.com/schubergphilis/chef-acme/issues", - "privacy": false, - "chef_versions": [ - [ - ">= 15.3" - ] - ], - "ohai_versions": [ - ], - "gems": [ - ] -} diff --git a/lc-gdn-chef/cookbooks/acme/metadata.rb b/lc-gdn-chef/cookbooks/acme/metadata.rb deleted file mode 100644 index e6bd654cc..000000000 --- a/lc-gdn-chef/cookbooks/acme/metadata.rb +++ /dev/null @@ -1,13 +0,0 @@ -name 'acme' -maintainer 'Thijs Houtenbos' -maintainer_email 'thoutenbos@schubergphilis.com' -license 'Apache-2.0' -description 'ACME client cookbook for free and trusted SSL/TLS certificates from Let\'s Encrypt' -source_url 'https://github.com/schubergphilis/chef-acme' -issues_url 'https://github.com/schubergphilis/chef-acme/issues' -version '4.1.5' -chef_version '>= 15.3' - -%w(ubuntu debian redhat centos fedora).each do |os| - supports os -end diff --git a/lc-gdn-chef/cookbooks/acme/recipes/default.rb b/lc-gdn-chef/cookbooks/acme/recipes/default.rb deleted file mode 100644 index 5c81dca24..000000000 --- a/lc-gdn-chef/cookbooks/acme/recipes/default.rb +++ /dev/null @@ -1,27 +0,0 @@ -# -# Author:: Thijs Houtenbos -# Cookbook:: acme -# Recipe:: default -# -# Copyright:: 2015-2021, Schuberg Philis -# -# Licensed 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. -# - -chef_gem 'acme-client' do - action :install - version node['acme']['gem_version'] - compile_time true -end - -require 'acme-client' diff --git a/lc-gdn-chef/cookbooks/acme/resources/certificate.rb b/lc-gdn-chef/cookbooks/acme/resources/certificate.rb deleted file mode 100644 index 56874f1fd..000000000 --- a/lc-gdn-chef/cookbooks/acme/resources/certificate.rb +++ /dev/null @@ -1,168 +0,0 @@ -# -# Author:: Thijs Houtenbos -# Cookbook:: acme -# Resource:: certificate -# -# Copyright:: 2015-2021, Schuberg Philis -# -# Licensed 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. -# - -unified_mode true - -default_action :create - -property :cn, String, name_property: true -property :alt_names, Array, default: [] - -property :crt, [String, nil], required: true -property :key, [String, nil], required: true - -property :owner, String, default: 'root' -property :group, String, default: 'root' - -property :wwwroot, String, default: '/var/www' - -property :key_size, Integer, default: lazy { node['acme']['key_size'] }, equal_to: [2048, 3072, 4096] - -property :dir, [String, nil] -property :contact, Array, default: [] - -# if you want to use DNS authentication, you can pass the code to install and -# remove the challenge as a block -# -# the install_authz_block will be called for each authorization with the -# authorization and resource as parameter. It must return the authz object from -# the authorization. -# The resource will then call the acme verification process. After verification -# the remove_authz_block will be called with the authz as parameter. This is -# intended to allow cleanup of the challenge -property :install_authz_block, [Proc, nil] -property :remove_authz_block, [Proc, nil] - -property :chain, String, deprecated: 'The chain property has been deprecated as the acme-client gem now returns the full certificate chain by default (on the crt property.) Please update your cookbooks to remove this property.' -deprecated_property_alias 'fullchain', 'crt', 'The fullchain property has been deprecated as the acme-client gem now returns the full certificate chain by default (on the crt property.) Please update your cookbooks to switch to \'crt\'.' - -deprecated_property_alias 'endpoint', 'dir', 'The endpoint property was renamed to dir, to reflect ACME v2 changes. Please update your cookbooks to use the new property name.' - -def names_changed?(cert, names) - return false if names.empty? - - san_extension = cert.extensions.find { |e| e.oid == 'subjectAltName' } - return false if san_extension.nil? - - current = san_extension.value.split(', ').select { |v| v.start_with?('DNS:') }.map { |v| v.split(':')[1] } - !(names - current).empty? || !(current - names).empty? -end - -action :create do - file "#{new_resource.cn} SSL key" do - path new_resource.key - owner new_resource.owner - group new_resource.group - mode '400' - content OpenSSL::PKey::RSA.new(new_resource.key_size).to_pem - sensitive true - action :nothing - end.run_action(:create_if_missing) - - mycert = nil - mykey = OpenSSL::PKey::RSA.new ::File.read new_resource.key - names = [new_resource.cn, new_resource.alt_names].flatten.compact - renew_at = ::Time.now + 60 * 60 * 24 * node['acme']['renew'] - - if !new_resource.crt.nil? && ::File.exist?(new_resource.crt) - mycert = ::OpenSSL::X509::Certificate.new ::File.read new_resource.crt - end - - if mycert.nil? || mycert.not_after <= renew_at || names_changed?(mycert, names) - order = acme_order_certs_for(names) - all_validations = [] - if new_resource.install_authz_block.nil? - order.authorizations.each do |authorization| - authz = install_http_validation(authorization, new_resource) - acme_validate(authz) - remove_http_validation(authz, new_resource) - all_validations.push(authz) - end - else - ruby_block 'install and validate challenges using custom method' do - block do - order.authorizations.each do |authorization| - authz, fqdn = new_resource.install_authz_block.call(authorization, new_resource) - acme_validate(authz) - new_resource.remove_authz_block.call(authz, fqdn) - end - end - end - end - - ruby_block "create certificate for #{new_resource.cn}" do - block do - unless (all_validations.map { |authz| authz.status == 'valid' }).all? - errors = all_validations.select { |authz| authz.status != 'valid' }.map do |authz| - "{url: #{authz.url}, status: #{authz.status}, error: #{authz.error}} " - end.reduce(:+) - - raise "[#{new_resource.cn}] Validation failed, unable to request certificate, Errors: [#{errors}]" - end - - begin - newcert = acme_cert(order, new_resource.cn, mykey, new_resource.alt_names) - rescue Acme::Client::Error => e - raise "[#{new_resource.cn}] Certificate request failed: #{e.message}" - else - Chef::Resource::File.new("#{new_resource.cn} SSL new crt", run_context).tap do |f| - f.path new_resource.crt - f.owner new_resource.owner - f.group new_resource.group - f.content newcert - f.mode 00644 - end.run_action :create - end - end - end - end -end - -action_class.class_eval do - def install_http_validation(authorization, new_resource) - authz = authorization.http - tokenpath = "#{new_resource.wwwroot}/#{authz.filename}" - - directory ::File.dirname(tokenpath) do - owner new_resource.owner - group new_resource.group - mode '755' - recursive true - action :nothing - end.run_action(:create) - - file tokenpath do - owner new_resource.owner - group new_resource.group - mode '644' - content authz.file_content - action :nothing - end.run_action(:create) - authz - end - - def remove_http_validation(authz, new_resource) - tokenpath = "#{new_resource.wwwroot}/#{authz.filename}" - file tokenpath do - backup false - action :delete - end - end -end diff --git a/lc-gdn-chef/cookbooks/acme/resources/selfsigned.rb b/lc-gdn-chef/cookbooks/acme/resources/selfsigned.rb deleted file mode 100644 index f77f04772..000000000 --- a/lc-gdn-chef/cookbooks/acme/resources/selfsigned.rb +++ /dev/null @@ -1,67 +0,0 @@ -# -# Author:: Thijs Houtenbos -# Cookbook:: acme -# Resource:: selfsigned -# -# Copyright:: 2015-2021, Schuberg Philis -# -# Licensed 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. -# - -unified_mode true - -default_action :create - -property :cn, String, name_property: true -property :alt_names, Array, default: [] - -property :crt, [String, nil], required: true -property :key, [String, nil], required: true - -property :chain, [String, nil] - -property :owner, String, default: 'root' -property :group, String, default: 'root' - -property :key_size, Integer, default: lazy { node['acme']['key_size'] }, equal_to: [2048, 3072, 4096] - -action :create do - file "#{new_resource.cn} SSL selfsigned key" do - path new_resource.key - owner new_resource.owner - group new_resource.group - mode '400' - content OpenSSL::PKey::RSA.new(new_resource.key_size).to_pem - sensitive true - action :create_if_missing - end - - file "#{new_resource.cn} SSL selfsigned crt" do - path new_resource.crt - owner new_resource.owner - group new_resource.group - mode '644' - content lazy { self_signed_cert(new_resource.cn, new_resource.alt_names, OpenSSL::PKey::RSA.new(::File.read(new_resource.key))).to_pem } - action :create_if_missing - end - - file "#{new_resource.cn} SSL selfsigned chain" do - path new_resource.chain unless new_resource.chain.nil? - owner new_resource.owner - group new_resource.group - mode '644' - content lazy { self_signed_cert(new_resource.cn, new_resource.alt_names, OpenSSL::PKey::RSA.new(::File.read(new_resource.key))).to_pem } - not_if { new_resource.chain.nil? } - action :create_if_missing - end -end diff --git a/lc-gdn-chef/cookbooks/acme/resources/ssl_key.rb b/lc-gdn-chef/cookbooks/acme/resources/ssl_key.rb deleted file mode 100644 index f80036f5d..000000000 --- a/lc-gdn-chef/cookbooks/acme/resources/ssl_key.rb +++ /dev/null @@ -1,61 +0,0 @@ -# -# Author:: Thijs Houtenbos -# Cookbook:: acme -# Resource:: ssl_key -# -# Copyright:: 2015-2021, Schuberg Philis -# -# Licensed 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. -# - -unified_mode true - -default_action :create_if_missing - -property :path, String, name_property: true -property :length, Integer, default: 2048 -property :output_format, Symbol, equal_to: [:pem, :der, :text], default: :pem -property :type, Symbol, equal_to: [:rsa, :dsa], default: :rsa - -def load - klass = OpenSSL::PKey.const_get(type.upcase) - klass.new(::File.read(path)) if ::File.exist?(path) -end - -def do_action(file_action) - klass = OpenSSL::PKey.const_get(new_resource.type.upcase) - key = klass.new(new_resource.length) - data = key.send("to_#{new_resource.output_format}".to_sym) - - file new_resource.path do - owner owner - group group - mode '400' - content data - sensitive true - - action file_action - end -end - -action :create do - do_action(:create) -end - -action :destroy do - do_action(:destroy) -end - -action :create_if_missing do - do_action(:create_if_missing) -end diff --git a/lc-gdn-chef/cookbooks/acme/templates/acme-challange.nginx.erb b/lc-gdn-chef/cookbooks/acme/templates/acme-challange.nginx.erb deleted file mode 100644 index 9f8e9ca12..000000000 --- a/lc-gdn-chef/cookbooks/acme/templates/acme-challange.nginx.erb +++ /dev/null @@ -1,8 +0,0 @@ -server { - listen 443 ssl; - server_name <%= @host %>; - ssl_certificate <%= @cert %>; - ssl_certificate_key <%= @key %>; - - return 202; -} diff --git a/lc-gdn-chef/cookbooks/apache2/CHANGELOG-pre4.md b/lc-gdn-chef/cookbooks/apache2/CHANGELOG-pre4.md deleted file mode 100644 index 33209568a..000000000 --- a/lc-gdn-chef/cookbooks/apache2/CHANGELOG-pre4.md +++ /dev/null @@ -1,493 +0,0 @@ -# CHANGELOG-pre4.0 - -This document describes the changes before the 4.0 release. - -## v3.3.1 (2017-07-06) - -- [GH-489] Fix OpenSuse service guard - -## v3.3.0 (2017-04-11) - -- [GH-478] Added support for the amazon platform_family, outside of RHEL -- [GH-474] Update Berksfile to allow fetching of newer -- [GH-473] Update copyright header format -- [GH-472] foodcritic: add sous-chefs rules -- add CODE_OF_CONDUCT -- [GH-471] FCGI paths should not be messed with on RHEL/CentOS 7\. CentOS 7 (and recent Fedoras) have Apache 2.4, where - FCGI socket path and shared memory path is managed adequately without further involvement necessary (subdirectory is - created under /var/run/httpd). -- [GH-470] Remove support for EOL Fedora < 18 / FreeBSD 9 -- [GH-465] Testing updates -- [GH-469] Use the default cookbook style rules -- [GH-460] ServerSpec to InSpec migration -- [GH-461] Update comment header format & other Cookstyle fixes -- [GH-454] Test in Travis with Chef-DK and a Rakefile -- [GH-455] openSUSE Leap has it's own platform name -- [GH-279] leave stubs for rhel family `conf.d` files to avoid conflicts on package upgrade; no longer remove `conf.d`, - just don't use it -- [GH-427] Add option to configure custom log level -- [GH-450] Ensure the lock_dir is owned by www-data for Apache 2.2 and 2.4 on Debian/Ubuntu -- Remove mod_auth_openid tests, as it is not part of the ASF release and plan to drop support for it and right now it is - failing our tests -- [GH-440] Update default values in `apache.prefork` section of README -- [GH-443] fixed typo in copyright year -- Test on the latest chef with chef-zero -- Update supported platforms to Ubuntu 16.04, Debian 8.4, CentOS 7.2; deprecating Ubuntu 12.04 -- [GH-422] Fix uniq for nil:NilClass error introduced in 3.2.2 -- [GH-423] allow for apache 2.4 usage on RHEL < 7.0 -- Cookbook is now part of the sous-chefs, but still maintained by the same folks -- mod_perl: No longer install libapache2-mpm-prefork -- mod_php: renamed mod_php5 to more generic mod_php; using php 7.0 where available - -## v3.2.2 (2016-04-13) - -- [GH-420] Allow auto-conversion if either of `apache.listen_ports` or `apache.listen_addresses` are set rather than ' - &&'. This ensures conversion occurs if only one of the two is set. - -## v3.2.1 (2016-04-11) - -- [GH-225] notify `restart` instead of `reload` service on `apache_conf`, `apache_config` -- Update to foodcritic 6 - -## v3.2.0 (2016-03-26) - -- [GH-378] Deprecates `apache.listen_addresses` and `apache.listen_ports` in favor of [GH-409] -- [GH-409] `apache.listen` now accepts an array of `addr:port` strings -- [GH-358] FreeBSD: Update 10.1 support; Adds php 5.6 in collaboration with chef-cookbooks/php#119 -- [GH-394] Have `apache.prefork.serverlimit` set ServerLimit directive on 2.4 -- [GH-363] Escape '.' in regex for .htaccess/.htpasswd files -- [GH-365] Force log directory creation to be recursive -- [GH-368] Change the service creation to use the `apache.service_name` attribute throughout -- [GH-374] Make metadata.rb compatible with chef versions < 12. -- [GH-382] Fixed typo in node['platform_family'] for NameError in `mod_proxy_html` -- [GH-369] README: Added on Ubuntu `mod_fastcgi` requires `multiverse` apt repository to enabled. -- [GH-381] README: Add missing backtick -- [GH-384] README: Fix names for a2enconf and a2disconf -- [GH-393] README: mention availability of `mod_actions` support -- [GH-383] Debian: Add possibility to use other releases via `apache.default_release` -- [GH-377] Restart service when including `mod_headers` to allow healing of failed service because of missing - directives. -- [GH-416] Change the default of `apache.mod_fastcgi.install_method` to 'package' all platforms, as `source` is no - longer available. -- [GH-401] Move `mod_deflate` to `apache.default_modules` and no longer force installation on `debian` families. -- [GH-386] Do not install an extra mod_ssl package on SUSE Linux Enterprise -- [GH-335] Do not hardcoded reload/restart on more modern rhel platforms, allowing systemd on CentOS 7 -- [GH-375] Install package `mod_ldap` on CentOS 7 (triggered by `apache.version` == 2.4) -- Update `apache.mod_ssl.cipher_suite` to latest from -- README: Re-organize README to make it easier to find usage and remove old references. -- Added new standard and missing modules (Note: these may not be available natively on all operating systems) - - - [mod_http2](http://httpd.apache.org/docs/2.4/mod/mod_http2.html) - Support for the HTTP/2 transport layer. ( - available since 2.4.17) - - [mod_authnz_fcgi](http://httpd.apache.org/docs/2.4/mod/mod_authnz_fcgi.html) - Enable FastCGI authorizer - applications to authenticate and/or authorize clients. (available since 2.4.10) - - [mod_cern_meta](http://httpd.apache.org/docs/2.4/mod/mod_cern_meta.html) - CERN httpd metafile semantics - - [mod_ident](http://httpd.apache.org/docs/2.4/mod/mod_ident.html) - RFC 1413 ident lookups - - [mod_privileges](http://httpd.apache.org/docs/2.4/mod/mod_privileges.html) - Support for Solaris privileges and - for running virtual hosts under different user IDs. - - [mod_socache_dc](http://httpd.apache.org/docs/2.4/mod/mod_socache_dc.html) - Distcache based shared object cache - provider. - - [mod_version](http://httpd.apache.org/docs/2.4/mod/mod_version.html) - Version dependent configuration - - [mod_watchdog](http://httpd.apache.org/docs/2.4/mod/mod_watchdog.html) - Provides infrastructure for other modules - to periodically run tasks - -## v3.1.0 (2015-05-25) - -- [GH-315] Fix `apache.default_site_name` .conf extension references to ensure deletion -- [GH-258] Use `apache.default_site_name` for consistency, minimize hardcoding of filenames -- [GH-259] Add `&& sleep 1` to end of apache restart command on rhel-based systems using apache2.2 -- [GH-271] Remove FreeBSD 9.x, Red Hat and CentOS 5.x and OpenSUSE 11.x Series from tests and focus on newer releases -- [GH-276] Add psych gem to development gems -- [GH-293] Add `apache.mod_fastcgi.install_method` flag to allow install of mod_fastcgi from source (even on Debian - family) -- [GH-285] Made `apache.devel_package` configurable based on platform, including support for Amazon Linux. -- [GH-316] Update Opscode references to Chef -- [GH-318] Apply default recipe in all definitions -- [GH-320] Add attribute to adjust `apache.default_site_port` -- [GH-321] Fix issue with default_site name in not_if guards -- [GH-322] Add `apache.mod_ssl.pkg_name` to allow custom mod_ssl package names. Set defaults for supported platforms - including Amazon Linux -- [GH-323] Don't create the default site configuration file in `sites-available` unless it is enabled. -- [GH-324] Add `apache.mod_ssl.port` to set the default ssl port to something other than 443 -- [GH-328] Add the ability to pass in a pipe as to log -- [GH-332] `SSLStrictSNIVHostCheck` is only written to config if enabled to avoid breaking apache prior to 2.2.12. -- [GH-334] Removed `iptables`, `god-monitor`, and `logrotate` recipes to avoid having external dependencies. These - services should be managed in a wrapper cookbook going forward. -- [GH-339] Allow custom names for php so_filename (`node['apache']['mod_php5']['so_filename']`) - -## v3.0.1 (2015-02-11) - -- [GH-310] Ubuntu Apache 2.2 requires the lock_dir to be owned by www-data -- [GH-309] Clarify that apache.version is a string -- [GH-305] Restart service after MPM changes -- [GH-304] Don't install systemd module on Amazon Linux -- [GH-298] Add non-threaded MPM break notice for PHP users -- [GH-296] Create lock_dir automatically - -## v3.0.0 (2014-11-30) - -Major version update because of SSL Improvements and new platform MPM and Version defaults. - -- [GH-286] Refactor MPM and Apache version defaults: default is now apache 2.4 -- Note: set `apache.mpm` to `prefork` if you are using `mod_php` in Ubuntu >=14.04 -- [GH-281] mod_ssl: Disable SSLv3 by default to protect against POODLE attack (CVE-2014-3566) -- [GH-280] mod_ssl: Major update with modern Cipher Suite, and best practices. Updated to a more modern - default `apache.mod_ssl.cipher_suite`. Added the following additional mod_ssl attributes - - - `apache.mod_ssl.honor_cipher_order` - - `apache.mod_ssl.insecure_renegotiation` - - `apache.mod_ssl.strict_sni_vhost_check` - - `apache.mod_ssl.session_cache_timeout` - - `apache.mod_ssl.compression` - - `apache.mod_ssl.use_stapling` - - `apache.mod_ssl.stapling_responder_timeout` - - `apache.mod_ssl.stapling_return_responder_errors` - - `apache.mod_ssl.stapling_cache` - - `apache.mod_ssl.pass_phrase_dialog` - - `apache.mod_ssl.mutex` - - `apache.mod_ssl.directives` - -- [GH-278] Improved chefspec tests execution time -- [GH-277] Optimize files watching for Guard on Win32 platform -- [GH-270] Don't attempt start until after configuration is written -- [GH-268] Now uses chefspec 4.1 -- [GH-267] Use Supermarket as the Berkshelf 3 source -- [GH-266] Rubocop based ruby style/syntax improvements -- [GH-264] mod_ssl: Add new attribute for to be ready to any custom directive -- [GH-249] Don't prepend Apache log path when requesting error logging to syslog -- [GH-247] Explicitly include mod_ldap before mod_authnz_ldap -- [GH-243] Expand mpm options for different distros/versions. -- [GH-239] Added `apache.mod_php5.install_method` attribute defaults to `package`. Install packages unless PHP is - compiled from source. -- OneHealth Solutions was acquired by Viverae -- Remove ArchLinux pacman as a dependency and handle similar to apt, yum, zypper -- Adjust ubuntu apache 2.4 docroot_dir to match package (from /var/www to /var/www/html) -- [GH-238] Bump service config syntax check guard timeout to 10 seconds -- [GH-235] Removed `apache2::mpm_itk` which is not part of core and therefore should be its own cookbook -- [GH-234] /var/run/httpd/mod_fcgid directory now belongs to apache on Fedora/RHEL systems. -- [GH-233] Default web_app template should return 503 status code when maintenance file is present -- [GH-232] Cookbook now deletes a2* if they are symlinks before dropping template versions -- [GH-222] Set TraceEnable to off by default. -- [GH-213] Adjust chefspec to use the package resource on FreeBSD (previously freebsd_package) -- [GH-212] New attribute apache.locale which sets LANG. defaults to 'C' -- [GH-210] Clarify web_app definition usage around configuration templates. -- [GH-208] `apache_conf` now accepts `source` and `cookbook` parameters. - -## v2.0.0 (2014-08-06) - -Major version update because of major overhaul to support Apache 2.4 and a2enconf and a2endisconf changes. - -- [GH-204] mod_auth_openid: Added `apache.mod_auth_openid.version` attribute -- FreeBSD support has been improved with the release of chef 11.14.2, portsnap is no longer used in favor of pkgng. -- [GH-157] - Apache will only be started when a configuration test passes, this allows the chef run to fix any broken - configuration without failing the chef run. -- `apache.log_dir` directory is now 0755 on all platforms (including the debian platform family) -- [GH-166, GH-173] - `conf.d` is no longer used and replaced by `conf-available` and `conf-enabled` managed via - the `a2enconf` and `a2disconf` scripts -- [GH-166, GH-173] - All configuration files need to end in `.conf` for them to be loaded -- [GH-173] - Perl is a required package on all platforms to support the a2* scripts as we now use the debian versions - directly. -- [GH-193] - per MPM settings: `maxclients` is now `maxrequestworkers` -- [GH-194] - per MPM settings: `maxrequestsperchild` is now `maxconnectionsperchild` -- [GH-161] - Added support for CentOS 7 -- [GH-180] - Improved SuSE support -- [GH-100] - Apache HTTP 2.4 support This provides Apache 2.4 support in a backwards compatible way. It adds the - following new attributes: - - - `apache.version` - This defaults to `2.2` and if changed to `2.4`; it triggers and assumes 2.4 packages will be - installed. - - `apache.mpm` - In 2.4 mode, this specifies which mpm to install. Default is `prefork`. - - `apache.run_dir` - - `apache.lock_dir` - - `apache.libexec_dir` replaces `apache.libexecdir` - - `apache.prefork.maxrequestworkers` replaces `apache.prefork.maxclients` - - `apache.prefork.maxconnectionsperchild` replaces `apache.prefork.maxrequestsperchild` - - `apache.worker.threadlimit` - - `apache.worker.maxrequestworkers` replaces `apache.worker.maxclients` - - `apache.worker.maxconnectionsperchild`replaces `apache.worker.maxrequestsperchild` - - `apache.event.startservers` - - `apache.event.serverlimit` - - `apache.event.minsparethreads` - - `apache.event.maxsparethreads` - - `apache.event.threadlimit` - - `apache.event.threadsperchild` - - `apache.event.maxrequestworkers` - - `apache.event.maxconnectionsperchild` - - `apache.itk.startservers` - - `apache.itk.minspareservers` - - `apache.itk.maxspareservers` - - `apache.itk.maxrequestworkers` - - `apache.itk.maxconnectionsperchild` - - Apache 2.4 Upgrade Notes: - - Since the changes between apache 2.2 and apache 2.4 are pretty significant, we are unable to account for all changes - needed for your upgrade. Please take a moment to familiarize yourself with the Apache Software Foundation provided - upgrade documentation before attempting to use this cookbook with apache 2.4\. - See - - - This cookbook does not automatically specify which version of apache to install. We are at the mercy of - the `package` provider. It is important, however, to make sure that you configure the `apache.version` attribute - to match. For your convenience, we try to set reasonable defaults based on different platforms in our test suite. - - `mod_proxy` - In 2.4 mode, `apache.proxy.order`, `apache.proxy.deny_from`, `apache.proxy.allow_from` are ignored, - as the attributes can not be supported in a backwards compatible way. Please use `apache.proxy.require` instead. - -## v1.11.0 (2014-07-25) - -- [GH-152] - Checking if server_aliases is defined in example -- [GH-106] - Only turn rewrite on once in web_app.conf.erb -- [GH-156] - Correct mod_basic/digest recipe names in README -- Recipe iptables now includes the iptables::default recipe -- Upgrade test-kitchen to latest version -- Replaced minitest integration tests with serverspec tests -- Added chefspec tests - -## v1.10.4 (2014-04-23) - -- [COOK-4249] mod_proxy_http requires mod_proxy - -## v1.10.2 (2014-04-09) - -- [COOK-4490] - Fix minitest `apache_configured_ports` helper -- [COOK-4491] - Fix minitest: escape regex interpolation -- [COOK-4492] - Fix service[apache2] CHEF-3694 duplication -- [COOK-4493] - Fix template[ports.conf] CHEF-3694 duplication - -As of 2014-04-04 and -per [Community Cookbook Diversification](https://wiki.chef.io/display/chef/Community+Cookbook+Diversification) this -cookbook now maintained by OneHealth Solutions. Please be patient as we get into the swing of things. - -## v1.10.0 (2014-03-28) - -- [COOK-3990] - Fix minitest failures on EL5 -- [COOK-4416] - Support the ability to point to local apache configs -- [COOK-4469] - Use reload instead of restart on RHEL - -## v1.9.6 (2014-02-28) - -[COOK-4391] - uncommenting the PIDFILE line - -## v1.9.4 (2014-02-27) - -Bumping version for toolchain - -## v1.9.1 (2014-02-27) - -[COOK-4348] Allow arbitrary params in sysconfig - -## v1.9.0 (2014-02-21) - -- **[COOK-4076](https://tickets.chef.io/browse/COOK-4076)** - foodcritic: dependencies are not defined properly -- **[COOK-2572](https://tickets.chef.io/browse/COOK-2572)** - Add mod_pagespeed recipe to apache2 -- **[COOK-4043](https://tickets.chef.io/browse/COOK-4043)** - apache2 cookbook does not depend on 'iptables' -- **[COOK-3919](https://tickets.chef.io/browse/COOK-3919)** - Move the default pidfile for apache2 on Ubuntu 13.10 or - greater -- **[COOK-3863](https://tickets.chef.io/browse/COOK-3863)** - Add recipe for mod_jk -- **[COOK-3804](https://tickets.chef.io/browse/COOK-3804)** - Fix incorrect datatype for apache/default_modules, use - recipes option in metadata -- **[COOK-3800](https://tickets.chef.io/browse/COOK-3800)** - Cannot load modules that use non-standard module - identifiers -- **[COOK-1689](https://tickets.chef.io/browse/COOK-1689)** - The perl package name should be configurable - -## v1.8.14 - -Version bump for toolchain sanity - -## v1.8.12 - -Fixing various style issues for travis - -## v1.8.10 - -fixing metadata version error. locking to 3.0" - -## v1.8.8 - -Version bump for toolchain sanity - -## v1.8.6 - -Locking yum dependency to '< 3' - -## v1.8.4 - -- **[COOK-3769](https://tickets.chef.io/browse/COOK-3769)** - Fix a critical bug where the `apache_module` could not - enable modules - -## v1.8.2 - -- **[COOK-3766](https://tickets.chef.io/browse/COOK-3766)** - Fix an issue where the `mod_ssl` recipe fails due to a - missing attribute - -## v1.8.0 - -- **[COOK-3680](https://tickets.chef.io/browse/COOK-3680)** - Update template paths -- **[COOK-3570](https://tickets.chef.io/browse/COOK-3570)** - Apache cookbook breaks on RHEL / CentOS 6 -- **[COOK-2944](https://tickets.chef.io/browse/COOK-2944)** - Fix foodcritic failures -- **[COOK-2893](https://tickets.chef.io/browse/COOK-2893)** - Improve mod_auth_openid recipe with guards and idempotency -- **[COOK-2758](https://tickets.chef.io/browse/COOK-2758)** - Fix use of non-existent attribute -- **[COOK-3665](https://tickets.chef.io/browse/COOK-3665)** - Add recipe for mod_userdir -- **[COOK-3646](https://tickets.chef.io/browse/COOK-3646)** - Add recipe for mod_cloudflare -- **[COOK-3213](https://tickets.chef.io/browse/COOK-3213)** - Add recipe for mod_info -- **[COOK-3656](https://tickets.chef.io/browse/COOK-3656)** - Parameterize apache2 binary -- **[COOK-3562](https://tickets.chef.io/browse/COOK-3562)** - Allow mod_proxy settings to be configured as attributes -- **[COOK-3326](https://tickets.chef.io/browse/COOK-3326)** - Fix default_test to use ServerTokens attribute -- **[COOK-2635](https://tickets.chef.io/browse/COOK-2635)** - Add support for SVG mime types -- **[COOK-2598](https://tickets.chef.io/browse/COOK-2598)** - FastCGI Module only works on Debian-based platforms -- **[COOK-1984](https://tickets.chef.io/browse/COOK-1984)** - Add option to configure the address apache listens to - -## v1.7.0 - -- [COOK-3073]: make access.log location configurable per-platform -- [COOK-3074]: don't hardcode the error.log location in the default site config -- [COOK-3268]: don't hardcode DocumentRoot and cgi-bin locations in `default_site` -- [COOK-3184]: Add `mod_filter` recipe to Apache2-cookbook -- [COOK-3236]: Add `mod_action` recipe to Apache2-cookbook - -## v1.6.6 - -1.6.4 had a missed step in the automated release, long live 1.6.6. - -- [COOK-3018]: apache2_module does duplicate delayed restart of apache2 service when conf = true -- [COOK-3027]: Default site enable true, then false, does not disable default site -- [COOK-3109]: fix apache lib_dir arch attribute regexp - -## v1.6.2 - -- [COOK-2535] - `mod_auth_openid` requires libtool to run autogen.sh -- [COOK-2667] - Typo in usage documentation -- [COOK-2461] - `apache2::mod_auth_openid` fails on some ubuntu systems -- [COOK-2720] - Apache2 minitest helper function `ran_recipe` is not portable - -## v1.6.0 - -- [COOK-2372] - apache2 mpm_worker: add ServerLimit attribute (default to 16) - -## v1.5.0 - -The `mod_auth_openid` attributes are changed. The upstream maintainer deprecated the older release versions, and the -source repository has releases available at specific SHA1SUM references. The new -attribute, `node['apache']['mod_auth_openid']['ref']` is used to set this. - -- [COOK-2198] - `apache::mod_auth_openid` compiles from source, but does not install make on debian/ubuntu -- [COOK-2224] - version conflict between cucumber and other gems -- [COOK-2248] - `apache2::mod_php5` uses `not_if` "which php" without ensuring package 'which' is installed -- [COOK-2269] - Set allow list for mod_status incase external monitor scripts need -- [COOK-2276] - cookbook apache2 documentation regarding listening ports doesn't match default attributes -- [COOK-2296] - `mod_auth_openid` doesn't have tags/releases for the version I need for features and fixes -- [COOK-2323] - Add Oracle linux support - -## v1.4.2 - -- [COOK-1721] - fix logrotate recipe - -## v1.4.0 - -- [COOK-1456] - iptables enhancements -- [COOK-1473] - apache2 does not disable default site when setting "`default_site_enabled`" back to false -- [COOK-1824] - the apache2 cookbook needs to specify which binary is used on rhel platform -- [COOK-1916] - Download location wrong for apache2 `mod_auth_openid` >= 0.7 -- [COOK-1917] - Improve `mod_auth_openid` recipe to handle module upgrade more gracefully -- [COOK-2029] - apache2 restarts on every run on RHEL and friends, generate-module-list on every run. -- [COOK-2036] - apache2: Cookbook style - -## v1.3.2 - -- [COOK-1804] - fix `web_app` definition parameter so site can be disabled. - -## v1.3.0 - -- [COOK-1738] - Better configuration for `mod_include` and some overrides in `web_app` definition -- [COOK-1470] - Change SSL Ciphers to Mitigate BEAST attack - -## v1.2.0 - -- [COOK-692] - delete package conf.d files in module recipes, for EL -- [COOK-1693] - Foodcritic finding for unnecessary string interpolation -- [COOK-1757] - platform_family and better style / usage practices - -## v1.1.16 - -re-releasing as .16 due to error on tag 1.1.14 - -- [COOK-1466] - add `mod_auth_cas` recipe -- [COOK-1609] - apache2 changes ports.conf twice per run when using apache2::mod_ssl - -## v1.1.12 - -- [COOK-1436] - restore apache2 web_app definition -- [COOK-1356] - allow ExtendedStatus via attribute -- [COOK-1403] - add mod_fastcgi recipe - -## v1.1.10 - -- [COOK-1315] - allow the default site to not be enabled -- [COOK-1328] - cookbook tests (minitest, cucumber) - -## v1.1.8 - -- Some platforms with minimal installations that don't have perl won't have a `node['languages']['perl']` attribute, so - remove the conditional and rely on the power of idempotence in the package resource. -- [COOK-1214] - address foodcritic warnings -- [COOK-1180] - add `mod_logio` and fix `mod_proxy` - -## v1.1.6 - -FreeBSD users: This release requires the `freebsd` cookbook. See README.md. - -- [COOK-1025] - freebsd support in mod_php5 recipe - -## v1.1.4 - -- [COOK-1100] - support amazon linux - -## v1.1.2 - -- [COOK-996] - apache2::mod_php5 can cause PHP and module API mismatches -- [COOK-1083] - return string for v_f_p and use correct value for default - -## v1.1.0 - -- [COOK-861] - Add `mod_perl` and apreq2 -- [COOK-941] - fix `mod_auth_openid` on FreeBSD -- [COOK-1021] - add a commented-out LoadModule directive to keep apxs happy -- [COOK-1022] - consistency for icondir attribute -- [COOK-1023] - fix platform test for attributes -- [COOK-1024] - fix a2enmod script so it runs cleanly on !bash -- [COOK-1026] - fix `error_log` location on FreeBSD - -## v1.0.8 - -- COOK-548 - directory resource doesn't have backup parameter - -## v1.0.6 - -- COOK-915 - update to `mod_auth_openid` version 0.6, see **Recipes/mod_auth_openid** below. -- COOK-548 - Add support for FreeBSD. - -## v1.0.4 - -- COOK-859 - don't hardcode module paths - -## v1.0.2 - -- Tickets resolved in this release: COOK-788, COOK-782, COOK-780 - -## v1.0.0 - -- Red Hat family support is greatly improved, all recipes except `god_monitor` converge. -- Recipe `mod_auth_openid` now works on RHEL family distros -- Recipe `mod_php5` will now remove config from package on RHEL family so it doesn't conflict with the cookbook's. -- Added `php5.conf.erb` template for `mod_php5` recipe. -- Create the run state directory for `mod_fcgid` to prevent a startup error on RHEL version 6. -- New attribute `node['apache']['lib_dir']` to handle lib vs lib64 on RHEL family distributions. -- New attribute `node['apache']['group']`. -- Scientific Linux support added. -- Use a file resource instead of the generate-module-list executed perl script on RHEL family. -- "default" site can now be disabled. -- web_app now has an "enable" parameter. -- Support for dav_fs apache module. -- Tickets resolved in this release: COOK-754, COOK-753, COOK-665, COOK-624, COOK-579, COOK-519, COOK-518 -- Fix node references in template for a2dissite -- Use proper user and group attributes on files and templates. -- Replace the anemic README.rdoc with this new and improved superpowered README.md :). diff --git a/lc-gdn-chef/cookbooks/apache2/CHANGELOG.md b/lc-gdn-chef/cookbooks/apache2/CHANGELOG.md deleted file mode 100644 index f383f6a3a..000000000 --- a/lc-gdn-chef/cookbooks/apache2/CHANGELOG.md +++ /dev/null @@ -1,283 +0,0 @@ -# apache2 Cookbook Changelog - -This file is used to list changes made in each version of the apache2 cookbook. - -## 8.14.3 - *2022-04-20* - -Standardise files with files in sous-chefs/repo-management - -## 8.14.2 - *2022-02-03* - -- Remove delivery and switch to using reusable CI workflow -- Update tested platforms - - removed: CentOS 8, Debian 9 - - added: Rocky / Alma 8, Debian 11 -- Fix mod_php on Debian 11 -- Fedora fixes - - mod-auth-cas - - mod-wsgi - - Drop support for mod_php - -## 8.14.1 - *2021-11-03* - -- Add CentOS Stream 8 to CI pipeline - -## 8.14.0 - *2021-08-31* - -- Add `envvars_additional_params` property to install resource - -## 8.13.1 - *2021-08-30* - -- Standardise files with files in sous-chefs/repo-management - -## 8.13.0 - *2021-07-09* - -- Add `default_charset`, `server_signature`, `server_tokens`, and `trace_enable` to `install` resource -- Add `install_override` test suite - -## 8.12.0 - *2021-07-08* - -- Add `variables` property to `default_site` resource -- Convert test suites `basic_site` and `mod_wsgi` to use updated `default_site` resource - -## 8.11.2 - *2021-07-06* - -- Fixed error with delivery where it was expecting string interpolation incorrectly -- Fix EL8 welcome page - -## 8.11.1 - *2021-06-01* - -- Standardise files with files in sous-chefs/repo-management - -## 8.11.0 - *2021-05-06* - -- Add missing unified_mode from mod_php and mod_wscgi -- Fix service resource restarting the service every run -- Bump minimum Chef version to 15.3 to support unified_mode - -## 8.10.0 - *2021-04-09* - -- Fix `apache2_mod_auth_cas` resource for all supported platforms -- Fix apache devel package name on SUSE platforms -- Fix `libexec_dir` variable in `auth_cas.load` template -- Add Integration tests for `apache2_mod_auth_cas` resource -- Add docs for `apache2_mod_auth_cas` -- Add `:source_checksum`, `:login_url`, `:validate_url`, `:directives` properties to `apache2_mod_auth_cas` resource -- Allow `apache2_mod_auth_cas` resource to be nameless -- Update `mod_auth_cas` source version to 1.2 and other various updates for source installations -- Install `mod_auth_cas` by source on CentOS 8 and SUSE platforms (distro package is not currently available) -- Include yum-epel recipe on RHEL/Amazon platforms - -## 8.9.1 - *2021-03-03* - -- Fix url in README - -## 8.9.0 - *2021-01-27* - -- Enable `options` property to pass arbitrary variables to the conf template - -## 8.8.0 - *2021-01-26* - -- Remove support and testing for Ubuntu 16.04 - -## 8.7.0 - *2020-11-20* - -- Add `template_cookbook` property to `install` - -## 8.6.0 (2020-10-13) - -- Add `apache2_mod_wsgi` resource -- Fix backwards compatibility for SUSE with `a2enmod` - -## 8.5.1 (2020-10-02) - -- Add apache namespace for `site_available?` and `site_enabled?` helper methods - -## 8.5.0 (2020-09-22) - -- resolved cookstyle error: spec/libraries/default_modules_spec.rb:8:7 - refactor: `ChefCorrectness/IncorrectLibraryInjection` -- Cookstyle Bot Auto Corrections with Cookstyle 6.17.7 -- Directly include Apache2::Cookbook::Helpers in recipes and resources by default -- `config` has now `template_cookbook` property to use an external template - -## 8.4.0 (2020-09-09) - -- resolved cookstyle error: test/cookbooks/test/recipes/php.rb:1:1 refactor: `ChefCorrectness/IncorrectLibraryInjection` -- Allow override of package name and version in `install` resource -- Add tests for package name override - -## 8.3.0 (2020-07-13) - -- Add `mod_php` resource - -## 8.2.1 (2020-06-29) - -- Add missing lib_dir variable to `a2enmod` template - -## 8.2.0 (2020-06-18) - -- Updated helpers to use platform_family? when possible to simplify code -- Fixed incorrect platform version comparison logic in the helpers -- Add new platforms to the Kitchen configs -- Remove logic in the Linux helpers that checked for systemd vs. non-systemd since we only support systemd platforms now - -## 8.1.2 - 2020-06-02 - -- resolved cookstyle error: libraries/helpers.rb:196:14 refactor: `ChefCorrectness/InvalidPlatformFamilyInCase` -- Enable unified_mode for all resources - - This deprecates support for Chef Infra Client 14 and below - -## [8.1.1] - 2020-04-12 - -- Add CentOS 8 to CI pipeline -- Add Debian 10 / Remove Debian 8 from CI pipeline -- Rename libexec_dir to apache_libexec_dir - -## [8.1.0] - 2020-03-06 - -- Add 'template_cookbook' property to apache2_module -- Migrated to Github Actions for testing - -### Fixed - -- Cookstyle fixes - -### Removed - -- Removed circleci testing - -## [8.0.2] - 2019-11-15 - -- default_apache_root_group: replace with ohai root_group - -## [8.0.1] - 2019-11-15 - -- Fix not reloading service when changes in port.conf / apache2.conf - -## [8.0.0] - 2019-11-13 - -- Fix cache_dir permission so that modules can write in their cache_dir/module/ storage space -- Latest Cookstyle changes in cookstyle 5.6.2 -- Fixed bug with freebsd and suse modules adding an array to an array -- Fixed mod_ssl for suse -- Fixed docroot paths for suse - -### Breaking Changes - -- Renamed `:cookbook` property for `apache2_default_site` resource### Added - -## [7.1.1] - 2019-08-07 - -- Allow overwriting cookbook for apache2_mod templates using `template_cookbook` property. - -## [7.1.0] - 29-05-2019 - -- Add upgrading examples in UPGRADING.md -- Remove references to recipes in README.md and add a simple example -- Allow users to set / alter the default module list -- Allow users to alter the default modules configuration without re### Added - -- Uniform way to pass IP's in mod_info and mod_status - -## [7.0.0] - 05-03-2019 - -- Remove all recipes -- Use `declare_resource` in `apache2_module` -- Add default value to `apache_2_mod_proxy` -- Fix spelling of `default` in `access_file_name` property in `install.rb` - -## [6.0.0] - 25-02-2019 - -See UPGRADING.md for upgrading. - -### v6 - Behaviour Changes - -- Default recipe now calls the install resource -- Add helpers: for a full list see `libraries/helpers.rb` -- Remove all `mpm_` recipes. Move mpm setup to the install resource -- Allow user to set the mpm mode no matter what platform they're on -- Remove FreeBSD, openSuse & Fedora Kitchen testing -- `mod_` recipes now call `apache2_module_` -- Mod templates are now more configurable when calling the resources directly -- Add apache2_default_site resource -- Remove and document apache2_webapp resource -- Add the default_site resource for managing the default site -- Add site resource -- Remove the web_app resource as it was very perscriptive -- Add mod_ssl - -### v6 - Testing/CI - -- Add CircleCI and remove Travis -- Add CircleCI Orbs -- Rename test cookbook name to test -- Cleanup test integration directory -- Specs added for most helpers -- Make sysconfig parameters configurable via the install resource - -### v6 - Misc Updates & Improvements - -- Update README with new instructions on installing -- Set the server to listen on ports 80 and 443 by default -- Fix Options allowed in alias.conf -- Add resource documentation to documentation directory - -## [5.2.1] - 04-09-2018 - -- Revert ports.conf fix (ports.conf that gets installed by package conflicts. - -## [5.2.0] - 26-08-2018 - -- Drop Chef 12 support -- Add Danger and CircleCI support -- Move apache binary detection to the helpers file -- Adds apache_platform_service_name, apache_dir ,apache_conf_dir helpers -- Update kitchen configuration -- Fix ports.conf location and how its set up (#550, skadz) -- Allow httpd -t timeout to be configurable (#547, skadz) - -## [5.0.1] - 2017-09-01 - -- Test using dokken-images in kitchen-dokken -- Fix readme section for mod_php -- Replace the existing testing.md contents with a link to the Chef testing docs -- Fix mod_ldap failing on non-RHEL platforms -- Fix mod_dav_svn to install the correct packages on Debian 8/9 - -## [5.0.0] - 2017-07-13 - -### Breaking changes - -- Support for Apache 2.2 has been fully removed so we can focus on providing a solid experience for Apache 2.4 and - above. This removes support for RHEL 6, SLES 11, and Debian 7 - -### Other changes - -- Fixed openSUSE support in multiple places and added integration testing for openSUSE in Travis - -## [4.0.0] - 2017-07-10 - -- This cookbook now requires Chef 12.1 or later -- Support for Apache 2.2 on FreeBSD has been removed -- Support for Amazon Linux < 2013.09 has been removed -- Support for end of life releases of Fedora (< 24), CentOS (5), Debian (6), Linux Mint (17), and Ubuntu (12.04) have - been removed -- Removed the deprecated recipes for mod_authz_default and mod_php5 -- Switched many package resources to Chef 12+ multipackage style to speed up Chef converges and reduce log clutter -- mod_cache is now enabled when using mod_cache_disk and mod_cache_socache -- The mod_cloudflare recipe now sets up the Apt repo with https -- Improved support for Amazon Linux on Chef 13 and added Test Kitchen amazon testing -- Improved support for Debian and RHEL derivative platforms -- Improved Fedora support in multiple modules -- Improved error logging for unsupported platforms in the mod_negotiation and mod_unixd recipes -- Switched from Rake for testing to Delivery local mode -- Setup integration testing with kitchen-dokken for core platforms in Travis so that every PR is now fully tested -- Removed the EC2 and Docker kitchen files now that we have kitchen-dokken setup -- Removed apt, pacman, yum, and zypper from the Berksfile as they're no longer needed for testing -- Removed testing dependencies from the Gemfile as we're testing using ChefDK -- Added integration testing for new Debian releases - -## Pre 4.0 Changelog - -For changelog entries pre4.0 please see [the pre-4.0 CHANGELOG](CHANGELOG-pre4.md). diff --git a/lc-gdn-chef/cookbooks/apache2/LICENSE b/lc-gdn-chef/cookbooks/apache2/LICENSE deleted file mode 100644 index 8dada3eda..000000000 --- a/lc-gdn-chef/cookbooks/apache2/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed 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. diff --git a/lc-gdn-chef/cookbooks/apache2/README.md b/lc-gdn-chef/cookbooks/apache2/README.md deleted file mode 100644 index bdf740b30..000000000 --- a/lc-gdn-chef/cookbooks/apache2/README.md +++ /dev/null @@ -1,140 +0,0 @@ -# apache2 Cookbook - -[![Cookbook Version](https://img.shields.io/cookbook/v/apache2.svg)](https://supermarket.chef.io/cookbooks/apache2) -[![CI State](https://github.com/sous-chefs/apache2/workflows/ci/badge.svg)](https://github.com/sous-chefs/apache2/actions?query=workflow%3Aci) -[![OpenCollective](https://opencollective.com/sous-chefs/backers/badge.svg)](#backers) -[![OpenCollective](https://opencollective.com/sous-chefs/sponsors/badge.svg)](#sponsors) -[![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)](https://opensource.org/licenses/Apache-2.0) - -This cookbook provides a complete Debian/Ubuntu style Apache HTTPD configuration. Non-Debian based distributions such as -Red Hat/CentOS, ArchLinux and others supported by this cookbook will have a configuration that mimics Debian/Ubuntu -style as it is easier to manage with Chef. - -Debian-style Apache configuration uses scripts to manage modules and sites (vhosts). The scripts are: - -- a2ensite -- a2dissite -- a2enmod -- a2dismod -- a2enconf -- a2disconf - -This cookbook ships with templates of these scripts for non-Debian based platforms. - -## Maintainers - -This cookbook is maintained by the Sous Chefs. The Sous Chefs are a community of Chef cookbook maintainers working -together to maintain important cookbooks. If you’d like to know more please -visit [sous-chefs.org](https://sous-chefs.org/) or come chat with us on the Chef Community Slack -in [#sous-chefs](https://chefcommunity.slack.com/messages/C2V7B88SF). - -## Cookbooks - -Depending on your OS configuration and security policy, you may need additional recipes or cookbooks for this cookbook's -recipes to converge on the node. In particular, the following Operating System settings may affect the behavior of this -cookbook: - -- SELinux enabled -- Firewalls (such as iptables, ufw, etc.) -- Compile tools -- 3rd party repositories - -On RHEL, SELinux is enabled by default. The [selinux](https://supermarket.chef.io/cookbooks/selinux) cookbook contains -a `permissive` recipe that can be used to set SELinux to "Permissive" state. Otherwise, additional recipes need to be -created by the user to address SELinux permissions. - -To deal with firewalls Chef Software does provide an [iptables](https://supermarket.chef.io/cookbooks/iptables) -and [ufw](https://supermarket.chef.io/cookbooks/ufw) cookbook but is migrating from the approach used there to a more -robust solution utilizing the general [firewall](https://supermarket.chef.io/cookbooks/firewall) cookbook to setup -rules. See those cookbooks' READMEs for documentation. - -On ArchLinux, if you are using the `apache2::mod_auth_openid` recipe, you also need -the [pacman](https://supermarket.chef.io/cookbooks/pacman) cookbook for the `pacman_aur` LWRP. Put `recipe[pacman]` on -the node's expanded run list (on the node or in a role). This is not an explicit dependency because it is only required -for this single recipe and platform; the pacman default recipe performs `pacman -Sy` to keep pacman's package cache -updated. - -## Platforms - -The following platforms and versions are tested and supported using [test-kitchen](http://kitchen.ci/) - -- Ubuntu 18.04 / 20.04 -- Debian 10 / 11 -- CentOS 7+ (incl. Rocky & Alma) -- Fedora latest -- OpenSUSE Leap - -### Notes for RHEL Family - -Apache2.4 support for Centos 6 is not officially supported. - -## Usage - -It is recommended to create a project or organization -specific [wrapper cookbook](https://blog.chef.io/doing-wrapper-cookbooks-right) and add the desired custom resources to -the run list of a node. Depending on your environment, you may have multiple roles that use different recipes from this -cookbook. Adjust any attributes as desired. - -```ruby -# service['apache2'] is defined in the apache2_default_install resource but other resources are currently unable to reference it. To work around this issue, define the following helper in your cookbook: -service 'apache2' do - service_name lazy { apache_platform_service_name } - supports restart: true, status: true, reload: true - action :nothing -end - -apache2_install 'default_install' -apache2_module 'headers' -apache2_module 'ssl' - -apache2_default_site 'foo' do - default_site_name 'my_site' - template_cookbook 'my_cookbook' - port '443' - template_source 'my_site.conf.erb' - action :enable -end -``` - -Example wrapper cookbooks: -[basic site](https://github.com/sous-chefs/apache2/blob/master/test/cookbooks/test/recipes/basic_site.rb) -[ssl site](https://github.com/sous-chefs/apache2/blob/master/test/cookbooks/test/recipes/mod_ssl.rb) - -## Resources - -- [install](https://github.com/sous-chefs/apache2/blob/master/documentation/resource_apache2_install.md) -- [default_site](https://github.com/sous-chefs/apache2/blob/master/documentation/resource_apache2_default_site.md) -- [site](https://github.com/sous-chefs/apache2/blob/master/documentation/resource_apache2_site.md) -- [conf](https://github.com/sous-chefs/apache2/blob/master/documentation/resource_apache2_conf.md) -- [config](https://github.com/sous-chefs/apache2/blob/master/documentation/resource_apache2_config.md) -- [mod](https://github.com/sous-chefs/apache2/blob/master/documentation/resource_apache2_mod.md) -- [module](https://github.com/sous-chefs/apache2/blob/master/documentation/resource_apache2_module.md) -- [mod_php](https://github.com/sous-chefs/apache2/blob/master/documentation/resource_apache2_mod_php.md) -- [mod_wsgi](https://github.com/sous-chefs/apache2/blob/master/documentation/resource_apache2_mod_wsgi.md) -- [mod_auth_cas](https://github.com/sous-chefs/apache2/blob/master/documentation/resource_apache2_mod_auth_cas.md) - -## Contributors - -This project exists thanks to all the people -who [contribute.](https://opencollective.com/sous-chefs/contributors.svg?width=890&button=false) - -### Backers - -Thank you to all our backers! - -![https://opencollective.com/sous-chefs#backers](https://opencollective.com/sous-chefs/backers.svg?width=600&avatarHeight=40) - -### Sponsors - -Support this project by becoming a sponsor. Your logo will show up here with a link to your website. - -![https://opencollective.com/sous-chefs/sponsor/0/website](https://opencollective.com/sous-chefs/sponsor/0/avatar.svg?avatarHeight=100) -![https://opencollective.com/sous-chefs/sponsor/1/website](https://opencollective.com/sous-chefs/sponsor/1/avatar.svg?avatarHeight=100) -![https://opencollective.com/sous-chefs/sponsor/2/website](https://opencollective.com/sous-chefs/sponsor/2/avatar.svg?avatarHeight=100) -![https://opencollective.com/sous-chefs/sponsor/3/website](https://opencollective.com/sous-chefs/sponsor/3/avatar.svg?avatarHeight=100) -![https://opencollective.com/sous-chefs/sponsor/4/website](https://opencollective.com/sous-chefs/sponsor/4/avatar.svg?avatarHeight=100) -![https://opencollective.com/sous-chefs/sponsor/5/website](https://opencollective.com/sous-chefs/sponsor/5/avatar.svg?avatarHeight=100) -![https://opencollective.com/sous-chefs/sponsor/6/website](https://opencollective.com/sous-chefs/sponsor/6/avatar.svg?avatarHeight=100) -![https://opencollective.com/sous-chefs/sponsor/7/website](https://opencollective.com/sous-chefs/sponsor/7/avatar.svg?avatarHeight=100) -![https://opencollective.com/sous-chefs/sponsor/8/website](https://opencollective.com/sous-chefs/sponsor/8/avatar.svg?avatarHeight=100) -![https://opencollective.com/sous-chefs/sponsor/9/website](https://opencollective.com/sous-chefs/sponsor/9/avatar.svg?avatarHeight=100) diff --git a/lc-gdn-chef/cookbooks/apache2/chefignore b/lc-gdn-chef/cookbooks/apache2/chefignore deleted file mode 100644 index a27b0b258..000000000 --- a/lc-gdn-chef/cookbooks/apache2/chefignore +++ /dev/null @@ -1,115 +0,0 @@ -# Put files/directories that should be ignored in this file when uploading -# to a Chef Infra Server or Supermarket. -# Lines that start with '# ' are comments. - -# OS generated files # -###################### -.DS_Store -ehthumbs.db -Icon? -nohup.out -Thumbs.db -.envrc - -# EDITORS # -########### -.#* -.project -.settings -*_flymake -*_flymake.* -*.bak -*.sw[a-z] -*.tmproj -*~ -\#* -REVISION -TAGS* -tmtags -.vscode -.editorconfig - -## COMPILED ## -############## -*.class -*.com -*.dll -*.exe -*.o -*.pyc -*.so -*/rdoc/ -a.out -mkmf.log - -# Testing # -########### -.circleci/* -.codeclimate.yml -.delivery/* -.foodcritic -.kitchen* -.mdlrc -.overcommit.yml -.rspec -.rubocop.yml -.travis.yml -.watchr -.yamllint -azure-pipelines.yml -Dangerfile -examples/* -features/* -Guardfile -kitchen*.yml -mlc_config.json -Procfile -Rakefile -spec/* -test/* - -# SCM # -####### -.git -.gitattributes -.gitconfig -.github/* -.gitignore -.gitkeep -.gitmodules -.svn -*/.bzr/* -*/.git -*/.hg/* -*/.svn/* - -# Berkshelf # -############# -Berksfile -Berksfile.lock -cookbooks/* -tmp - -# Bundler # -########### -vendor/* -Gemfile -Gemfile.lock - -# Policyfile # -############## -Policyfile.rb -Policyfile.lock.json - -# Documentation # -############# -CODE_OF_CONDUCT* -CONTRIBUTING* -documentation/* -TESTING* -UPGRADING* - -# Vagrant # -########### -.vagrant -Vagrantfile diff --git a/lc-gdn-chef/cookbooks/apache2/files/apache2_module_conf_generate.pl b/lc-gdn-chef/cookbooks/apache2/files/apache2_module_conf_generate.pl deleted file mode 100644 index 0aef14151..000000000 --- a/lc-gdn-chef/cookbooks/apache2/files/apache2_module_conf_generate.pl +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl - -=begin - -Generates Ubuntu style module.load files. - -./apache2_module_conf_generate.pl /usr/lib64/httpd/modules /etc/httpd/mods-available - -ARGV[0] is the apache modules directory, ARGV[1] is where you want them. - -=cut - -use File::Find; - -use strict; -use warnings; - -die "Must have '/path/to/modules' and '/path/to/modules.load'" - unless $ARGV[0] && $ARGV[1]; - -find( - { - wanted => sub { - return 1 if $File::Find::name !~ /\.so$/; - my $modfile = $_; - $modfile =~ /(lib|mod_)(.+)\.so$/; - my $modname = $2; - my $filename = "$ARGV[1]/$modname.load"; - unless ( -f $filename ) { - open( FILE, ">", $filename ) or die "Cannot open $filename"; - print FILE "LoadModule " . $modname . "_module $File::Find::name\n"; - close(FILE); - } - }, - follow => 1, - }, - $ARGV[0] -); - -exit 0; diff --git a/lc-gdn-chef/cookbooks/apache2/libraries/helpers.rb b/lc-gdn-chef/cookbooks/apache2/libraries/helpers.rb deleted file mode 100644 index 8e7bedf52..000000000 --- a/lc-gdn-chef/cookbooks/apache2/libraries/helpers.rb +++ /dev/null @@ -1,500 +0,0 @@ -module Apache2 - module Cookbook - module Helpers - def apache_binary - case node['platform_family'] - when 'debian' - '/usr/sbin/apache2' - when 'freebsd' - '/usr/local/sbin/httpd' - else - '/usr/sbin/httpd' - end - end - - def apache_platform_service_name - case node['platform_family'] - when 'debian', 'suse' - 'apache2' - when 'freebsd' - 'apache24' - else - 'httpd' - end - end - - def default_types_config - case node['platform_family'] - when 'arch' - "#{apache_dir}/conf/mime.types" - when 'freebsd' - "#{apache_dir}/mime.types" - else - '/etc/mime.types' - end - end - - def apachectl - case node['platform_family'] - when 'debian', 'suse' - '/usr/sbin/apache2ctl' - when 'freebsd' - '/usr/local/sbin/apachectl' - else - '/usr/sbin/apachectl' - end - end - - def apache_dir - case node['platform_family'] - when 'debian', 'suse' - '/etc/apache2' - when 'freebsd' - '/usr/local/etc/apache24' - else - '/etc/httpd' - end - end - - def lib_dir - arch = node['kernel']['machine'] - - case node['platform_family'] - when 'rhel', 'amazon', 'fedora' - if arch =~ /64/ || %w(armv8l s390x).include?(arch) - '/usr/lib64/httpd' - else - '/usr/lib/httpd' - end - when 'suse' - if arch =~ /64/ || %w(armv8l s390x).include?(arch) - '/usr/lib64/apache2' - else - '/usr/lib/apache2' - end - when 'freebsd' - '/usr/local/libexec/apache24' - when 'arch' - '/usr/lib/httpd' - else - '/usr/lib/apache2' - end - end - - def apache_libexec_dir - if platform_family?('freebsd', 'suse') - lib_dir - else - File.join(lib_dir, 'modules') - end - end - - def apache_conf_dir - case node['platform_family'] - when 'debian', 'suse' - '/etc/apache2' - when 'freebsd' - '/usr/local/etc/apache24' - else - '/etc/httpd/conf' - end - end - - def icon_dir - case node['platform_family'] - when 'debian', 'suse' - '/usr/share/apache2/icons' - when 'freebsd' - '/usr/local/www/apache24/icons' - else - '/usr/share/httpd/icons' - end - end - - def perl_pkg - platform_family?('freebsd') ? 'perl5' : 'perl' - end - - def default_apache_pkg - case node['platform_family'] - when 'amazon' - 'httpd' - when 'rhel' - 'httpd' - when 'debian', 'suse' - 'apache2' - when 'arch' - 'apache' - when 'freebsd' - 'apache24' - else - 'httpd' - end - end - - def default_log_dir - case node['platform_family'] - when 'debian', 'suse' - '/var/log/apache2' - when 'freebsd' - '/var/log' - else - '/var/log/httpd' - end - end - - def cache_dir - case node['platform_family'] - when 'debian', 'suse' - '/var/cache/apache2' - when 'freebsd' - '/var/cache/apache24' - else - '/var/cache/httpd' - end - end - - def default_cache_root - if platform_family?('debian', 'suse', 'freebsd') - ::File.join(cache_dir, 'proxy') - else - ::File.join(cache_dir, 'mod_cache_disk') - end - end - - def lock_dir - case node['platform_family'] - when 'debian' - '/var/lock/apache2' - when 'freebsd' - '/var/run' - else - '/var/run/httpd' - end - end - - def default_docroot_dir - case node['platform_family'] - when 'arch' - '/srv/http' - when 'freebsd' - '/usr/local/www/apache24/data' - when 'suse' - '/srv/www/htdocs' - else - '/var/www/html' - end - end - - def default_cgibin_dir - case node['platform_family'] - when 'debian' - '/usr/www/cgi-bin' - when 'arch' - '/usr/share/httpd/cgi-bin' - when 'freebsd' - '/usr/lib/cgi-bin' - else - '/var/www/cgi-bin' - end - end - - def default_run_dir - case node['platform_family'] - when 'debian' - '/var/run/apache2' - when 'freebsd' - '/var/run' - else - '/var/run/httpd' - end - end - - def default_apache_user - case node['platform_family'] - when 'suse' - 'wwwrun' - when 'debian' - 'www-data' - when 'arch' - 'http' - when 'freebsd' - 'www' - else - 'apache' - end - end - - def default_apache_group - case node['platform_family'] - when 'suse', 'freebsd' - 'www' - when 'debian' - 'www-data' - when 'arch' - 'http' - else - 'apache' - end - end - - def default_modules - default_modules = %w(status alias auth_basic authn_core authn_file authz_core authz_groupfile - authz_host authz_user autoindex deflate dir env mime negotiation setenvif) - - case node['platform_family'] - when 'rhel', 'fedora', 'amazon' - default_modules.concat %w(log_config logio unixd systemd) - when 'arch', 'freebsd' - default_modules.concat %w(log_config logio unixd) - when 'suse' - default_modules.concat %w(log_config logio) - else - default_modules - end - end - - def default_mpm - case node['platform'] - when 'debian' - 'worker' - when 'linuxmint', 'ubuntu' - 'event' - else - 'prefork' - end - end - - def default_error_log - platform_family?('freebsd') ? 'httpd-error.log' : 'error.log' - end - - def default_access_log - platform_family?('freebsd') ? 'httpd-access.log' : 'access.log' - end - - def default_mime_magic_file - ::File.join(apache_dir, 'magic') - end - - def apache_pid_file - case node['platform_family'] - when 'suse' - '/var/run/httpd2.pid' - when 'debian' - '/var/run/apache2/apache2.pid' - when 'freebsd' - '/var/run/httpd.pid' - else - '/var/run/httpd/httpd.pid' - end - end - - def conf_enabled?(new_resource) - ::File.symlink?("#{apache_dir}/conf-enabled/#{new_resource.name}.conf") - end - - def mod_enabled?(new_resource) - ::File.symlink?("#{apache_dir}/mods-enabled/#{new_resource.name}.load") - end - - def apache_site_enabled?(site_name) - ::File.symlink?("#{apache_dir}/sites-enabled/#{site_name}.conf") - end - - def apache_site_available?(site_name) - ::File.exist?("#{apache_dir}/sites-available/#{site_name}.conf") - end - - def apache_devel_package(mpm) - case node['platform_family'] - when 'amazon' - if node['platform_version'].to_i == 2 - 'httpd-devel' - else - 'httpd24-devel' - end - when 'debian' - if mpm == 'prefork' - 'apache2-prefork-dev' - else - 'apache2-dev' - end - when 'suse' - 'apache2-devel' - else - 'httpd-devel' - end - end - - def default_pass_phrase_dialog - platform?('ubuntu') ? 'exec:/usr/share/apache2/ask-for-passphrase' : 'builtin' - end - - def default_session_cache - case node['platform_family'] - when 'freebsd' - 'shmcb:/var/run/ssl_scache(512000)' - when 'rhel', 'fedora', 'suse', 'amazon' - 'shmcb:/var/cache/mod_ssl/scache(512000)' - else - 'shmcb:/var/run/apache2/ssl_scache' - end - end - - def config_file?(mod_name) - if %w(ldap - actions - alias - auth_cas - autoindex - cache_disk - cgid - dav_fs - deflate - dir - fastcgi - fcgid - include - info - ldap - mime_magic - mime - negotiation - pagespeed - proxy_balancer - proxy_ftp - proxy - reqtimeout - setenvif - ssl - status - userdir - mpm_event - mpm_prefork - mpm_worker - ).include?(mod_name) - true - else - false - end - end - - def pagespeed_url - suffix = platform_family?('rhel', 'fedora', 'amazon') ? 'rpm' : 'deb' - - if node['kernel']['machine'] =~ /^i[36']86$/ - "https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_i386.#{suffix}" - else - "https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.#{suffix}" - end - end - - def default_site_template_source - platform_family?('debian') ? "#{default_site_name}.conf.erb" : 'welcome.conf.erb' - end - - # mod_php - def apache_mod_php_package - case node['platform_family'] - when 'debian' - 'libapache2-mod-php' - when 'rhel', 'amazon' - 'mod_php' - when 'suse' - 'apache2-mod_php7' - end - end - - def apache_mod_php_modulename - case node['platform_family'] - when 'amazon' - 'php5_module' - when 'rhel' - if node['platform_version'].to_i >= 8 - 'php7_module' - else - 'php5_module' - end - else - 'php7_module' - end - end - - def apache_mod_php_filename - case node['platform_family'] - when 'debian' - if platform?('debian') && node['platform_version'].to_i == 10 - 'libphp7.3.so' - elsif platform?('debian') && node['platform_version'].to_i >= 11 - 'libphp7.4.so' - elsif platform?('ubuntu') && node['platform_version'].to_f == 18.04 - 'libphp7.2.so' - elsif platform?('ubuntu') && node['platform_version'].to_f >= 20.04 - 'libphp7.4.so' - else - 'libphp7.0.so' - end - when 'rhel' - if node['platform_version'].to_i >= 8 - 'libphp7.so' - else - 'libphp5.so' - end - when 'amazon' - 'libphp5.so' - when 'suse' - 'mod_php7.so' - end - end - - # mod_wsgi - def apache_mod_wsgi_package - case node['platform_family'] - when 'debian' - 'libapache2-mod-wsgi-py3' - when 'amazon' - 'mod_wsgi' - when 'rhel', 'fedora' - if node['platform_version'].to_i >= 8 - 'python3-mod_wsgi' - else - 'mod_wsgi' - end - when 'suse' - 'apache2-mod_wsgi-python3' - end - end - - def apache_mod_wsgi_filename - if platform_family?('rhel', 'fedora') && node['platform_version'].to_i >= 8 - 'mod_wsgi_python3.so' - else - 'mod_wsgi.so' - end - end - - def apache_mod_auth_cas_install_method - if (platform_family?('rhel') && node['platform_version'].to_i >= 8) \ - || platform_family?('suse') || platform_family?('fedora') - 'source' - else - 'package' - end - end - - def apache_mod_auth_cas_devel_packages - if platform_family?('rhel', 'amazon', 'fedora') - %w(openssl-devel libcurl-devel pcre-devel libtool) - elsif platform_family?('debian') - %w(libssl-dev libcurl4-openssl-dev libpcre++-dev libtool) - elsif platform_family?('suse') - %w(libopenssl-devel libcurl-devel pcre-devel libtool) - end - end - end - end -end - -Chef::DSL::Recipe.include Apache2::Cookbook::Helpers -Chef::Resource.include Apache2::Cookbook::Helpers diff --git a/lc-gdn-chef/cookbooks/apache2/metadata.json b/lc-gdn-chef/cookbooks/apache2/metadata.json deleted file mode 100644 index 454f08f4c..000000000 --- a/lc-gdn-chef/cookbooks/apache2/metadata.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "apache2", - "description": "Installs and configures apache2", - "long_description": "", - "maintainer": "Sous Chefs", - "maintainer_email": "help@sous-chefs.org", - "license": "Apache-2.0", - "platforms": { - "debian": ">= 0.0.0", - "ubuntu": ">= 0.0.0", - "redhat": ">= 0.0.0", - "centos": ">= 0.0.0", - "fedora": ">= 0.0.0", - "amazon": ">= 0.0.0", - "scientific": ">= 0.0.0", - "freebsd": ">= 0.0.0", - "suse": ">= 0.0.0", - "opensuse": ">= 0.0.0", - "opensuseleap": ">= 0.0.0", - "arch": ">= 0.0.0" - }, - "dependencies": { - "yum-epel": ">= 0.0.0" - }, - "providing": { - }, - "recipes": { - }, - "version": "8.14.3", - "source_url": "https://github.com/sous-chefs/apache2", - "issues_url": "https://github.com/sous-chefs/apache2/issues", - "privacy": false, - "chef_versions": [ - [ - ">= 15.3" - ] - ], - "ohai_versions": [ - ], - "gems": [ - ], - "eager_load_libraries": true -} diff --git a/lc-gdn-chef/cookbooks/apache2/metadata.rb b/lc-gdn-chef/cookbooks/apache2/metadata.rb deleted file mode 100644 index 938144c95..000000000 --- a/lc-gdn-chef/cookbooks/apache2/metadata.rb +++ /dev/null @@ -1,24 +0,0 @@ -name 'apache2' -source_url 'https://github.com/sous-chefs/apache2' -issues_url 'https://github.com/sous-chefs/apache2/issues' -maintainer 'Sous Chefs' -maintainer_email 'help@sous-chefs.org' -chef_version '>= 15.3' -license 'Apache-2.0' -description 'Installs and configures apache2' -version '8.14.3' - -depends 'yum-epel' - -supports 'debian' -supports 'ubuntu' -supports 'redhat' -supports 'centos' -supports 'fedora' -supports 'amazon' -supports 'scientific' -supports 'freebsd' -supports 'suse' -supports 'opensuse' -supports 'opensuseleap' -supports 'arch' diff --git a/lc-gdn-chef/cookbooks/apache2/resources/conf.rb b/lc-gdn-chef/cookbooks/apache2/resources/conf.rb deleted file mode 100644 index 507278760..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/conf.rb +++ /dev/null @@ -1,47 +0,0 @@ -unified_mode true - -property :path, String, - default: lazy { "#{apache_dir}/conf-available" }, - description: 'Path to the conf-available directory' - -property :root_group, String, - default: lazy { node['root_group'] }, - description: '' - -property :template_cookbook, String, - default: 'apache2', - description: 'Cookbook to source the template from. Override this to provide your own template' - -property :options, Hash, - default: { - server_tokens: 'Prod', - server_signature: 'On', - trace_enable: 'Off', - }, - description: 'A hash to pass to the template' - -action :enable do - template ::File.join(new_resource.path, "#{new_resource.name}.conf") do - cookbook new_resource.template_cookbook - owner 'root' - group new_resource.root_group - backup false - mode '0644' - variables new_resource.options.merge({ apache_dir: apache_dir }) - notifies :restart, 'service[apache2]', :delayed - end - - execute "a2enconf #{new_resource.name}" do - command "/usr/sbin/a2enconf #{new_resource.name}" - notifies :restart, 'service[apache2]', :delayed - not_if { conf_enabled?(new_resource) } - end -end - -action :disable do - execute "a2disconf #{new_resource.name}" do - command "/usr/sbin/a2disconf #{new_resource.name}" - notifies :reload, 'service[apache2]', :delayed - only_if { conf_enabled?(new_resource) } - end -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/config.rb b/lc-gdn-chef/cookbooks/apache2/resources/config.rb deleted file mode 100644 index 4944e85cd..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/config.rb +++ /dev/null @@ -1,106 +0,0 @@ -unified_mode true - -property :root_group, String, - default: lazy { node['root_group'] }, - description: 'Group that the root user on the box runs as. Defaults to platform specific locations, see libraries/helpers.rb' - -property :access_file_name, String, - default: '.htaccess', - description: 'String: Access filename' - -property :log_dir, String, - default: lazy { default_log_dir }, - description: 'Log directory location. Defaults to platform specific locations, see libraries/helpers.rb' - -property :error_log, String, - default: lazy { default_error_log }, - description: 'Error log location. Defaults to platform specific locations, see libraries/helpers.rb' - -property :log_level, String, - default: 'warn', - description: 'log level for apache2' - -property :apache_user, String, - default: lazy { default_apache_user }, - description: 'Set to override the default apache2 user. Defaults to platform specific locations, see libraries/helpers.rb' - -property :apache_group, String, - default: lazy { default_apache_group }, - description: 'Set to override the default apache2 user. Defaults to platform specific locations, see libraries/helpers.rb' - -property :keep_alive, String, - equal_to: %w(On Off), - default: 'On', - description: 'Persistent connection feature of HTTP/1.1 provide long-lived HTTP sessions' - -property :max_keep_alive_requests, Integer, - default: 100, - description: 'MaxKeepAliveRequests' - -property :keep_alive_timeout, Integer, - default: 5, - description: 'KeepAliveTimeout' - -property :docroot_dir, String, - default: lazy { default_docroot_dir }, - description: 'Apache document root.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :timeout, [Integer, String], - coerce: proc { |m| m.is_a?(Integer) ? m.to_s : m }, - default: 300, - description: 'The number of seconds before receives and sends time out' - -property :server_name, String, - default: 'localhost', - description: 'Sets the ServerName directive' - -property :run_dir, String, - default: lazy { default_run_dir }, - description: ' Sets the DefaultRuntimeDir directive.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :template_cookbook, String, - default: 'apache2', - description: 'Cookbook containing the template file' - -action :create do - template 'apache2.conf' do - if platform_family?('debian') - path "#{apache_conf_dir}/apache2.conf" - else - path "#{apache_conf_dir}/httpd.conf" - end - action :create - source 'apache2.conf.erb' - cookbook new_resource.template_cookbook - owner 'root' - group new_resource.root_group - mode '0640' - variables( - access_file_name: new_resource.access_file_name, - apache_binary: apache_binary, - apache_dir: apache_dir, - apache_user: new_resource.apache_user, - apache_group: new_resource.apache_group, - docroot_dir: new_resource.docroot_dir, - error_log: new_resource.error_log, - keep_alive: new_resource.keep_alive, - keep_alive_timeout: new_resource.keep_alive_timeout, - lock_dir: lock_dir, - log_dir: new_resource.log_dir, - log_level: new_resource.log_level, - max_keep_alive_requests: new_resource.max_keep_alive_requests, - pid_file: apache_pid_file, - run_dir: new_resource.run_dir, - timeout: new_resource.timeout, - server_name: new_resource.server_name - ) - notifies :enable, 'service[apache2]', :delayed - notifies :restart, 'service[apache2]', :delayed - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/default_site.rb b/lc-gdn-chef/cookbooks/apache2/resources/default_site.rb deleted file mode 100644 index 674be9e91..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/default_site.rb +++ /dev/null @@ -1,95 +0,0 @@ -unified_mode true - -property :default_site_name, String, - default: 'default-site', - description: 'The default site name' - -property :site_action, [String, Symbol], - default: :enable, - coerce: proc { |m| m.is_a?(String) ? m.to_i : m }, - equal_to: %i( enable disable), - description: 'Enable the site. Allows you to place all the configuration on disk but not enable the site' - -property :port, String, - default: '80', - description: 'Listen port' - -property :template_cookbook, String, - default: 'apache2', - description: 'Cookbook to source the template file from' - -property :server_admin, String, - default: 'root@localhost', - description: 'Default site contact name' - -property :log_level, String, - default: 'warn', - description: 'Log level for apache2' - -property :log_dir, String, - default: lazy { default_log_dir }, - description: 'Default Apache2 log directory' - -property :docroot_dir, String, - default: lazy { default_docroot_dir }, - description: 'Apache document root.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :apache_root_group, String, - default: lazy { node['root_group'] }, - description: 'Group that the root user on the box runs as.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :template_source, String, - default: lazy { default_site_template_source }, - description: 'Source for the template.' - -property :variables, Hash, - default: {}, - description: 'A hash to pass to the template' - -action :enable do - template "#{new_resource.default_site_name}.conf" do - source new_resource.template_source - path "#{apache_dir}/sites-available/#{new_resource.default_site_name}.conf" - owner 'root' - group new_resource.apache_root_group - mode '0644' - cookbook new_resource.template_cookbook - variables new_resource.variables.merge({ - access_log: default_access_log, - cgibin_dir: default_cgibin_dir, - docroot_dir: new_resource.docroot_dir, - error_log: default_error_log, - log_dir: default_log_dir, - log_level: new_resource.log_level, - port: new_resource.port, - server_admin: new_resource.server_admin, - site_name: new_resource.default_site_name, - }) - end - - apache2_site new_resource.default_site_name do - action new_resource.site_action - end -end - -action :disable do - template "#{new_resource.default_site_name}.conf" do - path "#{apache_dir}/sites-available/#{new_resource.default_site_name}.conf" - source 'default-site.conf.erb' - owner 'root' - group new_resource.apache_root_group - mode '0644' - cookbook new_resource.template_cookbook - action :delete - end - - apache2_site new_resource.default_site_name do - action :disable - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/install.rb b/lc-gdn-chef/cookbooks/apache2/resources/install.rb deleted file mode 100644 index 259c8e144..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/install.rb +++ /dev/null @@ -1,406 +0,0 @@ -unified_mode true - -property :apache_pkg, String, - default: lazy { default_apache_pkg }, - description: 'Name of the apache package to install. -Defaults to platform specific names, see libraries/helpers.rb' - -property :apache_version, String, - default: '', - description: 'Version of the apache package to install. -Defaults to the newest available.' - -property :root_group, String, - default: lazy { node['root_group'] }, - description: 'Group that the root user on the box runs as. -Defaults to platform specific locations, see libraries/helpers.rb' - -property :apache_user, String, - default: lazy { default_apache_user }, - description: 'Set to override the default apache2 user.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :apache_group, String, - default: lazy { default_apache_group }, - description: 'Set to override the default apache2 user.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :log_dir, String, - default: lazy { default_log_dir }, - description: 'Log directory location.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :error_log, String, - default: lazy { default_error_log }, - description: 'Error log location.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :log_level, String, - default: 'warn', - description: 'Log level for apache2' - -property :apache_locale, String, - default: 'system', - description: 'Locale for apache2, defaults to the system locale' - -property :status_url, String, - default: 'http://localhost:80/server-status', - description: 'URL for status checks' - -property :server_name, String, - default: 'localhost', - description: 'Sets the ServerName directive' - -property :server_signature, String, - equal_to: %w(On Off EMail), - default: 'On', - description: 'Sets the ServerSignature directive' - -property :server_tokens, String, - equal_to: %w(Major Minor Min Minimal Prod ProductOnly OS Full), - default: 'Prod', - description: 'Sets the ServerTokens directive' - -property :trace_enable, String, - equal_to: %w(On Off extended), - default: 'Off', - description: 'Sets the TraceEnable directive' - -property :default_charset, [String, Array], - coerce: proc { |p| p.is_a?(Array) ? p : Array(p) }, - description: 'Sets the AddDefaultCharset directive for each element provided' - -property :httpd_t_timeout, Integer, - default: 10, - description: 'Service timeout setting. Defaults to 10 seconds' - -property :mpm, String, - default: lazy { default_mpm }, - description: 'Multi-processing Module.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :mpm_conf, Hash, - default: {}, - description: 'Multi-processing Module configuration options.' - -property :modules, [String, Array], - default: lazy { default_modules }, - description: 'List of default modules activated.' - -property :mod_conf, Hash, - default: {}, - description: 'other default modules optional configuration, passed with an Hash of Hash using the module name as key.' - -property :listen, [String, Array], - default: %w(80 443), - coerce: proc { |p| p.is_a?(Array) ? p : Array(p) }, - description: 'Port to listen on. Defaults to both 80 & 443' - -property :keep_alive, String, - equal_to: %w(On Off), - default: 'On', - description: 'Persistent connection feature of HTTP/1.1 provide long-lived HTTP sessions' - -property :max_keep_alive_requests, Integer, - default: 100, - description: 'MaxKeepAliveRequests' - -property :keep_alive_timeout, Integer, - default: 5, - description: 'KeepAliveTimeout' - -property :docroot_dir, String, - default: lazy { default_docroot_dir }, - description: 'Apache document root.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :run_dir, String, - default: lazy { default_run_dir }, - description: 'Location for APACHE_RUN_DIR.'\ -'Defaults to platform specific locations, see libraries/helpers.rb' - -property :access_file_name, String, - default: '.htaccess', - description: 'Access filename' - -property :timeout, [Integer, String], - coerce: proc { |m| m.is_a?(Integer) ? m.to_s : m }, - default: 300, - description: 'The number of seconds before receives and sends time out' - -property :envvars_additional_params, Hash, - description: 'Hash of additional environment variables to add to the envvars file' - -property :sysconfig_additional_params, Hash, - description: 'Hash of additional sysconfig parameters to apply to the system' - -property :template_cookbook, String, - default: 'apache2', - description: 'Cookbook to source the template from. Override this to provide your own template' - -action :install do - package [new_resource.apache_pkg, perl_pkg] do - version [new_resource.apache_version, nil] unless new_resource.apache_version.empty? - end - # Disabling for now as we don't have Fedora support (right now) - # package 'perl-Getopt-Long-Descriptive' if platform?('fedora') - - # Setup the config directories as per Debian for easier adding and removing config - # If we didn't do this, we would need to use the line cookbook to remove and add config from - # a single file. - directory apache_dir do - mode '0750' - owner 'root' - group new_resource.root_group - end - - %w(sites-available sites-enabled mods-available mods-enabled conf-available conf-enabled).each do |dir| - directory "#{apache_dir}/#{dir}" do - mode '0750' - owner 'root' - group new_resource.root_group - end - end - - %w( conf.d conf.modules.d ).each do |dir| - directory "#{apache_dir}/#{dir}" do - recursive true - action :delete - end - end - - directory new_resource.log_dir do - mode '0750' - recursive true - end - - template '/usr/sbin/a2enmod' do - source 'a2enmod.erb' - cookbook 'apache2' - mode '0700' - owner 'root' - variables( - apachectl: apachectl, - apache_dir: apache_dir, - lib_dir: lib_dir - ) - group new_resource.root_group - action :create - end - - %w(a2ensite a2dissite a2dismod a2enconf a2disconf).each do |modscript| - link "/usr/sbin/#{modscript}" do - to '/usr/sbin/a2enmod' - end - end - - unless platform_family?('debian') - cookbook_file '/usr/local/bin/apache2_module_conf_generate.pl' do - source 'apache2_module_conf_generate.pl' - cookbook 'apache2' - mode '0750' - owner 'root' - group new_resource.root_group - end - - with_run_context :root do - execute 'generate-module-list' do - command "/usr/local/bin/apache2_module_conf_generate.pl #{lib_dir} #{apache_dir}/mods-available" - action :nothing - end - end - end - - if platform_family?('freebsd') - directory "#{apache_dir}/Includes" do - action :delete - recursive true - end - - directory "#{apache_dir}/extra" do - action :delete - recursive true - end - end - - if platform_family?('suse') - directory "#{apache_dir}/vhosts.d" do - action :delete - recursive true - end - - %w(charset.conv default-vhost.conf default-server.conf default-vhost-ssl.conf errors.conf listen.conf mime.types mod_autoindex-defaults.conf mod_info.conf mod_log_config.conf mod_status.conf mod_userdir.conf mod_usertrack.conf uid.conf).each do |file| - file "#{apache_dir}/#{file}" do - action :delete - backup false - end - end - end - - directory "#{apache_dir}/ssl" do - mode '0750' - owner 'root' - group new_resource.root_group - end - - directory cache_dir do - mode '0755' - owner 'root' - group new_resource.root_group - end - - directory lock_dir do - mode '0750' - if platform_family?('debian') - owner new_resource.apache_user - else - owner 'root' - end - group new_resource.root_group - end - - template "/etc/sysconfig/#{apache_platform_service_name}" do - source 'etc-sysconfig-httpd.erb' - cookbook 'apache2' - owner 'root' - group new_resource.root_group - mode '0644' - variables( - apache_binary: apache_binary, - apache_dir: apache_dir, - sysconfig_additional_params: new_resource.sysconfig_additional_params - ) - only_if { platform_family?('rhel', 'amazon', 'fedora', 'suse') } - end - - template "#{apache_dir}/envvars" do - source 'envvars.erb' - cookbook 'apache2' - owner 'root' - group new_resource.root_group - mode '0644' - variables( - lock_dir: lock_dir, - log_dir: new_resource.log_dir, - apache_user: new_resource.apache_user, - apache_group: new_resource.apache_group, - pid_file: apache_pid_file, - apache_locale: new_resource.apache_locale, - status_url: new_resource.status_url, - run_dir: new_resource.run_dir, - envvars_additional_params: new_resource.envvars_additional_params - ) - only_if { platform_family?('debian') } - end - - apache2_config 'apache2.conf' do - access_file_name new_resource.access_file_name - log_dir new_resource.log_dir - error_log new_resource.error_log - log_level new_resource.log_level - apache_user new_resource.apache_user - apache_group new_resource.apache_group - keep_alive new_resource.keep_alive - max_keep_alive_requests new_resource.max_keep_alive_requests - keep_alive_timeout new_resource.keep_alive_timeout - docroot_dir new_resource.docroot_dir - timeout new_resource.timeout - server_name new_resource.server_name - template_cookbook new_resource.template_cookbook - end - - apache2_conf 'security' do - options( - server_signature: new_resource.server_signature, - server_tokens: new_resource.server_tokens, - trace_enable: new_resource.trace_enable - ) - end - - apache2_conf 'charset' do - options( - default_charset: new_resource.default_charset - ) - end - - template 'ports.conf' do - path "#{apache_dir}/ports.conf" - cookbook 'apache2' - mode '0644' - variables(listen: new_resource.listen) - notifies :restart, 'service[apache2]', :delayed - end - - # MPM Support Setup - case new_resource.mpm - when 'event' - if platform_family?('suse') - package %w(apache2-prefork apache2-worker) do - action :remove - end - - package 'apache2-event' - else - %w(mpm_prefork mpm_worker).each do |mpm| - apache2_module mpm do - action :disable - end - end - - apache2_module 'mpm_event' do - mod_conf new_resource.mpm_conf || new_resource.mod_conf[:mpm_event] - apache_service_notification :restart - end - end - - when 'prefork' - if platform_family?('suse') - package %w(apache2-event apache2-worker) do - action :remove - end - - package 'apache2-prefork' - else - %w(mpm_event mpm_worker).each do |mpm| - apache2_module mpm do - action :disable - end - end - - apache2_module 'mpm_prefork' do - mod_conf new_resource.mpm_conf || new_resource.mod_conf[:mpm_prefork] - apache_service_notification :restart - end - end - - when 'worker' - if platform_family?('suse') - package %w(apache2-event apache2-prefork) do - action :remove - end - - package 'apache2-worker' - else - %w(mpm_prefork mpm_event).each do |mpm| - apache2_module mpm do - action :disable - end - end - - apache2_module 'mpm_worker' do - mod_conf new_resource.mpm_conf || new_resource.mod_conf[:mpm_worker] - apache_service_notification :restart - end - end - end - - new_resource.modules.each do |mod| - apache2_module mod do - mod_conf new_resource.mod_conf[mod.to_sym] - end - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod.rb deleted file mode 100644 index 0df268abe..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod.rb +++ /dev/null @@ -1,30 +0,0 @@ -unified_mode true - -property :template, String, - name_property: true, - description: 'Name of the template ' - -property :root_group, String, - default: lazy { node['root_group'] }, - description: 'Set to override the platforms default root group for the template file' - -property :template_cookbook, String, - default: 'apache2', - description: 'Cookbook containing the template file' - -action :create do - template ::File.join(apache_dir, 'mods-available', "#{new_resource.template}.conf") do - source "mods/#{new_resource.template}.conf.erb" - cookbook new_resource.template_cookbook - owner 'root' - group new_resource.root_group - mode '0644' - variables(apache_dir: apache_dir) - notifies :reload, 'service[apache2]', :delayed - action :create - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_actions.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_actions.rb deleted file mode 100644 index caddf1172..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_actions.rb +++ /dev/null @@ -1,17 +0,0 @@ -unified_mode true - -property :actions, Hash, - default: {}, - description: 'A hash of actions, key: action-type value: cgi-script e.g. { news-handler: \'"/cgi-bin/news.cgi" virtual\' } ' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'actions.conf') do - source 'mods/actions.conf.erb' - cookbook 'apache2' - variables(actions: new_resource.actions) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_alias.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_alias.rb deleted file mode 100644 index 12c217d7b..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_alias.rb +++ /dev/null @@ -1,35 +0,0 @@ -unified_mode true - -property :options, Array, - default: %w(Indexes MultiViews SymLinksIfOwnerMatch), - description: 'Alias options' - -property :icondir, String, - default: lazy { icon_dir }, - description: 'The icon directory -Defaults to platform specific locations, see libraries/helpers.rb' - -property :allow_override, Array, - default: %w(None), - description: 'For full description see https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride' - -property :require, String, - default: 'all granted', - description: 'For full description see https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'alias.conf') do - source 'mods/alias.conf.erb' - cookbook 'apache2' - variables( - icondir: new_resource.icondir, - options: new_resource.options, - allow_override: new_resource.allow_override, - require: new_resource.require - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_auth_cas.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_auth_cas.rb deleted file mode 100644 index e1c634d97..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_auth_cas.rb +++ /dev/null @@ -1,133 +0,0 @@ -unified_mode true - -property :name, String, default: '' - -property :install_method, String, - equal_to: %w( source package ), - default: lazy { apache_mod_auth_cas_install_method }, - description: 'Install method for Mod auth CAS' - -property :source_revision, String, - default: 'v1.2', - description: 'Revision for the mod auth cas source install' - -property :source_checksum, String, - default: 'b05a194f6c255f65a10537242648d8c0c2110960c03aff240bd8f52eaa454c29', - description: 'Checksum for the mod auth cas source install' - -property :login_url, String, - default: 'https://login.example.org/cas/login', - description: 'The URL to redirect users to when they attempt to access a CAS protected resource and do not have an existing session.' - -property :validate_url, String, - default: 'https://login.example.org/cas/serviceValidate', - description: 'The URL to use when validating a ticket presented by a client' - -property :root_group, String, - default: lazy { node['root_group'] }, - description: 'Group that the root user on the box runs as. -Defaults to platform specific locations, see libraries/helpers.rb' - -property :apache_user, String, - default: lazy { default_apache_user }, - description: 'Set to override the default apache2 user. -Defaults to platform specific locations, see libraries/helpers.rb' - -property :apache_group, String, - default: lazy { default_apache_group }, - description: 'Set to override the default apache2 user. -Defaults to platform specific locations, see libraries/helpers.rb' - -property :mpm, String, - default: lazy { default_mpm }, - description: 'Apache2 MPM: used to determine which devel package to install on Debian' - -property :directives, Hash, - description: 'Hash of optional directives to pass to the mod_auth_cas module configuration' - -action :install do - if new_resource.install_method.eql? 'source' - package [apache_devel_package(new_resource.mpm), apache_mod_auth_cas_devel_packages].flatten - - build_essential 'mod_auth_cas' - - mod_auth_cas_tarball = "#{Chef::Config[:file_cache_path]}/mod_auth_cas.tar.gz" - - remote_file mod_auth_cas_tarball do - source "https://github.com/apereo/mod_auth_cas/archive/#{new_resource.source_revision}.tar.gz" - checksum new_resource.source_checksum - end - - archive_file mod_auth_cas_tarball do - destination "#{Chef::Config[:file_cache_path]}/mod_auth_cas" - notifies :run, 'execute[compile mod_auth_cas]', :immediately - end - - execute 'compile mod_auth_cas' do - command 'autoreconf -ivf && ./configure && make && make install' - cwd "#{Chef::Config[:file_cache_path]}/mod_auth_cas/mod_auth_cas-#{new_resource.source_revision.gsub(/^v/, '')}" - not_if { ::File.exist?("#{apache_libexec_dir}/mod_auth_cas.so") } - end - - template "#{apache_dir}/mods-available/auth_cas.load" do - cookbook 'apache2' - source 'mods/auth_cas.load.erb' - owner 'root' - group new_resource.root_group - variables(cache_dir: cache_dir, libexec_dir: apache_libexec_dir) - mode '0644' - end - else - - case node['platform_family'] - when 'debian' - package 'libapache2-mod-auth-cas' - when 'rhel', 'fedora', 'amazon' - include_recipe 'yum-epel' unless platform_family?('fedora') - - package 'mod_auth_cas' do - notifies :run, 'execute[generate-module-list]', :immediately - notifies :delete, 'directory[purge distro conf.modules.d]', :immediately - notifies :delete, 'directory[purge distro conf.d]', :immediately - end - - directory 'purge distro conf.modules.d' do - path "#{apache_dir}/conf.modules.d" - recursive true - action :nothing - end - - directory 'purge distro conf.d' do - path "#{apache_dir}/conf.d" - recursive true - action :nothing - end - - file "#{apache_dir}/conf.d/auth_cas.conf" do - content '# conf is under mods-available/auth_cas.conf - apache2 cookbook\n' - only_if { ::Dir.exist?("#{apache_dir}/conf.d") } - end - end - end - - apache2_module 'auth_cas' do - template_cookbook 'apache2' - mod_conf( - cache_dir: cache_dir, - login_url: new_resource.login_url, - validate_url: new_resource.validate_url, - directives: new_resource.directives - ) - notifies :reload, 'service[apache2]', :delayed - end - - directory "#{cache_dir}/mod_auth_cas" do - owner new_resource.apache_user - group new_resource.apache_group - mode '0700' - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_autoindex.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_autoindex.rb deleted file mode 100644 index 6a2377b73..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_autoindex.rb +++ /dev/null @@ -1,34 +0,0 @@ -unified_mode true - -property :index_options, Array, - default: %w(FancyIndexing VersionSort HTMLTable NameWidth=* DescriptionWidth=* Charset=UTF-8), - description: 'An array of directory indexing options. For more inforamtion see https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html#indexoptions' - -property :readme_name, String, - default: 'README.html', - description: 'Name of the file that will be inserted at the end of the index listing. For more information see https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html#readmename' - -property :header_name, String, - default: 'HEADER.html', - description: 'Header name. For more information see https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html#headername' - -property :index_ignore, String, - default: '.??* *~ *# RCS CVS *,v *,t', - description: 'Adds to the list of files to hide when listing a directory. For more information see https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html#indexignore' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'autoindex.conf') do - source 'mods/autoindex.conf.erb' - cookbook 'apache2' - variables( - header_name: new_resource.header_name, - index_options: new_resource.index_options, - index_ignore: new_resource.index_ignore, - readme_name: new_resource.readme_name - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_cache_disk.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_cache_disk.rb deleted file mode 100644 index aace34842..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_cache_disk.rb +++ /dev/null @@ -1,30 +0,0 @@ -unified_mode true - -property :cache_root, String, - default: lazy { default_cache_root }, - description: 'Root directory to keep the cache. -Defaults to platform specific locations, see libraries/helpers.rb' - -property :cache_dir_levels, String, - default: '2', - description: 'https://httpd.apache.org/docs/2.4/mod/mod_cache_disk.html#cachedirlevels' - -property :cache_dir_length, String, - default: '2', - description: 'https://httpd.apache.org/docs/2.4/mod/mod_cache_disk.html#cachedirlength' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'cache_disk.conf') do - source 'mods/cache_disk.conf.erb' - cookbook 'apache2' - variables( - cache_root: new_resource.cache_root, - cache_dir_levels: new_resource.cache_dir_levels, - cache_dir_length: new_resource.cache_dir_length - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_cgid.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_cgid.rb deleted file mode 100644 index 6cc181933..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_cgid.rb +++ /dev/null @@ -1,16 +0,0 @@ -unified_mode true - -property :script_sock, String, - default: lazy { ::File.join(default_run_dir, 'cgisock') } - -action :create do - template ::File.join(apache_dir, 'mods-available', 'cgid.conf') do - source 'mods/cgid.conf.erb' - cookbook 'apache2' - variables(script_sock: new_resource.script_sock) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_dav_fs.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_dav_fs.rb deleted file mode 100644 index 88d14755a..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_dav_fs.rb +++ /dev/null @@ -1,18 +0,0 @@ -unified_mode true - -property :dav_lock_db, String, - default: lazy { ::File.join(lock_dir, 'DAVLock') }, - description: 'LockDB file location. -Defaults to platform specific locations, see libraries/helpers.rb' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'dav_fs.conf') do - source 'mods/dav_fs.conf.erb' - cookbook 'apache2' - variables(dav_lock_db: new_resource.dav_lock_db) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_deflate.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_deflate.rb deleted file mode 100644 index 64776d3c7..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_deflate.rb +++ /dev/null @@ -1,29 +0,0 @@ -unified_mode true - -property :add_output_filter_by_type, Hash, - default: { - 1 => 'DEFLATE text/html text/plain text/xml', - 2 => 'DEFLATE text/css', - 3 => 'DEFLATE application/x-javascript application/javascript application/ecmascript', - 4 => 'DEFLATE application/rss+xml', - 5 => 'DEFLATE application/xml', - 6 => 'DEFLATE application/xhtml+xml', - 7 => 'DEFLATE image/svg+xml', - 8 => 'DEFLATE application/atom_xml', - 9 => 'DEFLATE application/x-httpd-php', - 10 => 'DEFLATE application/x-httpd-fastphp', - 11 => 'DEFLATE application/x-httpd-eruby', - }, - description: 'A hash of output filters, ordered by key number' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'deflate.conf') do - source 'mods/deflate.conf.erb' - cookbook 'apache2' - variables(add_output_filter_by_type: new_resource.add_output_filter_by_type) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_dir.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_dir.rb deleted file mode 100644 index 4afa84c10..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_dir.rb +++ /dev/null @@ -1,24 +0,0 @@ -unified_mode true - -property :directory_index, Array, - default: %w( - index.html - index.cgi - index.pl - index.php - index.xhtml - index.htm - ), - description: 'Array of directory indexes' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'dir.conf') do - source 'mods/dir.conf.erb' - cookbook 'apache2' - variables(directory_index: new_resource.directory_index) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_fastcgi.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_fastcgi.rb deleted file mode 100644 index ea3b336d3..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_fastcgi.rb +++ /dev/null @@ -1,30 +0,0 @@ -unified_mode true - -property :fast_cgi_wrapper, String, - default: '', - description: 'Defaults to an empty string' - -property :add_handler, Hash, - default: { 1 => 'fastcgi-script .fcgi' }, - description: 'A key ordered hash of handlers' - -property :fast_cgi_ipc_dir, String, - default: lazy { ::File.join(lib_dir, 'fastcgi') }, - description: 'FastCGI directory. -Defaults to platform specific locations, see libraries/helpers.rb' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'fastcgi.conf') do - source 'mods/fastcgi.conf.erb' - cookbook 'apache2' - variables( - fast_cgi_wrapper: new_resource.fast_cgi_wrapper, - add_handler: new_resource.add_handler, - fast_cgi_ipc_dir: new_resource.fast_cgi_ipc_dir - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_fcgid.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_fcgid.rb deleted file mode 100644 index be6452f34..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_fcgid.rb +++ /dev/null @@ -1,24 +0,0 @@ -unified_mode true - -property :add_handler, Hash, - default: { 1 => 'fcgid-script .fcgi' }, - description: 'A key ordered hash of handlers' - -property :ipc_connect_timeout, Integer, - default: 20, - description: 'IPC Connection Timeout in seconds' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'fcgid.conf') do - source 'mods/fcgid.conf.erb' - cookbook 'apache2' - variables( - add_handler: new_resource.add_handler, - ipc_connect_timeout: new_resource.ipc_connect_timeout - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_include.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_include.rb deleted file mode 100644 index e9bc749a1..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_include.rb +++ /dev/null @@ -1,24 +0,0 @@ -unified_mode true - -property :add_type, Hash, - default: { 1 => 'text/html .shtml' }, - description: '' - -property :add_output_filter, Hash, - default: { 1 => 'INCLUDES .shtml' }, - description: '' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'include.conf') do - source 'mods/include.conf.erb' - cookbook 'apache2' - variables( - add_type: new_resource.add_type, - add_output_filter: new_resource.add_output_filter - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_info.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_info.rb deleted file mode 100644 index 87559396c..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_info.rb +++ /dev/null @@ -1,17 +0,0 @@ -unified_mode true - -property :info_allow_list, [String, Array], - default: %w(127.0.0.1 ::1), - description: '' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'info.conf') do - source 'mods/info.conf.erb' - cookbook 'apache2' - variables(info_allow_list: Array(new_resource.info_allow_list)) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_ldap.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_ldap.rb deleted file mode 100644 index a48ca9017..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_ldap.rb +++ /dev/null @@ -1,29 +0,0 @@ -unified_mode true - -property :location, String, - default: '/ldap-status', - description: '' - -property :set_handler, String, - default: 'ldap-status', - description: '' - -property :require, String, - default: 'local', - description: '' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'ldap.conf') do - source 'mods/ldap.conf.erb' - cookbook 'apache2' - variables( - location: new_resource.location, - set_handler: new_resource.set_handler, - require: new_resource.require - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_mime.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_mime.rb deleted file mode 100644 index 9faf1b050..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_mime.rb +++ /dev/null @@ -1,49 +0,0 @@ -unified_mode true - -property :types_config, String, - default: lazy { default_types_config }, - description: '' - -property :add_type, Hash, - default: { - 1 => 'text/html .shtml', - 2 => 'application/x-compress .Z', - 3 => 'application/x-gzip .gz .tgz', - 4 => 'application/x-bzip2 .bz2', - 5 => 'image/svg+xml svg svgz', - }, - description: '' - -property :add_handler, Hash, - default: { 1 => 'AddHandler type-map var' }, - description: '' - -property :add_output_filter, Hash, - default: { 1 => 'INCLUDES .shtml' }, - description: '' - -property :add_encoding, Hash, - default: { 1 => 'gzip svgz' }, - description: '' - -property :add_language, Hash, - default: {}, - description: 'Not currently used' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'mime.conf') do - source 'mods/mime.conf.erb' - cookbook 'apache2' - variables( - types_config: new_resource.types_config, - add_type: new_resource.add_type, - add_handler: new_resource.add_handler, - add_output_filter: new_resource.add_output_filter, - add_encoding: new_resource.add_encoding - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_mime_magic.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_mime_magic.rb deleted file mode 100644 index 39a5f439a..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_mime_magic.rb +++ /dev/null @@ -1,18 +0,0 @@ -unified_mode true - -property :mime_magic_file, String, - default: lazy { default_mime_magic_file }, - description: 'The location of the mime magic file -Defaults to platform specific locations, see libraries/helpers.rb' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'mime_magic.conf') do - source 'mods/mime_magic.conf.erb' - cookbook 'apache2' - variables(mime_magic_file: new_resource.mime_magic_file) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_event.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_event.rb deleted file mode 100644 index d6ed4ab29..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_event.rb +++ /dev/null @@ -1,54 +0,0 @@ -unified_mode true - -property :startservers, Integer, - default: 4, - description: '' - -property :serverlimit, Integer, - default: 16, - description: '' - -property :minsparethreads, Integer, - default: 64, - description: '' - -property :maxsparethreads, Integer, - default: 192, - description: '' - -property :threadlimit, Integer, - default: 192, - description: '' - -property :threadsperchild, Integer, - default: 64, - description: '' - -property :maxrequestworkers, Integer, - default: 1024, - description: '' - -property :maxconnectionsperchild, Integer, - default: 0, - description: '' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'mpm_event.conf') do - source 'mods/mpm_event.conf.erb' - cookbook 'apache2' - variables( - startservers: new_resource.startservers, - serverlimit: new_resource.serverlimit, - minsparethreads: new_resource.minsparethreads, - maxsparethreads: new_resource.maxsparethreads, - threadlimit: new_resource.threadlimit, - threadsperchild: new_resource.threadsperchild, - maxrequestworkers: new_resource.maxrequestworkers, - maxconnectionsperchild: new_resource.maxconnectionsperchild - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_prefork.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_prefork.rb deleted file mode 100644 index 61f24f112..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_prefork.rb +++ /dev/null @@ -1,44 +0,0 @@ -unified_mode true - -property :startservers, Integer, - default: 16, - description: 'number of server processes to start' - -property :minspareservers, Integer, - default: 16, - description: 'minimum number of server processes which are kept spare' - -property :maxspareservers, Integer, - default: 32, - description: 'maximum number of server processes which are kept spare' - -property :serverlimit, Integer, - default: 256, - description: '' - -property :maxrequestworkers, Integer, - default: 256, - description: 'maximum number of server processes allowed to start' - -property :maxconnectionsperchild, Integer, - default: 10_000, - description: '' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'mpm_prefork.conf') do - source 'mods/mpm_prefork.conf.erb' - cookbook 'apache2' - variables( - startservers: new_resource.startservers, - minspareservers: new_resource.minspareservers, - maxspareservers: new_resource.maxspareservers, - serverlimit: new_resource.serverlimit, - maxrequestworkers: new_resource.maxrequestworkers, - maxconnectionsperchild: new_resource.maxconnectionsperchild - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_worker.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_worker.rb deleted file mode 100644 index 2b05edc86..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_mpm_worker.rb +++ /dev/null @@ -1,54 +0,0 @@ -unified_mode true - -property :startservers, Integer, - default: 4, - description: 'initial number of server processes to start' - -property :minsparethreads, Integer, - default: 64, - description: 'minimum number of worker threads which are kept spare' - -property :maxsparethreads, Integer, - default: 192, - description: 'maximum number of worker threads which are kept spare' - -property :threadsperchild, Integer, - default: 64, - description: 'constant number of worker threads in each server process' - -property :maxrequestworkers, Integer, - default: 1024, - description: 'maximum number of threads' - -property :maxconnectionsperchild, Integer, - default: 0, - description: 'maximum number of requests a server process serves' - -property :threadlimit, Integer, - default: 192, - description: 'ThreadsPerChild can be changed to this maximum value during a graceful restart. ThreadLimit can only be changed by stopping and starting Apache.' - -property :serverlimit, Integer, - default: 16, - description: '' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'mpm_worker.conf') do - source 'mods/mpm_worker.conf.erb' - cookbook 'apache2' - variables( - startservers: new_resource.startservers, - minsparethreads: new_resource.minsparethreads, - maxsparethreads: new_resource.maxsparethreads, - threadsperchild: new_resource.threadsperchild, - maxrequestworkers: new_resource.maxrequestworkers, - maxconnectionsperchild: new_resource.maxconnectionsperchild, - threadlimit: new_resource.threadlimit, - serverlimit: new_resource.serverlimit - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_negotiation.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_negotiation.rb deleted file mode 100644 index a5a974f02..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_negotiation.rb +++ /dev/null @@ -1,24 +0,0 @@ -unified_mode true - -property :language_priority, Array, - default: %w( en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW), - description: '' - -property :force_language_priority, String, - default: 'Prefer Fallback', - description: '' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'negotiation.conf') do - source 'mods/negotiation.conf.erb' - cookbook 'apache2' - variables( - language_priority: new_resource.language_priority.join(' '), - force_language_priority: new_resource.force_language_priority - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_pagespeed.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_pagespeed.rb deleted file mode 100644 index 068a1a7b9..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_pagespeed.rb +++ /dev/null @@ -1,109 +0,0 @@ -unified_mode true - -property :apache_user, String, - default: lazy { default_apache_user }, - description: '' - -property :apache_group, String, - default: lazy { default_apache_group }, - description: '' - -property :mod_page_speed, String, - equal_to: %w(on off), - default: 'on', - description: '' - -property :file_cache_path, String, - default: '/var/cache/mod_pagespeed/', - description: '' - -property :output_filters, Array, - default: ['MOD_PAGESPEED_OUTPUT_FILTER text/html'], - description: '' - -property :inherit_vhost_config, String, - default: 'on', - equal_to: %w(on off), - description: '' - -property :rewrite_level, String, - default: '', - equal_to: ['', 'PassThrough', 'CoreFilters', 'TestingCoreFilters'], - description: 'For full info see https://www.modpagespeed.com/doc/config_filters' - -property :disable_filters, String, - default: '', - description: 'For full info see https://www.modpagespeed.com/doc/filters' - -property :enable_filters, String, - default: '', - description: 'For full info see https://www.modpagespeed.com/doc/filters' - -property :domain, String, - default: '', - description: 'For full info see https://www.modpagespeed.com/doc/domains' - -property :extra_config, Hash, - default: {}, - description: 'A hash of key value pairs for enable e.g. "ModPagespeedFileCacheSizeKb" => "102400"' - -property :file_cache_inode_limit, [String, Integer], - default: '500000', - coerce: proc { |m| m.is_a?(Integer) ? m.to_s : m }, - description: '' - -property :avoid_renaming_introspective_javascript, String, - equal_to: %w(on off), - default: 'on', - description: '' - -property :library, Array, - default: [ - '105527 ltVVzzYxo0 //ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js', - '92501 J8KF47pYOq //ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js', - '141547 GKjMUuF4PK //ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js', - '43 1o978_K0_L http://www.modpagespeed.com/rewrite_javascript.js', - ], - description: 'Array of libraries to load in the form "bytes MD5 canonical_url" we prepend ModPagespeedLibrary' - -action :create do - remote_file "#{Chef::Config[:file_cache_path]}/mod-pagespeed.deb" do - source pagespeed_url - mode '0644' - action :create_if_missing - end - - package 'mod_pagespeed' do - source "#{Chef::Config[:file_cache_path]}/mod-pagespeed.deb" - action :install - end - - directory new_resource.file_cache_path do - user new_resource.apache_user - group new_resource.apache_group - mode '0750' - end - - template ::File.join(apache_dir, 'mods-available', 'pagespeed.conf') do - source 'mods/pagespeed.conf.erb' - cookbook 'apache2' - variables( - mod_page_speed: new_resource.mod_page_speed, - file_cache_path: new_resource.file_cache_path, - output_filters: new_resource.output_filters, - inherit_vhost_config: new_resource.inherit_vhost_config, - rewrite_level: new_resource.rewrite_level, - disable_filters: new_resource.disable_filters, - enable_filters: new_resource.enable_filters, - domain: new_resource.domain, - extra_config: new_resource.extra_config, - file_cache_inode_limit: new_resource.file_cache_inode_limit, - avoid_renaming_introspective_javascript: new_resource.avoid_renaming_introspective_javascript, - library: new_resource.library - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_php.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_php.rb deleted file mode 100644 index 41052e442..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_php.rb +++ /dev/null @@ -1,48 +0,0 @@ -unified_mode true - -property :name, String, default: '' - -property :module_name, String, - default: lazy { apache_mod_php_modulename }, - description: 'Module name for the Apache PHP module.' - -property :so_filename, String, - default: lazy { apache_mod_php_filename }, - description: 'Filename for the module executable.' - -property :package_name, [String, Array], - default: lazy { apache_mod_php_package }, - description: 'Package that contains the Apache PHP module itself' - -property :install_package, [true, false], - default: true, - description: 'Whether to install the Apache PHP module package' - -action :create do - # install mod_php package (if requested) - package new_resource.package_name do - only_if { new_resource.install_package } - notifies :delete, 'directory[purge distro conf.modules.d]', :immediately - notifies :delete, 'directory[purge distro conf.d]', :immediately - end - - directory 'purge distro conf.modules.d' do - path "#{apache_dir}/conf.modules.d" - recursive true - action :nothing - end - - directory 'purge distro conf.d' do - path "#{apache_dir}/conf.d" - recursive true - action :nothing - end - - apache2_module 'php' do - identifier new_resource.module_name - mod_name new_resource.so_filename - conf true - template_cookbook 'apache2' - notifies :restart, 'service[apache2]' - end -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_proxy.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_proxy.rb deleted file mode 100644 index dcb109391..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_proxy.rb +++ /dev/null @@ -1,35 +0,0 @@ -unified_mode true - -property :proxy_requests, String, - default: 'Off', - description: '' - -property :require, String, - default: 'all denied', - description: '[See mod_proxy access](https://httpd.apache.org/docs/trunk/mod/mod_proxy.html#access)' - -property :add_default_charset, String, - default: 'off', - description: 'Add the default Charachter set' - -property :proxy_via, String, - equal_to: %w( Off On Full Block ), - default: 'On', - description: 'Enable/disable the handling of HTTP/1.1 "Via:" headers.' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'proxy.conf') do - source 'mods/proxy.conf.erb' - cookbook 'apache2' - variables( - proxy_requests: new_resource.proxy_requests, - require: new_resource.require, - add_default_charset: new_resource.add_default_charset, - proxy_via: new_resource.proxy_via - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_proxy_balancer.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_proxy_balancer.rb deleted file mode 100644 index 11fc3d436..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_proxy_balancer.rb +++ /dev/null @@ -1,29 +0,0 @@ -unified_mode true - -property :status_location, String, - default: '/balancer-manager', - description: '' - -property :set_handler, String, - default: 'balancer-manager', - description: '' - -property :require, String, - default: 'local', - description: 'For full description see https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'proxy_balancer.conf') do - source 'mods/proxy_balancer.conf.erb' - cookbook 'apache2' - variables( - status_location: new_resource.status_location, - set_handler: new_resource.set_handler, - require: new_resource.require - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_proxy_ftp.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_proxy_ftp.rb deleted file mode 100644 index d1c27aefb..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_proxy_ftp.rb +++ /dev/null @@ -1,29 +0,0 @@ -unified_mode true - -property :proxy_ftp_dir_charset, String, - default: 'UTF-8', - description: '' - -property :proxy_ftp_escape_wildcards, String, - equal_to: ['on', 'off', ''], - default: '' - -property :proxy_ftp_list_on_wildcard, String, - equal_to: ['on', 'off', ''], - default: '' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'proxy_ftp.conf') do - source 'mods/proxy_ftp.conf.erb' - cookbook 'apache2' - variables( - proxy_ftp_dir_charset: new_resource.proxy_ftp_dir_charset, - proxy_ftp_escape_wildcards: new_resource.proxy_ftp_escape_wildcards, - proxy_ftp_list_on_wildcard: new_resource.proxy_ftp_list_on_wildcard - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_reqtimeout.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_reqtimeout.rb deleted file mode 100644 index 5d73c89c3..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_reqtimeout.rb +++ /dev/null @@ -1,21 +0,0 @@ -unified_mode true - -property :request_read_timeout, Hash, - default: { - '1': 'header=20-40,minrate=500', - '2': 'body=10,minrate=500', - }, - description: 'A hash of ordered rules. -For full information see https://httpd.apache.org/docs/2.4/mod/mod_reqtimeout.html' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'reqtimeout.conf') do - source 'mods/reqtimeout.conf.erb' - cookbook 'apache2' - variables(request_read_timeout: new_resource.request_read_timeout) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_setenvif.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_setenvif.rb deleted file mode 100644 index 94e4761d8..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_setenvif.rb +++ /dev/null @@ -1,44 +0,0 @@ -unified_mode true - -property :browser_match, Array, - default: [ - '"Mozilla/2" nokeepalive', - '"MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0', - '"RealPlayer 4\.0" force-response-1.0', - '"Java/1\.0" force-response-1.0', - '"JDK/1\.0" force-response-1.0', - '"Microsoft Data Access Internet Publishing Provider" redirect-carefully', - '"MS FrontPage" redirect-carefully', - '"^WebDrive" redirect-carefully', - '"^WebDAVFS/1.[012]" redirect-carefully', - '"^gnome-vfs/1.0" redirect-carefully', - '"^gvfs/1" redirect-carefully', - '"^XML Spy" redirect-carefully', - '"^Dreamweaver-WebDAV-SCM1" redirect-carefully', - '"Konqueror/4" redirect-carefully', - ], - description: '' - -property :browser_match_nocase, Array, - default: [], - description: '' - -property :set_env_if_no_case, Array, - default: [], - description: '' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'setenvif.conf') do - source 'mods/setenvif.conf.erb' - cookbook 'apache2' - variables( - browser_match: new_resource.browser_match, - browser_matches_no_case: new_resource.browser_match_nocase, - set_env_if_no_cases: new_resource.set_env_if_no_case - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_ssl.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_ssl.rb deleted file mode 100644 index 901a1156f..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_ssl.rb +++ /dev/null @@ -1,110 +0,0 @@ -unified_mode true - -property :mod_ssl_pkg, String, - default: 'mod_ssl', - description: 'The name of the mod_ssl package' - -property :pass_phrase_dialog, String, - default: lazy { default_pass_phrase_dialog }, - description: '' - -property :session_cache, String, - default: lazy { default_session_cache }, - description: '' - -property :session_cache_timeout, String, - default: '300', - description: '' - -property :cipher_suite, String, - default: 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA256:EECDH:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA128-SHA:AES128-SHA', - description: '' - -property :honor_cipher_order, String, - default: 'On', - description: '' - -property :protocol, String, - default: 'TLSv1.2', - description: '' - -property :insecure_renegotiation, String, - default: 'Off', - description: '' - -property :strict_sni_vhost_check, String, - default: 'Off', - description: '' - -property :compression, String, - default: 'Off', - description: '' - -property :use_stapling, String, - default: 'Off', - description: '' - -property :stapling_responder_timeout, String, - default: '5', - description: '' - -property :stapling_return_responder_errors, String, - default: 'Off', - description: '' - -property :stapling_cache, String, - default: 'shmcb:/var/run/ocsp(128000)', - description: '' - -property :directives, Hash, - description: '' - -action :create do - if platform_family?('rhel', 'fedora', 'suse', 'amazon') - with_run_context :root do - package new_resource.mod_ssl_pkg do - notifies :run, 'execute[generate-module-list]', :immediately - only_if { platform_family?('rhel', 'fedora', 'amazon') } - end - end - end - - file "#{apache_dir}/conf.d/ssl.conf" do - content '# SSL Conf is under mods-available/ssl.conf - apache2 cookbook\n' - only_if { ::File.exist?("#{apache_dir}/conf.d") } - end - - template ::File.join(apache_dir, 'mods-available', 'ssl.conf') do - source 'mods/ssl.conf.erb' - cookbook 'apache2' - variables( - pass_phrase_dialog: new_resource.pass_phrase_dialog, - session_cache: new_resource.session_cache, - session_cache_timeout: new_resource.session_cache_timeout, - cipher_suite: new_resource.cipher_suite, - honor_cipher_order: new_resource.honor_cipher_order, - protocol: new_resource.protocol, - insecure_renegotiation: new_resource.insecure_renegotiation, - strict_sni_vhost_check: new_resource.strict_sni_vhost_check, - compression: new_resource.compression, - use_stapling: new_resource.use_stapling, - stapling_responder_timeout: new_resource.stapling_responder_timeout, - stapling_return_responder_errors: new_resource.stapling_return_responder_errors, - stapling_cache: new_resource.stapling_cache, - directives: new_resource.directives - ) - end - - apache2_module 'socache_shmcb' - - %w( conf.d conf.modules.d ).each do |dir| - directory "#{apache_dir}/#{dir}" do - recursive true - action :delete - end - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_status.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_status.rb deleted file mode 100644 index e7d74d195..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_status.rb +++ /dev/null @@ -1,37 +0,0 @@ -unified_mode true - -property :location, String, - default: '/server-status', - description: '' - -property :status_allow_list, [String, Array], - default: %w(127.0.0.1 ::1), - description: 'Clients in the specified IP address ranges can access the resource. -For full description see https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require' - -property :extended_status, String, - equal_to: %w(On Off), - default: 'Off', - description: 'For info see: https://httpd.apache.org/docs/current/mod/mod_status.html' - -property :proxy_status, String, - equal_to: %w(On Off), - default: 'On', - description: 'For info see: https://httpd.apache.org/docs/current/mod/mod_status.html' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'status.conf') do - source 'mods/status.conf.erb' - cookbook 'apache2' - variables( - location: new_resource.location, - status_allow_list: Array(new_resource.status_allow_list), - extended_status: new_resource.extended_status, - proxy_status: new_resource.proxy_status - ) - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_userdir.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_userdir.rb deleted file mode 100644 index afd7badcb..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_userdir.rb +++ /dev/null @@ -1,25 +0,0 @@ -unified_mode true - -property :public_html_dir, String, - default: '/home/*/public_html', - description: '' - -property :options, String, - default: 'MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec', - description: '' - -property :allow_override, String, - default: 'FileInfo AuthConfig Limit Indexes', - description: 'For full description see https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride' - -action :create do - template ::File.join(apache_dir, 'mods-available', 'userdir.conf') do - source 'mods/userdir.conf.erb' - cookbook 'apache2' - variables( - public_html_dir: new_resource.public_html_dir, - allow_override: new_resource.allow_override, - options: new_resource.options - ) - end -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/mod_wsgi.rb b/lc-gdn-chef/cookbooks/apache2/resources/mod_wsgi.rb deleted file mode 100644 index adfea913a..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/mod_wsgi.rb +++ /dev/null @@ -1,39 +0,0 @@ -unified_mode true - -property :name, String, default: '' - -property :module_name, String, - default: 'wsgi_module', - description: 'Module name for the Apache WSGI module.' - -property :so_filename, String, - default: lazy { apache_mod_wsgi_filename }, - description: 'Filename for the module executable.' - -property :package_name, [String, Array], - default: lazy { apache_mod_wsgi_package }, - description: 'Package that contains the Apache WSGI module itself' - -property :install_package, [true, false], - default: true, - description: 'Whether to install the Apache WSGI module package' - -action :create do - # install mod_wsgi package (if requested) - package new_resource.package_name do - only_if { new_resource.install_package } - notifies :delete, 'directory[purge distro conf.modules.d]', :immediately - end - - directory 'purge distro conf.modules.d' do - path "#{apache_dir}/conf.modules.d" - recursive true - action :nothing - end - - apache2_module 'wsgi' do - identifier new_resource.module_name - mod_name new_resource.so_filename - notifies :restart, 'service[apache2]' - end -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/module.rb b/lc-gdn-chef/cookbooks/apache2/resources/module.rb deleted file mode 100644 index 5f056dda6..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/module.rb +++ /dev/null @@ -1,71 +0,0 @@ -unified_mode true - -property :mod_name, String, - default: lazy { "mod_#{name}.so" }, - description: 'The full name of the file' - -property :path, String, - default: lazy { "#{apache_libexec_dir}/#{mod_name}" }, - description: '' - -property :identifier, String, - default: lazy { "#{name}_module" }, - description: 'String to identify the module for the `LoadModule` directive' - -property :mod_conf, Hash, - default: {}, - description: 'Pass properties to apache2_mod_ and config file template' - -property :conf, [true, false], - default: lazy { config_file?(name) }, - description: 'The default is set by the config_file? helper. Override to set whether the module should have a config file' - -property :template_cookbook, String, - default: '', - description: 'Cookbook to source the config file template from' - -property :apache_service_notification, Symbol, - equal_to: %i( reload restart ), - default: :reload, - description: 'Service notifcation for apache2 service, accepts reload or restart.' - -action :enable do - # Create apache2_mod_resource if we want it configured - if new_resource.conf - # manage template directly if using template from external cookbook since no mod_ resource for it, probably - if !new_resource.template_cookbook.empty? - template ::File.join(apache_dir, 'mods-available', "#{new_resource.name}.conf") do - source "mods/#{new_resource.name}.conf.erb" - cookbook new_resource.template_cookbook - variables new_resource.mod_conf - end - else - declare_resource("apache2_mod_#{new_resource.name}".to_sym, 'default') do - new_resource.mod_conf.each { |k, v| send(k, v) } - end - end - end - - file ::File.join(apache_dir, 'mods-available', "#{new_resource.name}.load") do - content "LoadModule #{new_resource.identifier} #{new_resource.path}\n" - mode '0644' - end - - execute "a2enmod #{new_resource.name}" do - command "/usr/sbin/a2enmod #{new_resource.name}" - notifies new_resource.apache_service_notification, 'service[apache2]', :delayed - not_if { mod_enabled?(new_resource) } - end -end - -action :disable do - execute "a2dismod #{new_resource.name}" do - command "/usr/sbin/a2dismod #{new_resource.name}" - notifies new_resource.apache_service_notification, 'service[apache2]', :delayed - only_if { mod_enabled?(new_resource) } - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/resources/site.rb b/lc-gdn-chef/cookbooks/apache2/resources/site.rb deleted file mode 100644 index eae464ab2..000000000 --- a/lc-gdn-chef/cookbooks/apache2/resources/site.rb +++ /dev/null @@ -1,26 +0,0 @@ -unified_mode true - -property :site_name, String, - name_property: true, - description: 'Name of the site to enable/disable' - -action :enable do - execute "a2ensite #{new_resource.site_name}" do - command "/usr/sbin/a2ensite #{new_resource.site_name}" - notifies :reload, 'service[apache2]', :delayed - not_if { apache_site_enabled?(new_resource.site_name) } - only_if { apache_site_available?(new_resource.site_name) } - end -end - -action :disable do - execute "a2dissite #{new_resource.site_name}" do - command "/usr/sbin/a2dissite #{new_resource.site_name}" - notifies :reload, 'service[apache2]', :delayed - only_if { apache_site_enabled?(new_resource.site_name) } - end -end - -action_class do - include Apache2::Cookbook::Helpers -end diff --git a/lc-gdn-chef/cookbooks/apache2/templates/a2enmod.erb b/lc-gdn-chef/cookbooks/apache2/templates/a2enmod.erb deleted file mode 100644 index 622e5ec2c..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/a2enmod.erb +++ /dev/null @@ -1,541 +0,0 @@ -#!<%= node['platform_family'] == 'freebsd' ? '/usr/local/bin/perl' : '/usr/bin/perl'%> -w -# -# a2enmod by Stefan Fritsch -# Licensed under Apache License 2.0 -# -# The coding style is "perltidy -pbp" - -use strict; -use Cwd 'realpath'; -use File::Spec; -use File::Basename; -use File::Path; -use Getopt::Long; - -my $quiet; -my $force; -my $maintmode; -my $purge; -my $delete; - -Getopt::Long::Configure('bundling'); -GetOptions( - 'quiet|q' => \$quiet, - 'force|f' => \$force, - 'maintmode|m' => \$maintmode, - 'purge|p' => \$purge, - 'delete|d' => \$delete -) or exit 2; - -my $basename = basename($0); -$basename =~ /^a2(en|dis)(mod|site|conf)((?:-.+)?)$/ - or die "$basename call name unknown\n"; -my $act = $1; -my $obj = $2; -my $dir_suffix = $3; - -my $env_file = $ENV{APACHE_ENVVARS} - || ( - $ENV{APACHE_CONFDIR} - ? "$ENV{APACHE_CONFDIR}/envvars" - : "<%= @apache_dir %>$dir_suffix/envvars" - ); -$ENV{LANG} = 'C'; -read_env_file($env_file); - -$act .= 'able'; -my ( $name, $dir, $sffx, $reload ); -if ( $obj eq 'mod' ) { - $obj = 'module'; - $dir = 'mods'; - $sffx = '.load'; - $reload = 'restart'; -} -elsif ( $obj eq 'conf' ) { - $obj = 'conf'; - $dir = 'conf'; - $sffx = '.conf'; - $reload = 'reload'; -} -else { - $dir = 'sites'; - $sffx = '.conf'; - $reload = 'reload'; -} -$name = ucfirst($obj); - -my $confdir = $ENV{APACHE_CONFDIR} || "<%= @apache_dir %>$dir_suffix"; -my $availdir = $ENV{ uc("APACHE_${dir}_AVAILABLE") } - || "$confdir/$dir-available"; -my $enabldir = $ENV{ uc("APACHE_${dir}_ENABLED") } || "$confdir/$dir-enabled"; -my $statedir = $ENV{ uc("APACHE_STATE_DIRECTORY") } || "<%= @lib_dir %>"; - -$statedir .= "/$obj"; - -my $choicedir = $act eq 'enable' ? $availdir : $enabldir; -my $linkdir = File::Spec->abs2rel( $availdir, $enabldir ); - -my $request_reload = 0; - -my $rc = 0; - -# Fix backwards compatibility for SUSE -if ( -e "/usr/bin/zypper" ) { - if ( $quiet || $delete ) { - exit 0 - } -} - -if ( !scalar @ARGV ) { - my @choices = myglob('*'); - print "Your choices are: @choices\n"; - print "Which ${obj}(s) do you want to $act (wildcards ok)?\n"; - my $input = <>; - @ARGV = split /\s+/, $input; - -} - -my @objs; -foreach my $arg (@ARGV) { - $arg =~ s/${sffx}$//; - my @glob = myglob($arg); - if ( !@glob ) { - error("No $obj found matching $arg!\n"); - $rc = 1; - } - else { - push @objs, @glob; - } -} - -foreach my $acton (@objs) { - doit($acton) or $rc = 1; -} - -info( - "To activate the new configuration, you need to run:\n service apache2 $reload\n" -) if $request_reload; - -exit($rc); - -############################################################################## - -sub myglob { - my $arg = shift; - - my @glob = map { - s{^$choicedir/}{}; - s{$sffx$}{}; - $_ - } glob("$choicedir/$arg$sffx"); - - return @glob; -} - -sub doit { - my $acton = shift; - - my ( $conftgt, $conflink ); - if ( $obj eq 'module' ) { - if ( $acton eq 'cgi' && threaded() ) { - print - "Your MPM seems to be threaded. Selecting cgid instead of cgi.\n"; - $acton = 'cgid'; - } - - $conftgt = "$availdir/$acton.conf"; - if ( -e $conftgt ) { - $conflink = "$enabldir/$acton.conf"; - } - } - - my $tgt = "$availdir/$acton$sffx"; - my $link = "$enabldir/$acton$sffx"; - - if ( !-e $tgt ) { - if ( -l $link && !-e $link ) { - if ( $act eq 'disable' ) { - info("removing dangling symlink $link\n"); - unlink($link); - - # force a .conf path. It may exist as dangling link, too - $conflink = "$enabldir/$acton.conf"; - - if ( -l $conflink && !-e $conflink ) { - info("removing dangling symlink $conflink\n"); - unlink($conflink); - } - - return 1; - } - else { - error("$link is a dangling symlink!\n"); - } - } - - if ( $purge ) { - switch_marker( $obj, $act, $acton ); - # exit silently, we are purging anyway - return 1; - } - - error("$name $acton does not exist!\n"); - return 0; - } - - # handle module dependencies - if ( $obj eq 'module' ) { - if ( $act eq 'enable' ) { - if ( $acton eq 'mpm_itk' ) { - warning( "MPM_ITK is a third party module that is not part " - . "of the official Apache HTTPD. It has seen less " - . "testing than the official MPM modules." ); - } - my @depends = get_deps("$availdir/$acton.load"); - do_deps( $acton, @depends ) or return 0; - - my @conflicts = get_deps( "$availdir/$acton.load", "Conflicts" ); - check_conflicts( $acton, @conflicts ) or return 0; - } - else { - my @depending; - foreach my $d ( glob("$enabldir/*.load") ) { - my @deps = get_deps($d); - if ( is_in( $acton, @deps ) ) { - $d =~ m,/([^/]+).load$,; - push @depending, $1; - } - } - if ( scalar @depending ) { - if ($force) { - do_deps( $acton, @depending ) or return 0; - } - else { - error( - "The following modules depend on $acton ", - "and need to be disabled first: @depending\n" - ); - return 0; - } - } - } - } - elsif ( $act eq 'enable' ) { - my @depends = get_deps("$availdir/$acton$sffx"); - warn_deps( $acton, @depends ) or return 0; - } - - if ( $act eq 'enable' ) { - my $check = check_link( $tgt, $link ); - if ( $check eq 'ok' ) { - if ($conflink) { - - # handle .conf file - my $confcheck = check_link( $conftgt, $conflink ); - if ( $confcheck eq 'ok' ) { - info("$name $acton already enabled\n"); - return 1; - } - elsif ( $confcheck eq 'missing' ) { - print "Enabling config file $acton.conf.\n"; - add_link( $conftgt, $conflink ) or return 0; - } - else { - error( - "Config file $acton.conf not properly enabled: $confcheck\n" - ); - return 0; - } - } - else { - info("$name $acton already enabled\n"); - return 1; - } - } - elsif ( $check eq 'missing' ) { - if ($conflink) { - - # handle .conf file - my $confcheck = check_link( $conftgt, $conflink ); - if ( $confcheck eq 'missing' ) { - add_link( $conftgt, $conflink ) or return 0; - } - elsif ( $confcheck ne 'ok' ) { - error( - "Config file $acton.conf not properly enabled: $confcheck\n" - ); - return 0; - } - } - - print "Enabling $obj $acton.\n"; - if ( $acton eq 'ssl' ) { - info( "See /usr/share/doc/apache2/README.Debian.gz on " - . "how to configure SSL and create self-signed certificates.\n" - ); - } - return add_link( $tgt, $link ) - && switch_marker( $obj, $act, $acton ); - } - else { - error("$name $acton not properly enabled: $check\n"); - return 0; - } - } - else { - if ( -e $link || -l $link ) { - remove_link($link); - if ( $conflink && -e $conflink ) { - remove_link($conflink); - } - switch_marker( $obj, $act, $acton ); - print "$name $acton disabled.\n"; - } - elsif ( $conflink && -e $conflink ) { - print "Disabling stale config file $acton.conf.\n"; - remove_link($conflink); - } - else { - info("$name $acton already disabled\n"); - if ( $purge ) { - switch_marker( $obj, $act, $acton ); - } - return 1; - } - } - - return 1; -} - -sub get_deps { - my $file = shift; - my $type = shift || "Depends"; - - my $fd; - if ( !open( $fd, '<', $file ) ) { - error("Can't open $file: $!"); - return; - } - my $line; - while ( defined( $line = <$fd> ) ) { - chomp $line; - if ( $line =~ /^# $type:\s+(.*?)\s*$/ ) { - my $deps = $1; - return split( /[\n\s]+/, $deps ); - } - - # only check until the first non-empty non-comment line - last if ( $line !~ /^\s*(?:#.*)?$/ ); - } - return; -} - -sub do_deps { - my $acton = shift; - foreach my $d (@_) { - info("Considering dependency $d for $acton:\n"); - if ( !doit($d) ) { - error("Could not $act dependency $d for $acton, aborting\n"); - return 0; - } - } - return 1; -} - -sub warn_deps { - my $acton = shift; - my $modsenabldir = $ENV{APACHE_MODS_ENABLED} || "$confdir/mods-enabled"; - foreach my $d (@_) { - info("Checking dependency $d for $acton:\n"); - if ( !-e "$modsenabldir/$d.load" ) { - warning( - "Module $d is not enabled, but $acton depends on it, aborting\n" - ); - return 0; - } - } - return 1; -} - -sub check_conflicts { - my $acton = shift; - my $haderror = 0; - foreach my $d (@_) { - info("Considering conflict $d for $acton:\n"); - - my $tgt = "$availdir/$d$sffx"; - my $link = "$enabldir/$d$sffx"; - - my $confcheck = check_link( $tgt, $link ); - if ( $confcheck eq 'ok' ) { - error( - "Module $d is enabled - cannot proceed due to conflicts. It needs to be disabled first!\n" - ); - - # Don't return immediately, there could be several conflicts - $haderror++; - } - } - - if ($haderror) { - return 0; - } - - return 1; -} - -sub add_link { - my ( $tgt, $link ) = @_; - - # create relative link - if ( !symlink( File::Spec->abs2rel( $tgt, dirname($link) ), $link ) ) { - die("Could not create $link: $!\n"); - } - $request_reload = 1; - return 1; -} - -sub check_link { - my ( $tgt, $link ) = @_; - - if ( !-e $link ) { - if ( -l $link ) { - - # points to nowhere - info("Removing dangling link $link"); - unlink($link) or die "Could not remove $link\n"; - } - return 'missing'; - } - - if ( -e $link && !-l $link ) { - return "$link is a real file, not touching it"; - } - if ( realpath($link) ne realpath($tgt) ) { - return "$link exists but does not point to $tgt, not touching it"; - } - return 'ok'; -} - -sub remove_link { - my ($link) = @_; - - if ( -l $link ) { - unlink($link) or die "Could not remove $link: $!\n"; - } - elsif ( -e $link ) { - error("$link is not a symbolic link, not deleting\n"); - return 0; - } - $request_reload = 1; - return 1; -} - -sub threaded { - my $result = ""; - $result = qx{<%= @apachectl %> -V | grep 'threaded'} - if -x '<%= @apachectl %>'; - if ( $? != 0 ) { - - # config doesn't work - if ( -e "$enabldir/mpm_prefork.load" || -e "$enabldir/mpm_itk.load" ) - { - return 0; - } - elsif (-e "$enabldir/mpm_worker.load" - || -e "$enabldir/mpm_event.load" ) - { - return 1; - } - else { - error("Can't determine enabled MPM"); - - # do what user requested - return 0; - } - } - if ( $result =~ / no/ ) { - return 0; - } - elsif ( $result =~ / yes/ ) { - return 1; - } - else { - die("Can't parse output from apache2ctl -V:\n$result\n"); - } -} - -sub info { - print @_ if !$quiet; -} - -sub error { - print STDERR 'ERROR: ', @_; -} - -sub warning { - print STDERR 'WARNING: ', @_; -} - -sub is_in { - my $needle = shift; - foreach my $e (@_) { - return 1 if $needle eq $e; - } - return 0; -} - -sub read_env_file { - my $file = shift; - - -r $file or return; - my @lines = qx{env - sh -c '. $file && env'}; - if ($?) { - die "Could not read $file\n"; - } - - foreach my $l (@lines) { - chomp $l; - $l =~ /^(.*)?=(.*)$/ or die "Could not parse $file\n"; - $ENV{$1} = $2; - } -} - -sub switch_marker { - die('usage: switch_marker([module|site|conf], [enable|disable], $name)') - if @_ != 3; - my $which = shift; - my $what = shift; - my $name = shift; - - my $mode = "admin"; - $mode = "maint" if $maintmode; - - #print("switch_marker $which $what $name\n"); - # TODO: get rid of the magic string(s) - my $state_marker_dir = "$statedir/$what" . "d" . "_by_$mode"; - my $state_marker = "$state_marker_dir/$name"; - if ( !-d $state_marker_dir ) { - File::Path::mkpath("$state_marker_dir") - || error( - "Failed to create marker directory: '$state_marker_dir'\n"); - } - - # XXX: swap find with perl alternative - my @markers = qx{find "$statedir" -type f -a -name "$name"}; - chomp(@markers); - foreach (@markers) { - unless ( unlink $_ ) { - error("Failed to remove old marker '$_'!\n") && return 0; - } - } - unless ($purge) { - qx{touch "$state_marker"}; - if ( $? != 0 ) { - error("Failed to create marker '$state_marker'!\n") && return 0; - } - return 1; - } -} - -# vim: syntax=perl sw=4 sts=4 sr et diff --git a/lc-gdn-chef/cookbooks/apache2/templates/apache2.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/apache2.conf.erb deleted file mode 100644 index dac9ea68d..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/apache2.conf.erb +++ /dev/null @@ -1,171 +0,0 @@ -# This file was generated by Chef for <%= node['fqdn'] %>. -# -# Based on the Ubuntu 18.04 apache2.conf -# -ServerRoot "<%= @apache_dir %>" - -# -# Hostname and port that the server uses to identify itself -# -<% unless @server_name.nil? %> -ServerName <%= @server_name %> -<% end %> - -# -# The accept serialization lock file MUST BE STORED ON A LOCAL DISK. -# -Mutex file:<%= @lock_dir %> default - -# -# The directory where shm and other runtime files will be stored. -# - -DefaultRuntimeDir <%= @run_dir %> - -# -# PidFile: The file in which the server should record its process -# identification number when it starts. -# -PidFile <%= @pid_file %> - -# -# Timeout: The number of seconds before receives and sends time out. -# -Timeout <%= @timeout %> - -# -# KeepAlive: Whether or not to allow persistent connections (more than -# one request per connection). Set to "Off" to deactivate. -# -KeepAlive <%= @keep_alive %> - -# -# MaxKeepAliveRequests: The maximum number of requests to allow -# during a persistent connection. Set to 0 to allow an unlimited amount. -# We recommend you leave this number high, for maximum performance. -# -MaxKeepAliveRequests <%= @max_keep_alive_requests %> - -# -# KeepAliveTimeout: Number of seconds to wait for the next request from the -# same client on the same connection. -# -KeepAliveTimeout <%= @keep_alive_timeout %> - -# These are set in /etc/apache2/envvars -User <%= @apache_user %> -Group <%= @apache_group %> - -# -# HostnameLookups: Log the names of clients or just their IP addresses -# e.g., www.apache.org (on) or 204.62.129.132 (off). -# The default is off because it'd be overall better for the net if people -# had to knowingly turn this feature on, since enabling it means that -# each client request will result in AT LEAST one lookup request to the -# nameserver. -# -HostnameLookups Off - -# ErrorLog: The location of the error log file. -# If you do not specify an ErrorLog directive within a -# container, error messages relating to that virtual host will be -# logged here. If you *do* define an error logfile for a -# container, that host's errors will be logged there and not here. -# -ErrorLog <%= @log_dir %>/error.log - -# -# LogLevel: Control the severity of messages logged to the error_log. -# Available values: trace8, ..., trace1, debug, info, notice, warn, -# error, crit, alert, emerg. -# It is also possible to configure the log level for particular modules, e.g. -# "LogLevel info ssl:warn" -# -LogLevel <%= @log_level %> - -# Include module configuration: -IncludeOptional <%= @apache_dir %>/mods-enabled/*.load -IncludeOptional <%= @apache_dir %>/mods-enabled/*.conf - -# Include list of ports to listen on -Include ports.conf - - -# Sets the default security model of the Apache2 HTTPD server. It does -# not allow access to the root filesystem outside of /usr/share and /var/www. -# The former is used by web applications packaged in Debian, -# the latter may be used for local directories served by the web server. If -# your system is serving content from a sub-directory in /srv you must allow -# access here, or in any related virtual host. - - Options FollowSymLinks - AllowOverride None - Require all denied - - - - AllowOverride None - Require all granted - - -> - Options Indexes FollowSymLinks - AllowOverride None - Require all granted - - -# -# Options Indexes FollowSymLinks -# AllowOverride None -# Require all granted -# - -# AccessFileName: The name of the file to look for in each directory -# for additional configuration directives. See also the AllowOverride -# directive. -# -AccessFileName <%= @access_file_name %> - -# -# The following lines prevent .htaccess and .htpasswd files from being -# viewed by Web clients. -# - - Require all denied - - -<% if node['platform_family'] =~ /freebsd/ -%> - - AcceptFilter http none - AcceptFilter https none - -<% end %> - -# -# The following directives define some format nicknames for use with -# a CustomLog directive. -# -# These deviate from the Common Log Format definitions in that they use %O -# (the actual bytes sent including headers) instead of %b (the size of the -# requested file), because the latter makes it impossible to detect partial -# requests. -# -# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended. -# Use mod_remoteip instead. -# -LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined -LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined -LogFormat "%h %l %u %t \"%r\" %>s %O" common -LogFormat "%{Referer}i -> %U" referer -LogFormat "%{User-agent}i" agent - -# Include of directories ignores editors' and dpkg's backup files, -# see README.Debian for details. - -# Include generic snippets of statements -IncludeOptional conf-enabled/*.conf - -# Include the virtual host configurations: -IncludeOptional sites-enabled/*.conf - -# vim: syntax=apache ts=4 sw=4 sts=4 sr noet diff --git a/lc-gdn-chef/cookbooks/apache2/templates/charset.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/charset.conf.erb deleted file mode 100644 index 65ab604cf..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/charset.conf.erb +++ /dev/null @@ -1,9 +0,0 @@ -# Read the documentation before enabling AddDefaultCharset. -# In general, it is only a good idea if you know that all your files -# have this encoding. It will override any encoding given in the files -# in meta http-equiv or xml encoding tags. -<% unless @default_charset.nil? %> -<% @default_charset.each do |value| -%> -AddDefaultCharset <%= value %> -<% end -%> -<% end -%> diff --git a/lc-gdn-chef/cookbooks/apache2/templates/default-site.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/default-site.conf.erb deleted file mode 100644 index f2f0bc90a..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/default-site.conf.erb +++ /dev/null @@ -1,31 +0,0 @@ - - # The ServerName directive sets the request scheme, hostname and port that - # the server uses to identify itself. This is used when creating - # redirection URLs. In the context of virtual hosts, the ServerName - # specifies what hostname must appear in the request's Host: header to - # match this virtual host. For the default virtual host (this file) this - # value is not decisive as it is used as a last resort host regardless. - # However, you must set it for any further virtual host explicitly. - #ServerName www.example.com - - ServerAdmin webmaster@localhost - DocumentRoot <%= @docroot_dir %> - - # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, - # error, crit, alert, emerg. - # It is also possible to configure the loglevel for particular - # modules, e.g. - #LogLevel info ssl:warn - - ErrorLog <%= @log_dir %>/error.log - CustomLog <%= @log_dir %>/access.log combined - - # For most configuration files from conf-available/, which are - # enabled or disabled at a global level, it is possible to - # include a line for only one particular virtual host. For example the - # following line enables the CGI configuration for this host only - # after it has been globally disabled with "a2disconf". - #Include conf-available/serve-cgi-bin.conf - - -# vim: syntax=apache ts=4 sw=4 sts=4 sr noet diff --git a/lc-gdn-chef/cookbooks/apache2/templates/envvars.erb b/lc-gdn-chef/cookbooks/apache2/templates/envvars.erb deleted file mode 100644 index c2ce2d27e..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/envvars.erb +++ /dev/null @@ -1,51 +0,0 @@ -# envvars - default environment variables for apache2ctl - -# this won't be correct after changing uid -unset HOME - -# Since there is no sane way to get the parsed apache2 config in scripts, some -# settings are defined via environment variables and then used in apache2ctl, -# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc. -export APACHE_RUN_USER=<%= @apache_user %> -export APACHE_RUN_GROUP=<%= @apache_group %> -# temporary state file location. This might be changed to /run in Wheezy+1 -export APACHE_PID_FILE=<%= @pid_file %> -export APACHE_RUN_DIR=<%= @run_dir %> -export APACHE_LOCK_DIR=<%= @lock_dir %> -export APACHE_LOG_DIR=<%= @log_dir %> - -## The locale used by some modules like mod_dav -<%- if @apache_locale != 'system' %> -export LANG=<%= @apache_locale %> -export LC_ALL=<%= @apache_locale %> -<%- else %> -## Use the system default locale: -. /etc/default/locale -export LANG -<%- end %> - - -## The command to get the status for 'apache2ctl status'. -## Some packages providing 'www-browser' need '--dump' instead of '-dump'. -#export APACHE_LYNX='www-browser -dump' - -## If you need a higher file descriptor limit, uncomment and adjust the -## following line (default is 8192): -#APACHE_ULIMIT_MAX_FILES='ulimit -n 65536' - -## If you would like to pass arguments to the web server, add them below -## to the APACHE_ARGUMENTS environment. -#export APACHE_ARGUMENTS='' - -## Enable the debug mode for maintainer scripts. -## This will produce a verbose output on package installations of web server modules and web application -## installations which interact with Apache -#export APACHE2_MAINTSCRIPT_DEBUG=1 - -APACHE_STATUSURL=<%= @status_url %> - -<% unless @envvars_additional_params.nil? %> -<% @envvars_additional_params.each do |k,v| %> -<%= "#{k}=#{v}" %> -<% end -%> -<% end -%> diff --git a/lc-gdn-chef/cookbooks/apache2/templates/etc-sysconfig-httpd.erb b/lc-gdn-chef/cookbooks/apache2/templates/etc-sysconfig-httpd.erb deleted file mode 100644 index 759418b37..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/etc-sysconfig-httpd.erb +++ /dev/null @@ -1,37 +0,0 @@ -# This file is managed by Chef. Changes will be overwritten. - -# -# The default processing model (MPM) is the process-based -# 'prefork' model. A thread-based model, 'worker', is also -# available, but does not work with some modules (such as PHP). -# The service must be stopped before changing this variable. -# -HTTPD=<%= @apache_binary %> - -# -# To pass additional options (for instance, -D definitions) to the -# httpd binary at startup, set OPTIONS here. -# -#OPTIONS= - -# -# By default, the httpd process is started in the C locale; to -# change the locale in which the server runs, the HTTPD_LANG -# variable can be set. -# -HTTPD_LANG=<%= @apache_locale %> - -# -# By default, the httpd process will create the file -# /var/run/httpd/httpd.pid in which it records its process -# identification number when it starts. If an alternate location is -# specified in httpd.conf (via the PidFile directive), the new -# location needs to be reported in the PIDFILE. -# -PIDFILE=<%= @apache_pid_file %> - -<% unless @sysconfig_additional_params.nil? %> -<% @sysconfig_additional_params.each do |k,v| %> -<%= "#{k}=#{v}" %> -<% end -%> -<% end -%> diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/actions.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/actions.conf.erb deleted file mode 100644 index e4d448b2f..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/actions.conf.erb +++ /dev/null @@ -1,14 +0,0 @@ - - # - # Action lets you define media types that will execute a script whenever - # a matching file is called. This eliminates the need for repeated URL - # pathnames for oft-used CGI file processors. - # Format: Action media/type /cgi-script/location - # Format: Action handler-name /cgi-script/location - # - <% unless @actions.empty? %> - <% @actions.each do |handler_name, location| %> - Action <%= handler_name location %> - <% end -%> - <% end -%> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/alias.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/alias.conf.erb deleted file mode 100644 index bc5594b93..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/alias.conf.erb +++ /dev/null @@ -1,22 +0,0 @@ - - # - # Aliases: Add here as many aliases as you need (with no limit). The format is - # Alias fakename realname - # - # Note that if you include a trailing / on fakename then the server will - # require it to be present in the URL. So "/icons" isn't aliased in this - # example, only "/icons/". If the fakename is slash-terminated, then the - # realname must also be slash terminated, and if the fakename omits the - # trailing slash, the realname must also omit it. - # - # We include the /icons/ alias for FancyIndexed directory listings. If - # you do not use FancyIndexing, you may comment this out. - # - Alias /icons/ "<%= @icondir %>/" - - "> - Options <%= @options.join(' ') %> - AllowOverride <%= @allow_override.join(' ') %> - Require <%= @require %> - - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/auth_cas.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/auth_cas.conf.erb deleted file mode 100644 index 17d6b4699..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/auth_cas.conf.erb +++ /dev/null @@ -1,8 +0,0 @@ -CASCookiePath <%= @cache_dir %>/mod_auth_cas/ -CASLoginURL <%= @login_url %> -CASValidateURL <%= @validate_url %> -<% unless @directives.nil? -%> -<% @directives.sort_by { |key, val| key }.each do |directive, value| -%> -<%= directive %> <%= value %> -<% end -%> -<% end -%> diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/auth_cas.load.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/auth_cas.load.erb deleted file mode 100644 index c150dbae9..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/auth_cas.load.erb +++ /dev/null @@ -1 +0,0 @@ -LoadModule auth_cas_module <%= @libexec_dir %>/mod_auth_cas.so diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/authopenid.load.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/authopenid.load.erb deleted file mode 100644 index 5ef7dbe9a..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/authopenid.load.erb +++ /dev/null @@ -1 +0,0 @@ -LoadModule authopenid_module <%= @libexec_dir %>/mod_auth_openid.so diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/autoindex.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/autoindex.conf.erb deleted file mode 100644 index a95aa1cb1..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/autoindex.conf.erb +++ /dev/null @@ -1,97 +0,0 @@ - - # - # Directives controlling the display of server-generated directory listings. - # - - # - # IndexOptions: Controls the appearance of server-generated directory - # listings. - # Remove/replace the "Charset=UTF-8" if you don't use UTF-8 for your filenames. - # - IndexOptions <%= @index_options.join(' ') %> - - # - # AddIcon* directives tell the server which icon to show for different - # files or filename extensions. These are only displayed for - # FancyIndexed directories. - # - AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip x-bzip2 - - AddIconByType (TXT,/icons/text.gif) text/* - AddIconByType (IMG,/icons/image2.gif) image/* - AddIconByType (SND,/icons/sound2.gif) audio/* - AddIconByType (VID,/icons/movie.gif) video/* - - AddIcon /icons/binary.gif .bin .exe - AddIcon /icons/binhex.gif .hqx - AddIcon /icons/tar.gif .tar - AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv - AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip - AddIcon /icons/a.gif .ps .ai .eps - AddIcon /icons/layout.gif .html .shtml .htm .pdf - AddIcon /icons/text.gif .txt - AddIcon /icons/c.gif .c - AddIcon /icons/p.gif .pl .py - AddIcon /icons/f.gif .for - AddIcon /icons/dvi.gif .dvi - AddIcon /icons/uuencoded.gif .uu - AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl - AddIcon /icons/tex.gif .tex - # It's a suffix rule, so simply matching "core" matches "score" as well ! - AddIcon /icons/bomb.gif /core - AddIcon (SND,/icons/sound2.gif) .ogg - AddIcon (VID,/icons/movie.gif) .ogm - - AddIcon /icons/back.gif .. - AddIcon /icons/hand.right.gif README - AddIcon /icons/folder.gif ^^DIRECTORY^^ - AddIcon /icons/blank.gif ^^BLANKICON^^ - - # Default icons for OpenDocument format - AddIcon /icons/odf6odt-20x22.png .odt - AddIcon /icons/odf6ods-20x22.png .ods - AddIcon /icons/odf6odp-20x22.png .odp - AddIcon /icons/odf6odg-20x22.png .odg - AddIcon /icons/odf6odc-20x22.png .odc - AddIcon /icons/odf6odf-20x22.png .odf - AddIcon /icons/odf6odb-20x22.png .odb - AddIcon /icons/odf6odi-20x22.png .odi - AddIcon /icons/odf6odm-20x22.png .odm - - AddIcon /icons/odf6ott-20x22.png .ott - AddIcon /icons/odf6ots-20x22.png .ots - AddIcon /icons/odf6otp-20x22.png .otp - AddIcon /icons/odf6otg-20x22.png .otg - AddIcon /icons/odf6otc-20x22.png .otc - AddIcon /icons/odf6otf-20x22.png .otf - AddIcon /icons/odf6oti-20x22.png .oti - AddIcon /icons/odf6oth-20x22.png .oth - - # - # DefaultIcon is which icon to show for files which do not have an icon - # explicitly set. - # - DefaultIcon /icons/unknown.gif - - # - # AddDescription allows you to place a short description after a file in - # server-generated indexes. These are only displayed for FancyIndexed - # directories. - # Format: AddDescription "description" filename - # - - # - # ReadmeName is the name of the README file the server will look for by - # default, and append to directory listings. - # - # HeaderName is the name of a file which should be prepended to - # directory indexes. - ReadmeName <%= @readme_name%> - HeaderName <%= @header_name%> - - # - # IndexIgnore is a set of filenames which directory indexing should ignore - # and not include in the listing. Shell-style wildcarding is permitted. - # - IndexIgnore <%= @index_ignore %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/cache_disk.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/cache_disk.conf.erb deleted file mode 100644 index 95e68513b..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/cache_disk.conf.erb +++ /dev/null @@ -1,5 +0,0 @@ - - CacheRoot <%= @cache_root %> - CacheDirLevels <%= @cache_dir_levels %> - CacheDirLength <%= @cache_dir_length %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/cgid.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/cgid.conf.erb deleted file mode 100644 index d321b9b7b..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/cgid.conf.erb +++ /dev/null @@ -1 +0,0 @@ -ScriptSock <%= @script_sock %> diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/dav_fs.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/dav_fs.conf.erb deleted file mode 100644 index 5dcf4cdf2..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/dav_fs.conf.erb +++ /dev/null @@ -1 +0,0 @@ -DAVLockDB <%= @dav_lock_db %> diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/deflate.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/deflate.conf.erb deleted file mode 100644 index bf7401679..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/deflate.conf.erb +++ /dev/null @@ -1,9 +0,0 @@ - - - <% unless @add_output_filter_by_type.empty? %> - <% @add_output_filter_by_type.each_value do |filter| %> - AddOutputFilterByType <%= filter %> - <% end -%> - <% end -%> - - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/dir.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/dir.conf.erb deleted file mode 100644 index 3c5c8f52f..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/dir.conf.erb +++ /dev/null @@ -1,3 +0,0 @@ - - DirectoryIndex <%= @directory_index.join(' ') %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/fastcgi.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/fastcgi.conf.erb deleted file mode 100644 index eceff33c0..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/fastcgi.conf.erb +++ /dev/null @@ -1,7 +0,0 @@ - - AddHandler fastcgi-script .fcgi - <% unless @fast_cgi_wrapper.empty? %> - FastCgiWrapper <%= @fast_cgi_wrapper %> - <% end -%> - FastCgiIpcDir <%= @fast_cgi_ipc_dir %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/fcgid.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/fcgid.conf.erb deleted file mode 100644 index 502a8ec1f..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/fcgid.conf.erb +++ /dev/null @@ -1,9 +0,0 @@ - - <% unless @add_handler.empty? %> - <% @add_handler.each_value do |handler| %> - AddHandler <%= handler %> - <% end -%> - <% end -%> - - IPCConnectTimeout <%= @ipc_connect_timeout %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/include.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/include.conf.erb deleted file mode 100644 index 52d6e3aa2..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/include.conf.erb +++ /dev/null @@ -1,13 +0,0 @@ - - <% unless @add_type.empty? %> - <% @add_type.each_value do |type| %> - AddType <%= type %> - <% end -%> - <% end -%> - - <% unless @add_output_filter.empty? %> - <% @add_output_filter.each_value do |filter| %> - AddOutputFilter <%= filter %> - <% end -%> - <% end -%> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/info.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/info.conf.erb deleted file mode 100644 index 6915e7d88..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/info.conf.erb +++ /dev/null @@ -1,7 +0,0 @@ - - - SetHandler server-info - Require local - Require ip <%= @info_allow_list.join(' ') %> - - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/ldap.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/ldap.conf.erb deleted file mode 100644 index 6ec7e1064..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/ldap.conf.erb +++ /dev/null @@ -1,4 +0,0 @@ -> - SetHandler <%= @set_handler %> - Require <%= @require %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/mime.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/mime.conf.erb deleted file mode 100644 index 568a70945..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/mime.conf.erb +++ /dev/null @@ -1,109 +0,0 @@ - - TypesConfig <%= @types_config %> - - AddLanguage ca .ca - AddLanguage cs .cz .cs - AddLanguage da .dk - AddLanguage de .de - AddLanguage el .el - AddLanguage en .en - AddLanguage eo .eo - AddLanguage es .es - AddLanguage et .et - AddLanguage fr .fr - AddLanguage he .he - AddLanguage hr .hr - AddLanguage it .it - AddLanguage ja .ja - AddLanguage ko .ko - AddLanguage ltz .ltz - AddLanguage nl .nl - AddLanguage nn .nn - AddLanguage no .no - AddLanguage pl .po - AddLanguage pt .pt - AddLanguage pt-BR .pt-br - AddLanguage ru .ru - AddLanguage sv .sv - AddLanguage tr .tr - AddLanguage zh-CN .zh-cn - AddLanguage zh-TW .zh-tw - - # - # Commonly used filename extensions to character sets. You probably - # want to avoid clashes with the language extensions, unless you - # are good at carefully testing your setup after each change. - # See http://www.iana.org/assignments/character-sets for the - # official list of charset names and their respective RFCs. - # - AddCharset us-ascii .ascii .us-ascii - AddCharset ISO-8859-1 .iso8859-1 .latin1 - AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen - AddCharset ISO-8859-3 .iso8859-3 .latin3 - AddCharset ISO-8859-4 .iso8859-4 .latin4 - AddCharset ISO-8859-5 .iso8859-5 .cyr .iso-ru - AddCharset ISO-8859-6 .iso8859-6 .arb .arabic - AddCharset ISO-8859-7 .iso8859-7 .grk .greek - AddCharset ISO-8859-8 .iso8859-8 .heb .hebrew - AddCharset ISO-8859-9 .iso8859-9 .latin5 .trk - AddCharset ISO-8859-10 .iso8859-10 .latin6 - AddCharset ISO-8859-13 .iso8859-13 - AddCharset ISO-8859-14 .iso8859-14 .latin8 - AddCharset ISO-8859-15 .iso8859-15 .latin9 - AddCharset ISO-8859-16 .iso8859-16 .latin10 - AddCharset ISO-2022-JP .iso2022-jp .jis - AddCharset ISO-2022-KR .iso2022-kr .kis - AddCharset ISO-2022-CN .iso2022-cn .cis - AddCharset Big5 .Big5 .big5 .b5 - AddCharset cn-Big5 .cn-big5 - AddCharset WINDOWS-1251 .cp-1251 .win-1251 - AddCharset CP866 .cp866 - AddCharset KOI8 .koi8 - AddCharset KOI8-E .koi8-e - AddCharset KOI8-r .koi8-r .koi8-ru - AddCharset KOI8-U .koi8-u - AddCharset KOI8-ru .koi8-uk .ua - AddCharset ISO-10646-UCS-2 .ucs2 - AddCharset ISO-10646-UCS-4 .ucs4 - AddCharset UTF-7 .utf7 - AddCharset UTF-8 .utf8 - AddCharset UTF-16 .utf16 - AddCharset UTF-16BE .utf16be - AddCharset UTF-16LE .utf16le - AddCharset UTF-32 .utf32 - AddCharset UTF-32BE .utf32be - AddCharset UTF-32LE .utf32le - AddCharset euc-cn .euc-cn - AddCharset euc-gb .euc-gb - AddCharset euc-jp .euc-jp - AddCharset euc-kr .euc-kr - AddCharset EUC-TW .euc-tw - AddCharset gb2312 .gb2312 .gb - AddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2 - AddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4 - AddCharset shift_jis .shift_jis .sjis - - <% unless @add_encoding.empty? %> - <% @add_encoding.each_value do |encoding| %> - AddEncoding <%= encoding %> - <% end -%> - <% end -%> - - <% unless @add_handler.empty? %> - <% @add_handler.each_value do |handler| %> - AddHandler <%= handler %> - <% end -%> - <% end -%> - - <% unless @add_type.empty? %> - <% @add_type.each_value do |type| %> - AddType <%= type %> - <% end -%> - <% end -%> - - <% unless @add_output_filter.empty? %> - <% @add_output_filter.each_value do |filter| %> - AddOutputFilter <%= filter %> - <% end -%> - <% end -%> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/mime_magic.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/mime_magic.conf.erb deleted file mode 100644 index b8fcacc8c..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/mime_magic.conf.erb +++ /dev/null @@ -1,3 +0,0 @@ - - MIMEMagicFile <%= @mime_magic_file %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_event.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_event.conf.erb deleted file mode 100644 index 2561f84b7..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_event.conf.erb +++ /dev/null @@ -1,11 +0,0 @@ -# event MPM - - StartServers <%= @startservers %> - MinSpareThreads <%= @minsparethreads %> - MaxSpareThreads <%= @maxsparethreads %> - ThreadsPerChild <%= @threadsperchild %> - MaxRequestWorkers <%= @maxrequestworkers %> - MaxConnectionsPerChild <%= @maxconnectionsperchild %> - ThreadLimit <%= @threadlimit %> - ServerLimit <%= @serverlimit %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_prefork.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_prefork.conf.erb deleted file mode 100644 index ff3951cfa..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_prefork.conf.erb +++ /dev/null @@ -1,9 +0,0 @@ -# prefork MPM - - StartServers <%= @startservers %> - MinSpareServers <%= @minspareservers %> - MaxSpareServers <%= @maxspareservers %> - ServerLimit <%= @serverlimit %> - MaxRequestWorkers <%= @maxrequestworkers %> - MaxConnectionsPerChild <%= @maxconnectionsperchild %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_worker.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_worker.conf.erb deleted file mode 100644 index c4c1d21a4..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/mpm_worker.conf.erb +++ /dev/null @@ -1,11 +0,0 @@ -# worker MPM - - StartServers <%= @startservers %> - MinSpareThreads <%= @minsparethreads %> - MaxSpareThreads <%= @maxsparethreads %> - ThreadsPerChild <%= @threadsperchild %> - MaxRequestWorkers <%= @maxrequestworkers %> - MaxConnectionsPerChild <%= @maxconnectionsperchild %> - ThreadLimit <%= @threadlimit %> - ServerLimit <%= @serverlimit %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/negotiation.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/negotiation.conf.erb deleted file mode 100644 index e5258e109..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/negotiation.conf.erb +++ /dev/null @@ -1,17 +0,0 @@ - - # - # LanguagePriority allows you to give precedence to some languages - # in case of a tie during content negotiation. - # - # Just list the languages in decreasing order of preference. We have - # more or less alphabetized them here. You probably want to change this. - # - LanguagePriority <%= @language_priority %> - - # - # ForceLanguagePriority allows you to serve a result page rather than - # MULTIPLE CHOICES (Prefer) [in case of a tie] or NOT ACCEPTABLE (Fallback) - # [in case no accepted languages matched the available variants] - # - ForceLanguagePriority <%= @force_language_priority %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/pagespeed.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/pagespeed.conf.erb deleted file mode 100644 index 71d3d52c4..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/pagespeed.conf.erb +++ /dev/null @@ -1,95 +0,0 @@ - - ModPagespeed <%= @mod_page_speed %> - - # We want VHosts to inherit global configuration. - # If this is not included, they'll be independent (except for inherently - # global options), at least for backwards compatibility. - ModPagespeedInheritVHostConfig <%= @inherit_vhost_config %> - - <% unless @output_filters.empty? %> - <% @output_filters.each do |filter| %> - AddOutputFilterByType <%= filter %> - <% end -%> - <% end -%> - # The ModPagespeedFileCachePath directory must exist and be writable - # by the apache user (as specified by the User directive). - ModPagespeedFileCachePath "<%= @file_cache_path %>" - - <% unless @rewrite_level.empty? %> - ModPagespeedRewriteLevel <% @rewrite_level %> - <% end -%> - - <% unless @disable_filters.empty? %> - ModPagespeedDisableFilters <% @disable_filters %> - <% end -%> - - <% unless @enable_filters.empty? %> - ModPagespeedEnableFilters <% @enable_filters %> - <% end -%> - - <% unless @domain.empty? %> - ModPagespeedDomain <% @domain %> - <% end -%> - - ModPagespeedFileCacheInodeLimit <%= @file_cache_inode_limit %> - ModPagespeedAvoidRenamingIntrospectiveJavascript <%= @avoid_renaming_introspective_javascript %> - - <% unless @library.empty?%> - <% @library.each do |library| %> - ModPagespeedLibrary library - <% end -%> - <% end -%> - - # This handles the client-side instrumentation callbacks which are injected - # by the add_instrumentation filter. - # You can use a different location by adding the ModPagespeedBeaconUrl - # directive; see the documentation on add_instrumentation. - - SetHandler mod_pagespeed_beacon - - - - # This page lets you view statistics about the mod_pagespeed module. - - Order allow,deny - # You may insert other "Allow from" lines to add hosts you want to - # allow to look at generated statistics. Another possibility is - # to comment out the "Order" and "Allow" options from the config - # file, to allow any client that can reach your server to examine - # statistics. This might be appropriate in an experimental setup or - # if the Apache server is protected by a reverse proxy that will - # filter URLs in some fashion. - Allow from localhost - Allow from 127.0.0.1 - SetHandler mod_pagespeed_statistics - - - # This page lets you view a graphical console displaying statistics about - # the mod_pagespeed module. - - Order allow,deny - # This can be configured similarly to mod_pagespeed_statistics above. - Allow from localhost - Allow from 127.0.0.1 - SetHandler mod_pagespeed_console - - - # Page /mod_pagespeed_message lets you view the latest messages from - # mod_pagespeed, regardless of log-level in your httpd.conf - # ModPagespeedMessageBufferSize is the maximum number of bytes you would - # like to dump to your /mod_pagespeed_message page at one time, - # its default value is 100k bytes. - # Set it to 0 if you want to disable this feature. - ModPagespeedMessageBufferSize 100000 - - - Allow from localhost - Allow from 127.0.0.1 - SetHandler mod_pagespeed_message - - - Allow from localhost - Allow from 127.0.0.1 - SetHandler mod_pagespeed_referer_statistics - - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/php.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/php.conf.erb deleted file mode 100644 index a876e2539..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/php.conf.erb +++ /dev/null @@ -1,25 +0,0 @@ - - SetHandler application/x-httpd-php - - - SetHandler application/x-httpd-php-source - # Deny access to raw php sources by default - # To re-enable it's recommended to enable access to the files - # only in specific virtual host or directory - Require all denied - -# Deny access to files without filename (e.g. '.php') - - Require all denied - - -# Running PHP scripts in user directories is disabled by default -# -# To re-enable PHP in user directories comment the following lines -# (from to .) Do NOT set it to On as it -# prevents .htaccess files from disabling it. - - - php_admin_value engine Off - - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/proxy.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/proxy.conf.erb deleted file mode 100644 index cc18fc39f..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/proxy.conf.erb +++ /dev/null @@ -1,16 +0,0 @@ - - #turning ProxyRequests on and allowing proxying from all may allow - #spammers to use your proxy to send email. - - ProxyRequests <%= @proxy_requests %> - - - AddDefaultCharset <%= @add_default_charset %> - Require <%= @require %> - - - # Enable/disable the handling of HTTP/1.1 "Via:" headers. - # ("Full" adds the server version; "Block" removes all outgoing Via: headers) - # Set to one of: Off | On | Full | Block - ProxyVia <%= @proxy_via %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/proxy_balancer.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/proxy_balancer.conf.erb deleted file mode 100644 index 1ab4867a1..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/proxy_balancer.conf.erb +++ /dev/null @@ -1,10 +0,0 @@ - - # Balancer manager enables dynamic update of balancer members (needs mod_status) - # - - > - SetHandler <%= @set_handler %> - Require <%= @require %> - - - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/proxy_ftp.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/proxy_ftp.conf.erb deleted file mode 100644 index e6bf1e33b..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/proxy_ftp.conf.erb +++ /dev/null @@ -1,12 +0,0 @@ - - ProxyFtpDirCharset <%= @proxy_ftp_dir_charset %> - - <% unless @proxy_ftp_escape_wildcards.empty? %> - ProxyFtpEscapeWildcards <%= @proxy_ftp_escape_wildcards %> - <% end -%> - - <% unless @proxy_ftp_list_on_wildcard.empty? %> - ProxyFtpListOnWildcards <%= @proxy_ftp_list_on_wildcard %> - <% end -%> - - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/reqtimeout.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/reqtimeout.conf.erb deleted file mode 100644 index df9779fd5..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/reqtimeout.conf.erb +++ /dev/null @@ -1,26 +0,0 @@ - - # mod_reqtimeout limits the time waiting on the client to prevent an - # attacker from causing a denial of service by opening many connections - # but not sending requests. This file tries to give a sensible default - # configuration, but it may be necessary to tune the timeout values to - # the actual situation. Note that it is also possible to configure - # mod_reqtimeout per virtual host. - - # Wait max 20 seconds for the first byte of the request line+headers - # From then, require a minimum data rate of 500 bytes/s, but don't - # wait longer than 40 seconds in total. - # Note: Lower timeouts may make sense on non-ssl virtual hosts but can - # cause problem with ssl enabled virtual hosts: This timeout includes - # the time a browser may need to fetch the CRL for the certificate. If - # the CRL server is not reachable, it may take more than 10 seconds - # until the browser gives up. - # RequestReadTimeout header=20-40,minrate=500 - - # Wait max 10 seconds for the first byte of the request body (if any) - # From then, require a minimum data rate of 500 bytes/s - # RequestReadTimeout body=10,minrate=500 - - <% @request_read_timeout.each_value do |value| %> - RequestReadTimeout <%= value %> - <% end %> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/setenvif.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/setenvif.conf.erb deleted file mode 100644 index 4f6956297..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/setenvif.conf.erb +++ /dev/null @@ -1,19 +0,0 @@ - - <% unless @browser_match.nil? %> - <% @browser_match.each do |match| %> - BrowserMatch <%= match %> - <% end -%> - <% end -%> - - <% unless @browser_match.nil? %> - <% @browser_matches_no_case.each do |match| %> - BrowserMatchNoCase <%= match %> - <% end -%> - <% end -%> - - <% unless @set_env_if_no_cases.nil? %> - <% @set_env_if_no_cases.each do |match| %> - SetEnvIfNoCase <%= match %> - <% end -%> - <% end -%> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/ssl.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/ssl.conf.erb deleted file mode 100644 index 237e637d6..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/ssl.conf.erb +++ /dev/null @@ -1,101 +0,0 @@ - - # - # Pseudo Random Number Generator (PRNG): - # Configure one or more sources to seed the PRNG of the SSL library. - # The seed data should be of good random quality. - # WARNING! On some platforms /dev/random blocks if not enough entropy - # is available. This means you then cannot use the /dev/random device - # because it would lead to very long connection times (as long as - # it requires to make more entropy available). But usually those - # platforms additionally provide a /dev/urandom device which doesn't - # block. So, if available, use this one instead. Read the mod_ssl User - # Manual for more details. - # - SSLRandomSeed startup builtin - SSLRandomSeed startup file:/dev/urandom 512 - SSLRandomSeed connect builtin - SSLRandomSeed connect file:/dev/urandom 512 - - ## - ## SSL Global Context - ## - ## All SSL configuration in this context applies both to - ## the main server and all SSL-enabled virtual hosts. - ## - - # - # Some MIME-types for downloading Certificates and CRLs - # - AddType application/x-x509-ca-cert .crt - AddType application/x-pkcs7-crl .crl - - # Pass Phrase Dialog: - # Configure the pass phrase gathering process. - # The filtering dialog program (`builtin' is a internal - # terminal dialog) has to provide the pass phrase on stdout. - SSLPassPhraseDialog <%= @pass_phrase_dialog %> - - # Inter-Process Session Cache: - # Configure the SSL Session Cache: First the mechanism - # to use and second the expiring timeout (in seconds). - SSLSessionCache <%= @session_cache %> - SSLSessionCacheTimeout <%= @session_cache_timeout %> - - # SSL Cipher Suite: - # List the ciphers that the client is permitted to negotiate. - # See the mod_ssl documentation for a complete list. - # enable only secure ciphers: - SSLCipherSuite <%= @cipher_suite %> - - # Speed-optimized SSL Cipher configuration: - # If speed is your main concern (on busy HTTPS servers e.g.), - # you might want to force clients to specific, performance - # optimized ciphers. In this case, prepend those ciphers - # to the SSLCipherSuite list, and enable SSLHonorCipherOrder. - # Caveat: by giving precedence to RC4-SHA and AES128-SHA - # (as in the example below), most connections will no longer - # have perfect forward secrecy - if the server's key is - # compromised, captures of past or future traffic must be - # considered compromised, too. - #SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5 - SSLHonorCipherOrder <%= @honor_cipher_order %> - - # The protocols to enable. - # Available values: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2 - # SSL v2 is no longer supported - SSLProtocol <%= @protocol %> - - # Allow insecure renegotiation with clients which do not yet support the - # secure renegotiation protocol. Default: Off - SSLInsecureRenegotiation <%= @insecure_renegotiation %> - -<% unless @strict_sni_vhost_check == "Off"%> - # Whether to forbid non-SNI clients to access name based virtual hosts. - # Default: Off - SSLStrictSNIVHostCheck <%= @strict_sni_vhost_check %> -<% end %> - - # Enable compression on the SSL level - # Enabling compression causes security issues in most setups (the so called CRIME attack). - # Default: Off - SSLCompression <%= @compression %> - - # OCSP Stapling, only in httpd 2.3.3 and later - # This option enables OCSP stapling, as defined by the "Certificate Status Request" TLS - # extension specified in RFC 6066. If enabled (and requested by the client), mod_ssl will - # include an OCSP response for its own certificate in the TLS handshake. - # Configuring an SSLStaplingCache is a prerequisite for enabling OCSP stapling. - # Default: Off - <% if @use_stapling == 'On' -%> - SSLUseStapling <%= @use_stapling %> - SSLStaplingResponderTimeout <%= @stapling_responder_timeout %> - SSLStaplingReturnResponderErrors <%= @stapling_return_responder_errors %> - SSLStaplingCache <%= @stapling_cache %> - <% end -%> - - <% unless @directives.nil? -%> - <% @directives.sort_by { |key, val| key }.each do |directive, value| -%> - <%= directive %> <%= value %> - <% end -%> - <% end -%> - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/status.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/status.conf.erb deleted file mode 100644 index 07cbcedc0..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/status.conf.erb +++ /dev/null @@ -1,25 +0,0 @@ - - # - # Allow server status reports generated by mod_status, - # with the URL of http://servername/server-status - # Uncomment and change the ".example.com" to allow - # access from other hosts. - # - > - SetHandler server-status - Require local - Require ip <%= @status_allow_list.join(' ') %> - - - # - # ExtendedStatus controls whether Apache will generate "full" status - # information (ExtendedStatus On) or just basic information (ExtendedStatus - # Off) when the "server-status" handler is called. The default is Off. - # - ExtendedStatus <%= @extended_status %> - - - # Show Proxy LoadBalancer status in mod_status - ProxyStatus <%= @proxy_status %> - - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/mods/userdir.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/mods/userdir.conf.erb deleted file mode 100644 index d2ec11d83..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/mods/userdir.conf.erb +++ /dev/null @@ -1,15 +0,0 @@ - - UserDir public_html - UserDir disabled root - - > - AllowOverride <%= @allow_override %> - Options <%= @options %> - - Require all granted - - - Require all denied - - - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/ports.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/ports.conf.erb deleted file mode 100644 index 0c8a8586f..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/ports.conf.erb +++ /dev/null @@ -1,6 +0,0 @@ -# This file was generated by Chef for <%= node['fqdn'] %>. -# Do NOT modify this file by hand! - -<% @listen.each do |value| -%> -Listen <%= value %> -<% end -%> diff --git a/lc-gdn-chef/cookbooks/apache2/templates/security.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/security.conf.erb deleted file mode 100644 index 9dbfc65d4..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/security.conf.erb +++ /dev/null @@ -1,38 +0,0 @@ -# Changing the following options will not really affect the security of the -# server, but might make attacks slightly more difficult in some cases. - -# -# ServerTokens -# This directive configures what you return as the Server HTTP response -# Header. The default is 'Full' which sends information about the OS-Type -# and compiled in modules. -# Set to one of: Full | OS | Minimal | Minor | Major | Prod -# where Full conveys the most information, and Prod the least. -# -<% unless @server_tokens.nil? %> -ServerTokens <%= @server_tokens %> -<% end %> - -# -# Optionally add a line containing the server version and virtual host -# name to server-generated pages (internal error documents, FTP directory -# listings, mod_status and mod_info output etc., but not CGI generated -# documents or custom error documents). -# Set to "EMail" to also include a mailto: link to the ServerAdmin. -# Set to one of: On | Off | EMail -# -<% unless @server_signature.nil? %> -ServerSignature <%= @server_signature %> -<% end %> - -# -# Allow TRACE method -# -# Set to "extended" to also reflect the request body (only for testing and -# diagnostic purposes). -# -# Set to one of: On | Off | extended -# -<% unless @trace_enable.nil? %> -TraceEnable <%= @trace_enable %> -<% end %> diff --git a/lc-gdn-chef/cookbooks/apache2/templates/web_app.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/web_app.conf.erb deleted file mode 100644 index 4ac4a385a..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/web_app.conf.erb +++ /dev/null @@ -1,41 +0,0 @@ -> - ServerName <%= @params[:server_name] %> - <% if @params[:server_aliases] -%> - ServerAlias <%= @params[:server_aliases].join " " %> - <% end -%> - DocumentRoot <%= @params[:docroot] %> - - > - Options <%= [@params[:directory_options] || "FollowSymLinks" ].flatten.join " " %> - AllowOverride <%= [@params[:allow_override] || "None" ].flatten.join " " %> - Require all granted - - - - Options FollowSymLinks - AllowOverride None - - - - SetHandler server-status - Require local - - - RewriteEngine On - LogLevel info rewrite:trace1 - ErrorLog <%= node['apache']['log_dir'] %>/<%= @params[:name] %>-error.log - CustomLog <%= node['apache']['log_dir'] %>/<%= @params[:name] %>-access.log combined - - <% if @params[:directory_index] -%> - DirectoryIndex <%= [@params[:directory_index]].flatten.join " " %> - <% end -%> - - # Canonical host, <%= @params[:server_name] %> - RewriteCond %{HTTP_HOST} !^<%= @params[:server_name] %> [NC] - RewriteCond %{HTTP_HOST} !^$ - RewriteRule ^/(.*)$ http://<%= @params[:server_name] %>/$1 [L,R=301] - - RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f - RewriteCond %{SCRIPT_FILENAME} !maintenance.html - RewriteRule ^.*$ /system/maintenance.html [L,R=503] - diff --git a/lc-gdn-chef/cookbooks/apache2/templates/welcome.conf.erb b/lc-gdn-chef/cookbooks/apache2/templates/welcome.conf.erb deleted file mode 100644 index 1a083c4c1..000000000 --- a/lc-gdn-chef/cookbooks/apache2/templates/welcome.conf.erb +++ /dev/null @@ -1,59 +0,0 @@ -# -# This configuration file enables the default "Welcome" page if there -# is no default index page present for the root URL. To disable the -# Welcome page, comment out all the lines below. -# -# NOTE: if this file is removed, it will be restored on upgrades. -# - -DocumentRoot "<%= @docroot_dir %>" - -# Further relax access to the default document root: -"> - # - # Possible values for the Options directive are "None", "All", - # or any combination of: - # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews - # - # Note that "MultiViews" must be named *explicitly* --- "Options All" - # doesn't give it to you. - # - # The Options directive is both complicated and important. Please see - # http://httpd.apache.org/docs/2.4/mod/core.html#options - # for more information. - # - Options Indexes FollowSymLinks - - # - # AllowOverride controls what directives may be placed in .htaccess files. - # It can be "All", "None", or any combination of the keywords: - # Options FileInfo AuthConfig Limit - # - AllowOverride None - - # - # Controls who can get stuff from this server. - # - Require all granted - - - - Options -Indexes - ErrorDocument 403 /.noindex.html - - - - AllowOverride None - Require all granted - - -<% if node['platform_version'].to_i == 8 -%> -Alias /.noindex.html /usr/share/httpd/noindex/index.html -Alias /poweredby.png /usr/share/httpd/icons/apache_pb2.png -<% else -%> -Alias /.noindex.html /usr/share/httpd/noindex/index.html -Alias /noindex/css/bootstrap.min.css /usr/share/httpd/noindex/css/bootstrap.min.css -Alias /noindex/css/open-sans.css /usr/share/httpd/noindex/css/open-sans.css -Alias /images/apache_pb.gif /usr/share/httpd/noindex/images/apache_pb.gif -Alias /images/poweredby.png /usr/share/httpd/noindex/images/poweredby.png -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/.coveralls.yml b/lc-gdn-chef/cookbooks/dovecot/.coveralls.yml deleted file mode 100644 index 91600595a..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -service_name: travis-ci diff --git a/lc-gdn-chef/cookbooks/dovecot/.gitignore b/lc-gdn-chef/cookbooks/dovecot/.gitignore deleted file mode 100644 index 218c751ad..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -.#* -*~ -*# -\#*# -Berksfile.lock -bin -bin/* -.bundle -.bundle/* -.cache -/cookbooks -coverage -doc -Dockerfile-kitchen* -*.gem -Gemfile.lock -.kitchen -.kitchen.local.yml -metadata.json -nodes/ -.*.sw[a-z] -test/kitchen/.kitchen/ -*.un~ -.vagrant -vendor -.yardoc diff --git a/lc-gdn-chef/cookbooks/dovecot/.kitchen.cloud.yml b/lc-gdn-chef/cookbooks/dovecot/.kitchen.cloud.yml deleted file mode 100644 index 66da36ed6..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/.kitchen.cloud.yml +++ /dev/null @@ -1,54 +0,0 @@ ---- -driver: - aws_ssh_key_id: <%= ENV['AWS_KEYPAIR_NAME'] %> - -platforms: -- name: fedora-19-x64 - driver_plugin: digitalocean - driver_config: - flavor: 512MB - -- name: fedora-20-x64 - driver_plugin: digitalocean - driver_config: - flavor: 512MB - -- name: ubuntu-10-04-x64 - driver_plugin: digitalocean - driver_config: - flavor: 512MB - run_list: recipe[apt] - -- name: ubuntu-12-04-x64 - driver_plugin: digitalocean - driver_config: - flavor: 512MB - run_list: recipe[apt] - -- name: ubuntu-14-04-x64 - driver_plugin: digitalocean - driver_config: - flavor: 512MB - run_list: recipe[apt] - -- name: amazon-2011.02.1 - driver_plugin: ec2 - driver_config: - image_id: ami-8e1fece7 - instance_type: t1.micro - transport: - username: ec2-user -<% if ENV['SSH_AGENT_PID'].nil? %> - ssh_key: <%= ENV['EC2_SSH_KEY_PATH'] %> -<% end %> - -- name: amazon-2013.09.2 - driver_plugin: ec2 - driver_config: - image_id: ami-bba18dd2 - instance_type: t1.micro - transport: - username: ec2-user -<% if ENV['SSH_AGENT_PID'].nil? %> - ssh_key: <%= ENV['EC2_SSH_KEY_PATH'] %> -<% end %> diff --git a/lc-gdn-chef/cookbooks/dovecot/.kitchen.docker.yml b/lc-gdn-chef/cookbooks/dovecot/.kitchen.docker.yml deleted file mode 100644 index 923d59859..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/.kitchen.docker.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -driver: - name: docker - use_sudo: false - -# If you add new platforms below, include them in the .travis.yml file matrix -platforms: -- name: centos-6 -- name: centos-7 -- name: debian-7 - run_list: recipe[apt] -- name: debian-8 - run_list: recipe[apt] -- name: oraclelinux-6 - driver_config: - platform: rhel -- name: ubuntu-15.10 - run_list: recipe[apt] -- name: ubuntu-16.04 - run_list: recipe[apt] - -# Non-official images with systemd -- name: scientific-6.6 - driver_config: - image: ringo/scientific:6.6 - platform: rhel diff --git a/lc-gdn-chef/cookbooks/dovecot/.kitchen.yml b/lc-gdn-chef/cookbooks/dovecot/.kitchen.yml deleted file mode 100644 index 1f90ee012..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/.kitchen.yml +++ /dev/null @@ -1,82 +0,0 @@ ---- -driver: - name: vagrant - network: - - ["forwarded_port", {guest: 110, host: 8110, auto_correct: true}] - - ["forwarded_port", {guest: 995, host: 8995, auto_correct: true}] - - ["forwarded_port", {guest: 143, host: 8143, auto_correct: true}] - - ["forwarded_port", {guest: 993, host: 8993, auto_correct: true}] - -provisioner: - name: chef_zero - require_chef_omnibus: true - data_bags_path: ./test/data_bags - # client_rb: - # treat_deprecation_warnings_as_errors: true # WiP on some depends - -platforms: -- name: centos-6.7 -- name: centos-7.2 -- name: debian-7.9 - run_list: recipe[apt] -- name: debian-8.2 - run_list: recipe[apt] -- name: fedora-20 -- name: fedora-21 -- name: opensuse-12.3 - driver_config: - box: opensuse-12.3-64 - box_url: 'http://downloads.sourceforge.net/project/opensusevagrant/12.3/opensuse-12.3-64.box?r=&ts=1441918998&use_mirror=freefr' -- name: opensuse-13.2 - driver_config: - box: opscode-opensuse-13.2 - box_url: http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_opensuse-13.2-x86_64_chef-provisionerless.box -- name: ubuntu-12.04 - run_list: recipe[apt] -- name: ubuntu-14.04 - run_list: recipe[apt] -- name: ubuntu-15.10 - run_list: recipe[apt] -- name: ubuntu-16.04 - run_list: recipe[apt] - -suites: -- name: default - run_list: - - recipe[dovecot_test] -- name: ldap - excludes: - # openldap cookbook does not work - - centos-6 - - centos-6.6 - - centos-7 - - centos-7.2 - - fedora-20 - - fedora-21 - - opensuse-12.3 - - opensuse-13.2 - - oraclelinux-6 - - scientific-6.6 - run_list: - - recipe[dovecot_test::ldap] -- name: attributes - run_list: - - recipe[dovecot_test::attributes] -- name: create_pwfile - run_list: - - recipe[dovecot_test::create_pwfile] - excludes: - # tests are not working on older versions of dovecot - - centos-6.7 - - debian-8.2 - - debian-8 - - ubuntu-12.04 - - ubuntu-15.10 - - ubuntu-16.04 - - fedora-20 - - fedora-21 - - opensuse-12.3 - - opensuse-13.2 - - oraclelinux-6 - - scientific-6.6 - diff --git a/lc-gdn-chef/cookbooks/dovecot/.rubocop.yml b/lc-gdn-chef/cookbooks/dovecot/.rubocop.yml deleted file mode 100644 index 387191bba..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/.rubocop.yml +++ /dev/null @@ -1,6 +0,0 @@ -AllCops: - Exclude: - - .kitchen - - vendor/**/* -Metrics/ModuleLength: - Max: 121 diff --git a/lc-gdn-chef/cookbooks/dovecot/.travis.yml b/lc-gdn-chef/cookbooks/dovecot/.travis.yml deleted file mode 100644 index 636fe47b9..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/.travis.yml +++ /dev/null @@ -1,47 +0,0 @@ -rvm: 2.2 - -sudo: required - -services: docker - -env: - matrix: - - TESTS="style unit" -# Split up the test-kitchen run to avoid exceeding 50 minutes: - - TESTS="integration[default-centos-6,verify]" - - TESTS="integration[default-debian-7,verify]" - - TESTS="integration[default-debian-8,verify]" - - TESTS="integration[default-oraclelinux-6,verify]" - - TESTS="integration[default-ubuntu-1510,verify]" - - TESTS="integration[default-ubuntu-1604,verify]" - - TESTS="integration[default-scientific-66,verify]" - - TESTS="integration[ldap-debian-7,verify]" - - TESTS="integration[ldap-debian-8,verify]" - - TESTS="integration[ldap-ubuntu-1510,verify]" - - TESTS="integration[ldap-ubuntu-1604,verify]" - - TESTS="integration[attributes-centos-6,verify]" - - TESTS="integration[attributes-debian-7,verify]" - - TESTS="integration[attributes-debian-8,verify]" - - TESTS="integration[attributes-oraclelinux-6,verify]" - - TESTS="integration[attributes-ubuntu-1510,verify]" - - TESTS="integration[attributes-ubuntu-1604,verify]" - - TESTS="integration[attributes-scientific-66,verify]" - - TESTS="integration[create-pwfile-centos-72,verify]" - - TESTS="integration[create-pwfile-debian-79,verify]" - - TESTS="integration[create-pwfile-ubuntu-14.04,verify]" - -before_install: -- chef --version &> /dev/null || curl -L https://www.getchef.com/chef/install.sh | sudo bash -s -- -P chefdk -v 1.2.22 -- eval "$(/opt/chefdk/bin/chef shell-init bash)" - -install: -- chef exec bundle install --jobs=3 --retry=3 --without='doc integration_vagrant integration_cloud guard' - -before_script: -# https://github.com/zuazo/kitchen-in-travis-native/issues/1#issuecomment-142455888 -- sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER ) -- chef --version -- cookstyle --version -- foodcritic --version - -script: travis_retry chef exec bundle exec rake $TESTS diff --git a/lc-gdn-chef/cookbooks/dovecot/.yardopts b/lc-gdn-chef/cookbooks/dovecot/.yardopts deleted file mode 100644 index 4019412b3..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/.yardopts +++ /dev/null @@ -1,6 +0,0 @@ ---markup markdown ---no-private ---exclude test -'*/**/*.rb' -- -*.md diff --git a/lc-gdn-chef/cookbooks/dovecot/Berksfile b/lc-gdn-chef/cookbooks/dovecot/Berksfile deleted file mode 100644 index 759fc8254..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/Berksfile +++ /dev/null @@ -1,33 +0,0 @@ -# encoding: UTF-8 -# -*- mode: ruby -*- -# vi: set ft=ruby : - -source 'https://supermarket.chef.io' -my_cookbook = ::File.basename(Dir.pwd).sub(/[-_]?cookbook$/, '') - -# Helper to include a local cookbook from disk -def local_cookbook(name, version = '>= 0.0.0', options = {}) - cookbook(name, version, { - path: "../../cookbooks/#{name}" - }.merge(options)) -end - -metadata -cookbook 'apt' - -# Minitest Chef Handler -# More info at https://github.com/calavera/minitest-chef-handler -if ::File.directory?(::File.join('files', 'default', 'tests', 'minitest')) || - ::File.directory?( - ::File.join( - 'test', 'cookbooks', "#{my_cookbook}_test", 'files', 'default', 'tests', - 'minitest' - ) - ) - cookbook 'minitest-handler' -end - -# Integration tests cookbook: -if ::File.directory?("./test/cookbooks/#{my_cookbook}_test") - cookbook "#{my_cookbook}_test", path: "./test/cookbooks/#{my_cookbook}_test" -end diff --git a/lc-gdn-chef/cookbooks/dovecot/CHANGELOG.md b/lc-gdn-chef/cookbooks/dovecot/CHANGELOG.md deleted file mode 100644 index 4739faa3b..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/CHANGELOG.md +++ /dev/null @@ -1,188 +0,0 @@ -# Change Log -All notable changes to the `dovecot` cookbook will be documented in this file. - -The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). - -## [3.2.1] - 2017-03-10 -### Fixed -- Unit Tests fix: Replace Ubuntu `13.10` with Ubuntu `14.04`. - -## [3.2.0] - 2017-03-10 -Special thanks to [Vassilis Aretakis](https://github.com/billiaz) for his astonishing contributions :sparkles: - -### Added -- Add pwfilesupport ([issue #25](https://github.com/zuazo/dovecot-cookbook/pull/25), thanks to [Vassilis Aretakis](https://github.com/billiaz), [Sjoerd Tromp](https://github.com/stromp) and [Sander van Harmelen](https://github.com/svanharmelen)). -- metadata: Add `chef_version`. -- README: Add rubydoc and inch-ci badges. - -### Changed -- CHANGELOG: Follow "Keep a CHANGELOG". - -## [3.1.0] - 2017-02-27 -### Added -- Service: Add support for Dovecot Replication ([issue #24](https://github.com/zuazo/dovecot-cookbook/pull/24), thanks [Vassilis Aretakis](https://github.com/billiaz)). - -### Changed -- Change libraries namespace from `Dovecot` to `DovecotCookbook`. - -## [3.0.0] - 2016-10-09 -### Added -- Add support for services: quota-status, quota-warning, doveadm ([issue #18](https://github.com/zuazo/dovecot-cookbook/pull/18), thanks [Edgaras Lukosevicius](https://github.com/ledgr)). -- Change dovecot users homedir separate attribute ([issue #21](https://github.com/zuazo/dovecot-cookbook/pull/21), thanks [Edgaras Lukosevicius](https://github.com/ledgr)). -- Update all configuration files to Dovecot `2.2.23`. -- Rewrite Ohai plugin to support Ohai cookbook version `4` ([issue #23](https://github.com/zuazo/dovecot-cookbook/pull/23), thanks [Edgaras Lukosevicius](https://github.com/ledgr)). -- README: Add license badge and improve the badges position. - -### Changed -- Improve TESTING documentation. - -### Fixed -- Ubuntu >= `15.10` support. -- Always create dovenull user. -- Ohai plugin: Use `#shell_out` instead of `run_command` (fix Ohai `9` support). -- Fix metadata error in a *calculated* field documentation. -- Fix RuboCop offenses in ohai plugins. - -### Removed -- Drop Chef `11` support (required by ohai dependency). -- Drop Ruby `< 2.2` support. - -## [2.5.0] - 2016-07-28 -### Changed -* metadata: Add ohai dependency version constraint for version `3` (fixes [#22](https://github.com/zuazo/dovecot-cookbook/issues/22), thanks [Markus Wagner](https://github.com/zuazo/dovecot-cookbook/issues/22) for reporting). - -## [2.4.0] - 2015-09-11 -### Added -- SUSE and OpenSUSE support ([issue #16](https://github.com/zuazo/dovecot-cookbook/issues/16), thanks [Marcus Klein](https://github.com/kleini) for the help). -- Oracle Linux support. -- Scientific Linux support. - -### Fixed -- Ubuntu `15.04` support. - -## [2.3.0] - 2015-08-30 -### Added -- metadata: Add `source_url` and `issues_url`. - -### Changed -- Update chef links to use *chef.io* domain. -- Update contact information and links after migration. -- README: Improve description. - -## [2.2.2] - 2015-07-29 -### Changed -- README: - - Use markdown tables. - - Add GitHub source badge. - -## [2.2.1] - 2015-07-23 -### Fixed -- Travis CI: Fix `test-kitchen` integration tests. - -## [2.2.0] - 2015-07-22 -### Fixed -- Fix Debian Jessie support ([issue #15](https://github.com/zuazo/dovecot-cookbook/issues/15), thanks [Marcus Klein](https://github.com/kleini) for the help). - -### Changed -- README: Improve examples and some fixes. - -## [2.1.0] - 2015-04-04 -### Changed -- Update all configuration files to Dovecot `2.2.16`. -- Update RuboCop to `0.29.1` (new offenses fixed). -- README: Add a TOC. -- Update Chef links to point to *chef.io*. - -### Fixed -- Improve LDAP support, including integration tests ([issue #12](https://github.com/zuazo/dovecot-cookbook/issues/12), thanks [Dr. Ogg](https://github.com/neallawson) for reporting). - -## [2.0.0] - 2014-10-28 -### Changed -- Delete existing configuration files if they are not required. -- Use the `conf_files_user` attribute for configuration file directories owner instead of a hardcoded `'root'`. -- Some libraries refactored. -- `Dovecot::Auth`: remove code duplication. -- Homogenize license headers. -- README improvements. - -### Removed -- Drop Ruby `< 1.9.3` support. -- Remove deprecated `::package` recipe. - -### Fixed -- Fix ohai `7` plugin *"`provides` unsupported operation"* warning. -- Fix all RuboCop and Foodcritic offenses. - -## [1.0.1] - 2014-10-01 -### Added -- README: Added Cookbook badge. -- Added TODO file. - -### Fixed -- Ubuntu `14.04` support. - -## [1.0.0] - 2014-04-23 -### Added -- `from_package` recipe ([issue #8](https://github.com/zuazo/dovecot-cookbook/pull/8), thanks [Jordi Llonch](https://github.com/llonchj)). -- Ohai 7 plugins support ([issue #10](https://github.com/zuazo/dovecot-cookbook/pull/10)). - -### Changed -- Package installation and template generation logic standardized using a `Dovecot::Conf#require?` method ([issue #9](https://github.com/zuazo/dovecot-cookbook/pull/9), thanks [Jordi Llonch](https://github.com/llonchj) for the help). - - ***Note:*** This change is ***huge***, but it is supposed to be backwards compatible. - -### Deprecated -- `packages` recipe marked for future deprecation ([issue #8](https://github.com/zuazo/dovecot-cookbook/pull/8), thanks [Jordi Llonch](https://github.com/llonchj)). - -### Fixed -- README: fixed some typos ([issue #7](https://github.com/zuazo/dovecot-cookbook/pull/7), thanks [Jordi Llonch](https://github.com/llonchj)). - -## [0.3.1] - 2014-03-15 -### Changed -- README: some env variables description improved. - -### Fixed -- Fixed Ubuntu `13.10` support. - -## [0.3.0] - 2014-03-13 -### Added -- Dovecot Ohai Plugin. -- Tested to work on Fedora 18, Fedora 19 and Amazon. -- Add support for anvil service ([issue #5](https://github.com/zuazo/dovecot-cookbook/pull/5), thanks [Johan Svensson](https://github.com/loxley)). - -### Changed -- Protect sensitive config files from read ([issue #4](https://github.com/zuazo/dovecot-cookbook/pull/4), thanks [claudex](https://github.com/claudex)). - -### Fixed -- Auth-definitions below ldap are a hash, not an array ([issue #6](https://github.com/zuazo/dovecot-cookbook/pull/6), thanks [Arnold Krille](https://github.com/kampfschlaefer)). - -## [0.2.0] - 2013-10-28 -### Added -- Dict auth support and mailbox_list_index ([issue #3](https://github.com/zuazo/dovecot-cookbook/pull/3), thanks [Johan Svensson](https://github.com/loxley)). - -## [0.1.1] - 2013-07-19 -### Fixed -- Typo in auth-passwdfile.conf template ([issue #2](https://github.com/zuazo/dovecot-cookbook/pull/2), thanks [Trond Arve Nordheim](https://github.com/tanordheim)). -- Fix typo in README.md ([issue #1](https://github.com/zuazo/dovecot-cookbook/pull/1), thanks [Andreas Lappe](https://github.com/alappe)). - -## 0.1.0 - 2013-06-08 -- Initial release of `dovecot`. - -[Unreleased]: https://github.com/zuazo/dovecot-cookbook/compare/3.2.1...HEAD -[3.2.1]: https://github.com/zuazo/dovecot-cookbook/compare/3.2.0...3.2.1 -[3.2.0]: https://github.com/zuazo/dovecot-cookbook/compare/3.1.0...3.2.0 -[3.1.0]: https://github.com/zuazo/dovecot-cookbook/compare/3.0.0...3.1.0 -[3.0.0]: https://github.com/zuazo/dovecot-cookbook/compare/2.5.0...3.0.0 -[2.5.0]: https://github.com/zuazo/dovecot-cookbook/compare/2.4.0...2.5.0 -[2.4.0]: https://github.com/zuazo/dovecot-cookbook/compare/2.3.0...2.4.0 -[2.3.0]: https://github.com/zuazo/dovecot-cookbook/compare/2.2.2...2.3.0 -[2.2.2]: https://github.com/zuazo/dovecot-cookbook/compare/2.2.1...2.2.2 -[2.2.1]: https://github.com/zuazo/dovecot-cookbook/compare/2.2.0...2.2.1 -[2.2.0]: https://github.com/zuazo/dovecot-cookbook/compare/2.1.0...2.2.0 -[2.1.0]: https://github.com/zuazo/dovecot-cookbook/compare/2.0.0...2.1.0 -[2.0.0]: https://github.com/zuazo/dovecot-cookbook/compare/1.0.1...2.0.0 -[1.0.1]: https://github.com/zuazo/dovecot-cookbook/compare/1.0.0...1.0.1 -[1.0.0]: https://github.com/zuazo/dovecot-cookbook/compare/0.3.1...1.0.0 -[0.3.1]: https://github.com/zuazo/dovecot-cookbook/compare/0.3.0...0.3.1 -[0.3.0]: https://github.com/zuazo/dovecot-cookbook/compare/0.2.0...0.3.0 -[0.2.0]: https://github.com/zuazo/dovecot-cookbook/compare/0.1.1...0.2.0 -[0.1.1]: https://github.com/zuazo/dovecot-cookbook/compare/0.1.0...0.1.1 diff --git a/lc-gdn-chef/cookbooks/dovecot/CONTRIBUTING.md b/lc-gdn-chef/cookbooks/dovecot/CONTRIBUTING.md deleted file mode 100644 index 8ecaf77b6..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/CONTRIBUTING.md +++ /dev/null @@ -1,11 +0,0 @@ -Contributing -============ - -1. [Fork the repository on Github](https://help.github.com/articles/fork-a-repo). -2. Create a named feature branch (`$ git checkout -b my-new-feature`). -3. Write tests for your change (if applicable). -4. Write your change. -5. [Run the tests](https://github.com/zuazo/dovecot-cookbook/blob/master/TESTING.md), ensuring they all pass (`$ bundle exec rake`). -6. Commit your change (`$ git commit -am 'Add some feature'`). -7. Push to the branch (`$ git push origin my-new-feature`). -8. [Submit a Pull Request using Github](https://help.github.com/articles/creating-a-pull-request). diff --git a/lc-gdn-chef/cookbooks/dovecot/Gemfile b/lc-gdn-chef/cookbooks/dovecot/Gemfile deleted file mode 100644 index 19c8f52db..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/Gemfile +++ /dev/null @@ -1,64 +0,0 @@ -# encoding: UTF-8 -# -*- mode: ruby -*- -# vi: set ft=ruby : - -# More info at http://bundler.io/gemfile.html -# -# Many of the gem versions installed here are based on the versions installed -# by ChefDK. - -source 'https://rubygems.org' - -chef_version = ENV.key?('CHEF_VERSION') ? ENV['CHEF_VERSION'] : nil - -group :doc do - gem 'yard', '~> 0.9.5' -end - -group :test do - gem 'rake' - gem 'berkshelf', '~> 5.1' -end - -group :style do - gem 'foodcritic', '~> 6.3.0' - gem 'rubocop', '~> 0.39.0' -end - -group :unit do - gem 'chef', chef_version unless chef_version.nil? - gem 'chefspec', '~> 6.0' - gem 'simplecov', '~> 0.13.0' - gem 'should_not', '~> 1.1' -end - -group :integration do - gem 'test-kitchen', '~> 1.13' -end - -group :integration_docker do - gem 'kitchen-docker', '~> 2.1' -end - -group :integration_vagrant do - gem 'vagrant-wrapper', '~> 2.0' - gem 'kitchen-vagrant', '~> 1.0' -end - -group :integration_cloud do - gem 'kitchen-ec2', '~> 1.2' - gem 'kitchen-digitalocean', '~> 0.9.5' -end - -group :guard do - gem 'guard', '~> 2.14' - gem 'guard-foodcritic', '~> 2.1' - gem 'guard-rubocop', '~> 1.1' - gem 'guard-rspec', '~> 4.3' - # Temporary disabled: Error is: cannot load such file -- guard/kitchen - # gem 'guard-kitchen', '~> 0.0' -end - -group :travis do - gem 'coveralls', '~> 0.7', require: false -end diff --git a/lc-gdn-chef/cookbooks/dovecot/Guardfile b/lc-gdn-chef/cookbooks/dovecot/Guardfile deleted file mode 100644 index f19a2dc4e..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/Guardfile +++ /dev/null @@ -1,89 +0,0 @@ -# encoding: UTF-8 -# -*- mode: ruby -*- -# vi: set ft=ruby : - -# More info at https://github.com/guard/guard#readme - -# Style Tests -# =========== -# - Foodcritic -# - RuboCop - -group :style, - halt_on_fail: true do - guard :foodcritic, - cli: '--exclude test/unit', - cookbook_paths: '.', - all_on_start: false do - watch(%r{attributes/.+\.rb$}) - watch(%r{definitions/.+\.rb$}) - watch(%r{libraries/.+\.rb$}) - watch(%r{providers/.+\.rb$}) - watch(%r{recipes/.+\.rb$}) - watch(%r{resources/.+\.rb$}) - watch(%r{templates/.+\.erb$}) - watch('metadata.rb') - end - - guard :rubocop, - all_on_start: false do - watch(/.+\.rb$/) - watch('Gemfile') - watch('Rakefile') - watch('Capfile') - watch('Guardfile') - watch('Podfile') - watch('Thorfile') - watch('Vagrantfile') - watch('Berksfile') - watch('Cheffile') - watch('Vagabondfile') - end -end # group style - -# Unit Tests -# ========== -# - test/unit/libraries/${library}_spec.rb: Unit tests for libraries. -# - test/unit/recipes/${recipe}_spec.rb: ChefSpec tests for recipes. -# - test/unit/resources/${resource}_spec.rb: ChefSpec tests for resources. - -group :unit do - guard :rspec, - cmd: 'bundle exec rake unit', - all_on_start: false do - watch(%r{^libraries/(.+)\.rb$}) do |m| - "test/unit/libraries/#{m[1]}_spec.rb" - end - watch(%r{^recipes/(.+)\.rb$}) { |m| "test/unit/recipes/#{m[1]}_spec.rb" } - watch(%r{^(?:providers|resources)/(.+)\.rb$}) do |m| - "test/unit/resources/#{m[1]}_spec.rb" - end - watch(%r{^test/unit/.+_spec\.rb$}) - watch('test/unit/spec_helper.rb') { 'spec' } - end -end # group unit - -# Integration Tests -# ================= -# - test-kitchen -# -# Temporary disabled. See the Gemfile. - -# group :integration do -# guard 'kitchen', -# all_on_start: false do -# watch(%r{attributes/.+\.rb$}) -# watch(%r{definitions/.+\.rb$}) -# watch(%r{libraries/.+\.rb$}) -# watch(%r{providers/.+\.rb$}) -# watch(%r{recipes/.+\.rb$}) -# watch(%r{resources/.+\.rb$}) -# watch(%r{files/.+}) -# watch(%r{templates/.+\.erb$}) -# watch('metadata.rb') -# watch(%r{test/.+$}) -# watch('Berksfile') -# end -# end # group integration - -scope groups: [:style, :unit] diff --git a/lc-gdn-chef/cookbooks/dovecot/LICENSE b/lc-gdn-chef/cookbooks/dovecot/LICENSE deleted file mode 100644 index f30925a0a..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/LICENSE +++ /dev/null @@ -1,190 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -Copyright 2013-2015 Xabier de Zuazo - -Licensed 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. diff --git a/lc-gdn-chef/cookbooks/dovecot/README.md b/lc-gdn-chef/cookbooks/dovecot/README.md deleted file mode 100644 index 6beb1a612..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/README.md +++ /dev/null @@ -1,1144 +0,0 @@ -Dovecot Cookbook -================ -[![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg?style=flat)](http://www.rubydoc.info/github/zuazo/dovecot-cookbook) -[![GitHub](http://img.shields.io/badge/github-zuazo/dovecot--cookbook-blue.svg?style=flat)](https://github.com/zuazo/dovecot-cookbook) -[![License](https://img.shields.io/github/license/zuazo/dovecot-cookbook.svg?style=flat)](#license-and-author) - -[![Cookbook Version](https://img.shields.io/cookbook/v/dovecot.svg?style=flat)](https://supermarket.chef.io/cookbooks/dovecot) -[![Dependency Status](http://img.shields.io/gemnasium/zuazo/dovecot-cookbook.svg?style=flat)](https://gemnasium.com/zuazo/dovecot-cookbook) -[![Code Climate](http://img.shields.io/codeclimate/github/zuazo/dovecot-cookbook.svg?style=flat)](https://codeclimate.com/github/zuazo/dovecot-cookbook) -[![Build Status](http://img.shields.io/travis/zuazo/dovecot-cookbook/3.2.1.svg?style=flat)](https://travis-ci.org/zuazo/dovecot-cookbook) -[![Inline docs](http://inch-ci.org/github/zuazo/dovecot-cookbook.svg?branch=master&style=flat)](http://inch-ci.org/github/zuazo/dovecot-cookbook) - -[Chef](https://www.chef.io/) cookbook to install and configure [Dovecot](http://www.dovecot.org/), open source IMAP and POP3 email server. - -Table of Contents -================= - -* [Description](#description) -* [Requirements](#requirements) - * [Supported Platforms](#supported-platforms) - * [Required Cookbooks](#required-cookbooks) - * [Required Applications](#required-applications) -* [Attributes](#attributes) - * [Main Configuration Attributes](#main-configuration-attributes) - * [Authentication Processes Attributes](#authentication-processes-attributes) - * [Director-specific Attributes](#director-specific-attributes) - * [Log Destination Attributes](#log-destination-attributes) - * [Mailbox Locations and Namespaces Attributes](#mailbox-locations-and-namespaces-attributes) - * [Master Configuration File Attributes](#master-configuration-file-attributes) - * [SSL Attributes](#ssl-attributes) - * [LDA Specific Attributes](#lda-specific-attributes) - * [Replication Specific Attributes](#replication-specific-attributes) - * [LMTP Specific Attributes](#lmtp-specific-attributes) - * [Berkeley DB DB_CONFIG Attributes](#berkeley-db-db_config-attributes) - * [Dictionary Quota SQL Attributes](#dictionary-quota-sql-attributes) - * [LDAP Authentication Attributes](#ldap-authentication-attributes) - * [SQL Authentication Attributes](#sql-authentication-attributes) - * [Distribution Package Names Attributes](#distribution-package-names-attributes) - * [Distribution Service Configuration](#distribution-service-configuration) -* [Recipes](#recipes) - * [dovecot::default](#dovecotdefault) - * [dovecot::user](#dovecotuser) - * [dovecot::conf_files](#dovecotconf_files) - * [dovecot::ohai_plugin](#dovecotohai_plugin) - * [dovecot::from_package](#dovecotfrom_package) - * [dovecot::service](#dovecotservice) - * [dovecot::create_pwfile](#dovecotcreate_pwfile) -* [Ohai Plugin](#ohai-plugin) -* [Usage Examples](#usage-examples) - * [Including in a Cookbook Recipe](#including-in-a-cookbook-recipe) - * [Including in the Run List](#including-in-the-run-list) - * [Authentication Database Examples](#authentication-database-examples) - * [Dictionary Quota SQL Example](#dictionary-quota-sql-example) - * [Namespaces Example](#namespaces-example) - * [Plugins Examples](#plugins-examples) - * [Mail Log Plugin Example](#mail-log-plugin-example) - * [Sieve Plugin Example](#sieve-plugin-example) - * [Protocols Examples](#protocols-examples) - * [Service Examples](#service-examples) - * [Director Service Example](#director-service-example) - * [Imap-login Service Example](#imap-login-service-example) - * [Doveadm Service Example](#doveadm-service-example) - * [Quota-status Service Example](#quota-status-service-example) - * [Quota-warning Service Example](#quota-warning-service-example) - * [LDAP Example](#ldap-example) - * [Password File Example](#password-file-example) - * [A Complete Example](#a-complete-example) -* [Testing](#testing) -* [Contributing](#contributing) -* [TODO](#todo) -* [License and Author](#license-and-author) - -Requirements -============ - -## Supported Platforms - -This cookbook has been tested on the following platforms: - -* Amazon -* CentOS `>= 6.0` -* Debian `>= 7.0` -* Fedora `>= 18.0` -* OpenSUSE -* Oracle Linux `>= 6.0` -* Scientific Linux `>= 6.0` -* SUSE -* Ubuntu `>= 12.04` - -Let me know if you use it successfully on any other platform. - -## Required Cookbooks - -* [ohai](https://supermarket.chef.io/cookbooks/ohai) - -## Required Applications - -* Chef `12` or higher. -* Ruby `2.2` or higher. -* **Dovecot `>= 2`**: requires this version of dovecot to be available by the distribution's package manager. - -Attributes -========== - -To see a more complete description of the attributes, go to the [Dovecot wiki2 configuration section](http://wiki2.dovecot.org/#Dovecot_configuration) or read the comments in the templates and generated configuration files. - -| Attribute | Default | Description | -|:--------------------------------------------------|:---------------------------|:-------------------------------| -| `node['dovecot']['install_from']` | `'package'` | Determines how Dovecot is installed from. Only `'package'` is supported for now. -| `node['dovecot']['user']` | `'dovecot'` | Dovecot system user. Should no be changed. -| `node['dovecot']['group']` | `'dovecot'` | Dovecot system group. Should no be changed. -| `node['dovecot']['user_homedir']` | *calculated* | Dovecot system user home directory. -| `node['dovecot']['lib_path']` | *calculated* | Dovecot library path. Should no be changed. -| `node['dovecot']['conf_path']` | `'/etc/dovecot'` | Dovecot configuration files path. Should no be changed. -| `node['dovecot']['conf_files_user']` | `'root'` | System user owner of configuration files. -| `node['dovecot']['conf_files_group']` | `node['dovecot']['group']` | System group owner of configuration files. -| `node['dovecot']['conf_files_mode']` | `00644` | Configuration files system file mode bits. -| `node['dovecot']['sensitive_files']` | `['*.conf.ext']` | An array of dovecot sensitive configuration files. Each array item can be a glob expression or a fixed file name. These file names should be relative to `node['dovecot']['conf_path']` directory. Example: `['dovecot-sql.conf.ext', '*-auth.conf.ext', 'conf.d/auth-supersecret.conf.ext']`. -| `node['dovecot']['sensitive_files_mode']` | `00640` | Configuration files system file mode bits for sensitve files. -| `node['dovecot']['conf_files']['core']` | *calculated* | Dovecot core configuration files list. -| `node['dovecot']['conf_files']['imap']` | `['conf.d/20-imap.conf']` | Dovecot IMAP configuration files list. -| `node['dovecot']['conf_files']['pop3']` | `['conf.d/20-pop3.conf']` | Dovecot POP3 configuration files list. -| `node['dovecot']['conf_files']['lmtp']` | `['conf.d/20-lmtp.conf']` | Dovecot LMTP configuration files list. -| `node['dovecot']['conf_files']['sieve']` | *calculated* | Dovecot Sieve configuration files list. -| `node['dovecot']['conf_files']['ldap']` | *calculated* | Dovecot LDAP configuration files list. -| `node['dovecot']['auth']` | `{}` | Dovecot Authentication Databases as a hash of hashes ([see the examples below](#authentication-database-examples)). Supported authdbs: checkpassword, deny, ldap, master, passwdfile, sql, system and vpopmail. -| `node['dovecot']['namespaces']` | `[]` | Dovecot Namespaces as an array of hashes ([see the example below](#namespaces-example)). -| `node['dovecot']['plugins']` | *calculated* | Dovecot Plugins configuration as a hash of hashes ([see the examples below](#plugins-examples)). Supported plugins: mail_log, acl and quota. -| `node['dovecot']['protocols']` | `{}` | Dovecot Protocols configuration as a hash of hashes ([see the example below](#protocols-example)). Supported protocols: lda, imap, lmtp, sieve and pop3. -| `node['dovecot']['services']` | `{}` | Dovecot Services configuration as a hash of hashes ([see the examples below](#service-examples)). Supported services: anvil, director, imap-login, pop3-login, lmtp, imap, pop3, auth, auth-worker, dict, tcpwrap, managesieve-login managesieve, quota-status, quota-warning and doveadm. -| `node['dovecot']['conf']['mail_plugins']` | `[]` | Dovecot default enabled mail_plugins. -| `node['dovecot']['ohai_plugin']['build-options']` | `true` | Whether to enable reading build options inside ohai plugin. Can be disabled to be lighter. -| `node['dovecot']['databag_name']` | `dovecot` | The databag to use. -| `node['dovecot']['databag_users_item']` | `users` | The databag item to use for User's database (Passwords). -| `node['dovecot']['conf']['password_file']` | `#{node['dovecot']['conf_path']}/password` | The Password file location - -## Main Configuration Attributes - -* Configuration file: `dovecot.conf`. - -| Attribute | Default | Description | -|:----------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['listen']` | *nil* | A comma separated list of IPs or hosts where to listen in for connections. -| `node['dovecot']['conf']['base_dir']` | *nil* | Base directory where to store runtime data. -| `node['dovecot']['conf']['instance_name']` | *nil* | Name of this instance. Used to prefix all Dovecot processes in ps output. -| `node['dovecot']['conf']['login_greeting']` | *nil* | Greeting message for clients. -| `node['dovecot']['conf']['login_trusted_networks']` | *nil* | Space separated list of trusted network ranges. -| `node['dovecot']['conf']['login_access_sockets']` | *nil* | Space separated list of login access check sockets. -| `node['dovecot']['conf']['auth_proxy_self']` | *nil* | With proxy_maybe=yes if proxy destination matches any of these IPs, don't do proxying. -| `node['dovecot']['conf']['verbose_proctitle']` | *nil* | Show more verbose process titles (in ps). -| `node['dovecot']['conf']['shutdown_clients']` | *nil* | Should all processes be killed when Dovecot master process shuts down. -| `node['dovecot']['conf']['doveadm_worker_count']` | *nil* | If non-zero, run mail commands via this many connections to doveadm server. -| `node['dovecot']['conf']['doveadm_socket_path']` | *nil* | UNIX socket or host:port used for connecting to doveadm server. -| `node['dovecot']['conf']['import_environment']` | *nil* | Space separated list of environment variables that are preserved on Dovecot startup and his childs. -| `node['dovecot']['conf']['dict']` | *nil* | Dictionary server settings as a hash. - -## Authentication Processes Attributes - -* Configuration file: `conf.d/10-auth.conf`. - -| Attribute | Default | Description | -|:----------------------------------------------------------|:----------|:-------------------------------| -| `node['dovecot']['conf']['disable_plaintext_auth']` | *nil* | Disable LOGIN command and all other plaintext authentications unless SSL/TLS is used. -| `node['dovecot']['conf']['auth_cache_size']` | *nil* | Authentication cache size (e.g. 10M). 0 means it's disabled. -| `node['dovecot']['conf']['auth_cache_ttl']` | *nil* | Time to live for cached data. -| `node['dovecot']['conf']['auth_cache_negative_ttl']` | *nil* | TTL for negative hits (user not found, password mismatch). -| `node['dovecot']['conf']['auth_realms']` | *nil* | Space separated list (or array) of realms for SASL authentication mechanisms that need them. -| `node['dovecot']['conf']['auth_default_realm']` | *nil* | Default realm/domain to use if none was specified. -| `node['dovecot']['conf']['auth_username_chars']` | *nil* | List of allowed characters in username. -| `node['dovecot']['conf']['auth_username_translation']` | *nil* | Username character translations before it's looked up from databases. -| `node['dovecot']['conf']['auth_username_format']` | *nil* | Username formatting before it's looked up from databases. -| `node['dovecot']['conf']['auth_master_user_separator']` | *nil* | If you want to allow master users to log in by specifying the master username within the normal username string, you can specify the separator character here (format: ``). -| `node['dovecot']['conf']['auth_anonymous_username']` | *nil* | Username to use for users logging in with ANONYMOUS SASL mechanism. -| `node['dovecot']['conf']['auth_worker_max_count']` | *nil* | Maximum number of dovecot-auth worker processes. -| `node['dovecot']['conf']['auth_gssapi_hostname']` | *nil* | Host name to use in GSSAPI principal names. -| `node['dovecot']['conf']['auth_krb5_keytab']` | *nil* | Kerberos keytab to use for the GSSAPI mechanism. -| `node['dovecot']['conf']['auth_use_winbind']` | *nil* | Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and ntlm_auth helper. -| `node['dovecot']['conf']['auth_winbind_helper_path']` | *nil* | Path for Samba's ntlm_auth helper binary. -| `node['dovecot']['conf']['auth_failure_delay']` | *nil* | Time to delay before replying to failed authentications. -| `node['dovecot']['conf']['auth_ssl_require_client_cert']` | *nil* | Take the username from client's SSL certificate, using X509_NAME_get_text_by_NID() which returns the subject's DN's CommonName. -| `node['dovecot']['conf']['auth_mechanisms']` | `'plain'` | Space separated list of wanted authentication mechanisms: plain, login, digest-md5, cram-md5, ntlm, rpa, apop, anonymous, gssapi, otp, skey, gss-spnego. - -## Director-specific Attributes - -* Configuration file: `conf.d/10-director.conf`. - -| Attribute | Default | Description | -|:----------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['director_servers']` | *nil* | List of IPs or hostnames to all director servers, including ourself (as a string or as an array). -| `node['dovecot']['conf']['director_mail_servers']` | *nil* | List of IPs or hostnames to all backend mail servers. -| `node['dovecot']['conf']['director_user_expire']` | *nil* | How long to redirect users to a specific server after it no longer has any connections. -| `node['dovecot']['conf']['director_doveadm_port']` | *nil* | TCP/IP port that accepts doveadm connections (instead of director connections). -| `node['dovecot']['conf']['director_username_hash']` | *nil* | How the username is translated before being hashed. - -## Log Destination Attributes - -* Configuration file: `conf.d/10-logging.conf`. - -| Attribute | Default | Description | -|:-------------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['log_path']` | *nil* | Log file to use for error messages. "syslog" logs to syslog, /dev/stderr logs to stderr. -| `node['dovecot']['conf']['info_log_path']` | *nil* | Log file to use for informational messages. Defaults to log_path. -| `node['dovecot']['conf']['debug_log_path']` | *nil* | Log file to use for debug messages. Defaults to info_log_path. -| `node['dovecot']['conf']['syslog_facility']` | *nil* | Syslog facility to use if you're logging to syslog. -| `node['dovecot']['conf']['auth_verbose']` | *nil* | Log unsuccessful authentication attempts and the reasons why they failed. -| `node['dovecot']['conf']['auth_verbose_passwords']` | *nil* | In case of password mismatches, log the attempted password. -| `node['dovecot']['conf']['auth_debug']` | *nil* | Even more verbose logging for debugging purposes. -| `node['dovecot']['conf']['auth_debug_passwords']` | *nil* | In case of password mismatches, log the passwords and used scheme so the problem can be debugged. -| `node['dovecot']['conf']['mail_debug']` | *nil* | Enable mail process debugging. -| `node['dovecot']['conf']['verbose_ssl']` | *nil* | Show protocol level SSL errors. -| `node['dovecot']['conf']['log_timestamp']` | *nil* | Prefix for each line written to log file. -| `node['dovecot']['conf']['login_log_format_elements']` | *nil* | Space-separated list (or array) of elements we want to log. -| `node['dovecot']['conf']['login_log_format']` | *nil* | Login log format. -| `node['dovecot']['conf']['mail_log_prefix']` | *nil* | Log prefix for mail processes. -| `node['dovecot']['conf']['deliver_log_format']` | *nil* | Format to use for logging mail deliveries. - -## Mailbox Locations and Namespaces Attributes - -* Configuration file: `conf.d/10-mail.conf`. - -| Attribute | Default | Description | -|:-----------------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['mail_location']` | *nil* | Location for user's mailboxes. -| `node['dovecot']['conf']['mail_shared_explicit_inbox']` | *nil* | Should shared INBOX be visible as "shared/user" or "shared/user/INBOX"?. -| `node['dovecot']['conf']['mail_uid']` | *nil* | System user used to access mails. -| `node['dovecot']['conf']['mail_gid']` | *nil* | System group used to access mails. -| `node['dovecot']['conf']['mail_privileged_group']` | *nil* | Group to enable temporarily for privileged operations. -| `node['dovecot']['conf']['mail_access_groups']` | *nil* | Grant access to these supplementary groups for mail processes. -| `node['dovecot']['conf']['mail_full_filesystem_access']` | *nil* | Allow full filesystem access to clients. -| `node['dovecot']['conf']['mail_attribute_dict']` | *nil* | Dictionary for key=value mailbox attributes. -| `node['dovecot']['conf']['mail_server_comment']` | *nil* | A comment or note that is associated with the server. -| `node['dovecot']['conf']['mail_server_admin']` | *nil* | Indicates a method for contacting the server administrator. This value MUST be a URI. -| `node['dovecot']['conf']['mmap_disable']` | *nil* | Don't use mmap() at all. -| `node['dovecot']['conf']['dotlock_use_excl']` | *nil* | Rely on O_EXCL to work when creating dotlock files. -| `node['dovecot']['conf']['mail_fsync']` | *nil* | When to use fsync() or fdatasync() calls: optimized, always or never. -| `node['dovecot']['conf']['mail_nfs_storage']` | *nil* | Mail storage exists in NFS. -| `node['dovecot']['conf']['mail_nfs_index']` | *nil* | Mail index files also exist in NFS. -| `node['dovecot']['conf']['lock_method']` | *nil* | Locking method for index files: fcntl, flock or dotlock. -| `node['dovecot']['conf']['mail_temp_dir']` | *nil* | Directory in which LDA/LMTP temporarily stores incoming mails >128 kB. -| `node['dovecot']['conf']['first_valid_uid']` | *nil* | Valid UID range for users, defaults to 500 and above. -| `node['dovecot']['conf']['last_valid_uid']` | *nil* | Valid UID range for users, defaults to 500 and above. -| `node['dovecot']['conf']['first_valid_gid']` | *nil* | Valid GID range for users, defaults to non-root/wheel. -| `node['dovecot']['conf']['last_valid_gid']` | *nil* | Valid GID range for users, defaults to non-root/wheel. -| `node['dovecot']['conf']['mail_max_keyword_length']` | *nil* | Maximum allowed length for mail keyword name. -| `node['dovecot']['conf']['valid_chroot_dirs']` | *nil* | ':' separated list of directories under which chrooting is allowed for mail processes. -| `node['dovecot']['conf']['mail_chroot']` | *nil* | Default chroot directory for mail processes. -| `node['dovecot']['conf']['auth_socket_path']` | *nil* | UNIX socket path to master authentication server to find users. -| `node['dovecot']['conf']['mail_plugin_dir']` | *nil* | Directory where to look up mail plugins. -| `node['dovecot']['conf']['mail_cache_min_mail_count']` | *nil* | The minimum number of mails in a mailbox before updates are done to cache file. -| `node['dovecot']['conf']['mailbox_idle_check_interval']` | *nil* | When IDLE command is running, mailbox is checked once in a while to see if there are any new mails or other changes. -| `node['dovecot']['conf']['mail_save_crlf']` | *nil* | Save mails with CR+LF instead of plain LF. -| `node['dovecot']['conf']['mail_prefetch_count']` | *nil* | Max number of mails to keep open and prefetch to memory. -| `node['dovecot']['conf']['mail_temp_scan_interval']` | *nil* | How often to scan for stale temporary files and delete them (0 = never). -| `node['dovecot']['conf']['maildir_stat_dirs']` | *nil* | By default LIST command returns all entries in maildir beginning with a dot. -| `node['dovecot']['conf']['maildir_copy_with_hardlinks']` | *nil* | When copying a message, do it with hard links whenever possible. -| `node['dovecot']['conf']['maildir_very_dirty_syncs']` | *nil* | Assume Dovecot is the only MUA accessing Maildir. -| `node['dovecot']['conf']['maildir_broken_filename_sizes']` | *nil* | If enabled, Dovecot doesn't use the `S=` in the Maildir filenames for getting the mail's physical size, except when recalculating Maildir++ quota. -| `node['dovecot']['conf']['maildir_empty_new']` | *nil* | Always move mails from new/ directory to cur/, even when the \Recent flags aren't being reset. -| `node['dovecot']['conf']['mbox_read_locks']` | *nil* | Which read locking methods to use for locking mbox: dotlock, dotlock_try, fcntl, flock or lockf. -| `node['dovecot']['conf']['mbox_write_locks']` | *nil* | Which write locking methods to use for locking mbox: dotlock, dotlock_try, fcntl, flock or lockf. -| `node['dovecot']['conf']['mbox_lock_timeout']` | *nil* | Maximum time to wait for lock (all of them) before aborting. -| `node['dovecot']['conf']['mbox_dotlock_change_timeout']` | *nil* | If dotlock exists but the mailbox isn't modified in any way, override the lock file after this much time. -| `node['dovecot']['conf']['mbox_dirty_syncs']` | *nil* | When mbox changes unexpectedly simply read the new mails but still safely fallbacks to re-reading the whole mbox file whenever something in mbox isn't how it's expected to be. -| `node['dovecot']['conf']['mbox_very_dirty_syncs']` | *nil* | Like mbox_dirty_syncs, but don't do full syncs even with SELECT, EXAMINE, EXPUNGE or CHECK commands. -| `node['dovecot']['conf']['mbox_lazy_writes']` | *nil* | Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK commands and when closing the mailbox). -| `node['dovecot']['conf']['mbox_min_index_size']` | *nil* | If mbox size is smaller than this (e.g. 100k), don't write index files. -| `node['dovecot']['conf']['mbox_md5']` | *nil* | Mail header selection algorithm to use for MD5 POP3 UIDLs when pop3_uidl_format=%m. -| `node['dovecot']['conf']['mdbox_rotate_size']` | *nil* | Maximum dbox file size until it's rotated. -| `node['dovecot']['conf']['mdbox_rotate_interval']` | *nil* | Maximum dbox file age until it's rotated. -| `node['dovecot']['conf']['mdbox_preallocate_space']` | *nil* | When creating new mdbox files, immediately preallocate their size to mdbox_rotate_size. -| `node['dovecot']['conf']['mail_attachment_dir']` | *nil* | Directory root where to store mail attachments. Disabled, if empty. -| `node['dovecot']['conf']['mail_attachment_min_size']` | *nil* | Attachments smaller than this aren't saved externally. -| `node['dovecot']['conf']['mail_attachment_fs']` | *nil* | Filesystem backend to use for saving attachments: posix, sis posix or sis-queue posix. -| `node['dovecot']['conf']['mail_attachment_hash']` | *nil* | Hash format to use in attachment filenames. - -## Master Configuration File Attributes - -* Configuration file: `conf.d/10-master.conf`. - -| Attribute | Default | Description | -|:---------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['default_process_limit']` | *nil* | Default process limit. -| `node['dovecot']['conf']['default_client_limit']` | *nil* | Default client limit. -| `node['dovecot']['conf']['default_vsz_limit']` | *nil* | Default VSZ (virtual memory size) limit for service processes. -| `node['dovecot']['conf']['default_login_user']` | *nil* | Login user is internally used by login processes. -| `node['dovecot']['conf']['default_internal_user']` | *nil* | Internal user is used by unprivileged processes. - -## SSL Attributes - -* Configuration file: `conf.d/10-ssl.conf`. - -| Attribute | Default | Description | -|:-------------------------------------------------------|:-------------|:-------------------------------| -| `node['dovecot']['conf']['ssl']` | *calculated* | SSL/TLS support: `true` or `false`. -| `node['dovecot']['conf']['ssl_cert']` | *calculated* | PEM encoded X.509 SSL/TLS certificate. -| `node['dovecot']['conf']['ssl_key']` | *calculated* | PEM encoded X.509 SSL/TLS private key. -| `node['dovecot']['conf']['ssl_key_password']` | *nil* | If key file is password protected, give the password here. -| `node['dovecot']['conf']['ssl_ca']` | *nil* | PEM encoded trusted certificate authority. -| `node['dovecot']['conf']['ssl_require_crl']` | *nil* | Require that CRL check succeeds for client certificates. -| `node['dovecot']['conf']['ssl_client_ca_dir']` | *nil* | Directory for trusted SSL CA certificates. These are used only when Dovecot needs to act as an SSL client. -| `node['dovecot']['conf']['ssl_client_ca_file']` | *nil* | File for trusted SSL CA certificates. These are used only when Dovecot needs to act as an SSL client. -| `node['dovecot']['conf']['ssl_verify_client_cert']` | *nil* | Request client to send a certificate. -| `node['dovecot']['conf']['ssl_cert_username_field']` | *nil* | Which field from certificate to use for username. -| `node['dovecot']['conf']['ssl_parameters_regenerate']` | *nil* | How often to regenerate the SSL parameters file. -| `node['dovecot']['conf']['ssl_dh_parameters_length']` | *nil* | DH parameters length to use. -| `node['dovecot']['conf']['ssl_protocols']` | *nil* | SSL protocols to use. -| `node['dovecot']['conf']['ssl_cipher_list']` | *nil* | SSL ciphers to use. -| `node['dovecot']['conf']['ssl_prefer_server_ciphers']` | *nil* | Prefer the server's order of ciphers over client's. -| `node['dovecot']['conf']['ssl_crypto_device']` | *nil* | SSL crypto device to use, for valid values run `$ openssl engine`. -| `node['dovecot']['conf']['ssl_options']` | *nil* | SSL extra options. Currently supported options are: `'no_compression'`. - -## LDA Specific Attributes - -Also used by LMTP. - -* Configuration files: `conf.d/15-lda.conf`. - -| Attribute | Default | Description | -|:-----------------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['postmaster_address']` | *nil* | Address to use when sending rejection mails. -| `node['dovecot']['conf']['hostname']` | *nil* | Hostname to use in various parts of sent mails, eg. in Message-Id. -| `node['dovecot']['conf']['quota_full_tempfail']` | *nil* | If user is over quota, return with temporary failure instead of bouncing the mail. -| `node['dovecot']['conf']['sendmail_path']` | *nil* | Binary to use for sending mails. -| `node['dovecot']['conf']['submission_host']` | *nil* | If non-empty, send mails via this SMTP host[:port] instead of sendmail. -| `node['dovecot']['conf']['rejection_subject']` | *nil* | Subject: header to use for rejection mails. -| `node['dovecot']['conf']['rejection_reason']` | *nil* | Human readable error message for rejection mails. -| `node['dovecot']['conf']['recipient_delimiter']` | *nil* | Delimiter character between local-part and detail in email address. -| `node['dovecot']['conf']['lda_original_recipient_header']` | *nil* | Header where the original recipient address (SMTP's RCPT TO: address) is taken from if not available elsewhere. -| `node['dovecot']['conf']['lda_mailbox_autocreate']` | *nil* | Should saving a mail to a nonexistent mailbox automatically create it? -| `node['dovecot']['conf']['lda_mailbox_autosubscribe']` | *nil* | Should automatically created mailboxes be also automatically subscribed? - -## Replication Specific Attributes - -Also used by Replication/sync of dovecot. - -* Configuration files: `conf.d/15-replication.conf`. - -| Attribute | Default | Description | -|:-----------------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['doveadm_port']` | *nil* | Used to set a default port for the doveadm replication commands. -| `node['dovecot']['conf']['doveadm_password']` | *nil* | Needed to set an 'secret' for the replication communication between to servers. - - -## LMTP Specific Attributes - -* Configuration file: `conf.d/20-lmtp.conf` - -| Attribute | Default | Description | -|:---------------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['lmtp_proxy']` | *nil* | Support proxying to other LMTP/SMTP servers by performing passdb lookups. -| `node['dovecot']['conf']['lmtp_save_to_detail_mailbox']` | *nil* | When recipient address includes the detail (e.g. user+detail), try to save the mail to the detail mailbox. -| `node['dovecot']['conf']['lmtp_rcpt_check_quota']` | *nil* | Verify quota before replying to RCPT TO. This adds a small overhead. -| `node['dovecot']['conf']['lmtp_hdr_delivery_address']` | *nil* | Which recipient address to use for Delivered-To: header and Received: header. -## Berkeley DB DB_CONFIG Attributes - -* Configuration file: `dovecot-db.conf.ext`. - -| Attribute | Default | Description | -|:--------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['db']` | *nil* | DB_CONFIG for Berkeley DB as a hash. - -## Dictionary Quota SQL Attributes - -* Configuration files: `dovecot-dict-sql.conf.ext`. - -| Attribute | Default | Description | -|:-------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['dict_sql']['connect']` | *nil* | Dict sql connect configuration as a string or an array. -| `node['dovecot']['conf']['dict_sql']['maps']` | *nil* | Dict sql database tables maps ([see the example below](#dictionary-quota-sql-example)). - -## LDAP Authentication Attributes - -* Configuration files: `dovecot-ldap.conf.ext`. - -| Attribute | Default | Description | -|:---------------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['ldap']['hosts']` | *nil* | Space separated list or array of LDAP hosts to use. -| `node['dovecot']['conf']['ldap']['uris']` | *nil* | LDAP URIs to use. -| `node['dovecot']['conf']['ldap']['dn']` | *nil* | Distinguished Name, the username used to login to the LDAP server. -| `node['dovecot']['conf']['ldap']['dnpass']` | *nil* | Password for LDAP server, if dn is specified. -| `node['dovecot']['conf']['ldap']['sasl_bind']` | *nil* | Use SASL binding instead of the simple binding. -| `node['dovecot']['conf']['ldap']['sasl_mech']` | *nil* | SASL mechanism name to use. -| `node['dovecot']['conf']['ldap']['sasl_realm']` | *nil* | SASL realm to use. -| `node['dovecot']['conf']['ldap']['sasl_authz_id']` | *nil* | SASL authorization ID, ie. the dnpass is for this "master user", but the dn is still the logged in user. -| `node['dovecot']['conf']['ldap']['tls']` | *nil* | Use TLS to connect to the LDAP server. -| `node['dovecot']['conf']['ldap']['tls_ca_cert_file']` | *nil* | TLS options, currently supported only with OpenLDAP. -| `node['dovecot']['conf']['ldap']['tls_ca_cert_dir']` | *nil* | TLS options, currently supported only with OpenLDAP. -| `node['dovecot']['conf']['ldap']['tls_cipher_suite']` | *nil* | TLS options, currently supported only with OpenLDAP. -| `node['dovecot']['conf']['ldap']['tls_cert_file']` | *nil* | TLS cert/key is used only if LDAP server requires a client certificate. -| `node['dovecot']['conf']['ldap']['tls_key_file']` | *nil* | TLS cert/key is used only if LDAP server requires a client certificate. -| `node['dovecot']['conf']['ldap']['tls_require_cert']` | *nil* | Valid values: never, hard, demand, allow, try. -| `node['dovecot']['conf']['ldap']['ldaprc_path']` | *nil* | Use the given ldaprc path. -| `node['dovecot']['conf']['ldap']['debug_level']` | *nil* | LDAP library debug level as specified by LDAP_DEBUG_* in ldap_log.h. -| `node['dovecot']['conf']['ldap']['auth_bind']` | *nil* | Use authentication binding for verifying password's validity. -| `node['dovecot']['conf']['ldap']['auth_bind_userdn']` | *nil* | If authentication binding is used, you can save one LDAP request per login if user's DN can be specified with a common template. -| `node['dovecot']['conf']['ldap']['ldap_version']` | *nil* | LDAP protocol version to use. Likely 2 or 3. -| `node['dovecot']['conf']['ldap']['base']` | *nil* | LDAP base. %variables can be used here. -| `node['dovecot']['conf']['ldap']['deref']` | *nil* | Dereference: never, searching, finding or always. -| `node['dovecot']['conf']['ldap']['scope']` | *nil* | Search scope: base, onelevel or subtree. -| `node['dovecot']['conf']['ldap']['user_attrs']` | *nil* | User attributes are given in LDAP-name=dovecot-internal-name list. -| `node['dovecot']['conf']['ldap']['user_filter']` | *nil* | Filter for user lookup. -| `node['dovecot']['conf']['ldap']['pass_attrs']` | *nil* | Password checking attributes. -| `node['dovecot']['conf']['ldap']['pass_filter']` | *nil* | Filter for password lookups. -| `node['dovecot']['conf']['ldap']['iterate_attrs']` | *nil* | Attributes to get a list of all users. -| `node['dovecot']['conf']['ldap']['iterate_filter']` | *nil* | Filter to get a list of all users. -| `node['dovecot']['conf']['ldap']['default_pass_scheme']` | *nil* | Default password scheme. "{scheme}" before password overrides this. - -## SQL Authentication Attributes - -* Configuration file: `dovecot-sql.conf.ext`. - -| Attribute | Default | Description | -|:--------------------------------------------------------|:--------|:-------------------------------| -| `node['dovecot']['conf']['sql']['driver']` | *nil* | Database driver: mysql, pgsql or sqlite. -| `node['dovecot']['conf']['sql']['connect']` | *nil* | Database connection string or array. This is driver-specific setting. -| `node['dovecot']['conf']['sql']['default_pass_scheme']` | *nil* | Default password scheme. -| `node['dovecot']['conf']['sql']['password_query']` | *nil* | passdb query to retrieve the password. -| `node['dovecot']['conf']['sql']['user_query']` | *nil* | userdb query to retrieve the user information. -| `node['dovecot']['conf']['sql']['iterate_query']` | *nil* | Query to get a list of all usernames. - - -## Distribution Package Names Attributes - -These attributes below contain the default required distribution packages for the supported platforms. But you are free to create your own to support other platforms. Keep in mind that all are put inside a subkey (`type`). This `node['dovecot']['packages'][type]` attribute is then used together with the `node['dovecot']['conf_files'][type]` attribute to generate the configuration files. - -| Attribute | Default | Description | -|:----------------------------------------|:-------------|:-------------------------------| -| `node['dovecot']['packages']['core']` | *calculated* | Dovecot core package names array. -| `node['dovecot']['packages']['imap']` | *calculated* | Dovecot IMAP package names array. -| `node['dovecot']['packages']['pop3']` | *calculated* | Dovecot POP3 package names array. -| `node['dovecot']['packages']['lmtp']` | *calculated* | Dovecot LMTP package names array. -| `node['dovecot']['packages']['sieve']` | *calculated* | Dovecot Sieve package names array. -| `node['dovecot']['packages']['ldap']` | *calculated* | Dovecot LDAP package names array. -| `node['dovecot']['packages']['sqlite']` | *calculated* | Dovecot SQLite package names array. -| `node['dovecot']['packages']['mysql']` | *calculated* | Dovecot MySQL package names array. -| `node['dovecot']['packages']['pgsql']` | *calculated* | Dovecot PostgreSQL package names array. - -## Distribution Service Configuration - -These attributes are used to configure the Dovecot service according to each distribution. Surely you want to change them if you want to support new platforms or want to improve the support of some platforms already supported. - -| Attribute | Default | Description | -|:-----------------------------------------|:-------------|:----------------------------------| -| `node['dovecot']['service']['name']` | `'dovecot'` | Dovecot system service name. -| `node['dovecot']['service']['supports']` | *calculated* | Dovecot service supported actions. -| `node['dovecot']['service']['provider']` | *calculated* | Dovecot service Chef provider class. - -Recipes -======= - -## dovecot::default - -Installs and configures Dovecot. - -## dovecot::user - -Creates the dovecot system user. Used by the default recipe. - -## dovecot::conf_files - -Generates all the configuration files. Used by the default recipe. - -## dovecot::ohai_plugin - -Provides an Ohai plugin for reading dovecot install information. - -## dovecot::from_package - -Installs the required packages. Used by the default recipe if `node['dovecot']['install_from]` is `package`. - -## dovecot::service - -Configures the Dovecot service. Used by the default recipe. - -## dovecot::create_pwfile - -Creates and configures a password file from local mailboxes based on a data bag. - -* `node['dovecot']['databag_name']`: The Databag on which items are stored. -* `node['dovecot']['databag_users_item']`: The databag item to use (under the databag set) - -Ohai Plugin -=========== - -The `ohai_plugin` recipe installs an Ohai plugin. It will be installed and activated automatically. - -It will set the following attributes: - -* `node['dovecot']['version']`: version of Dovecot. -* `node['dovecot']['build-options']`: some Dovecot build options. - * `node['dovecot']['build-options']['mail-storages']` - * `node['dovecot']['build-options']['sql-driver-plugins']` or `node['dovecot']['build-options']['sql-drivers']` - * `node['dovecot']['build-options']['passdb']` - * `node['dovecot']['build-options']['userdb']` - -This is an output example: - -```json -"dovecot": { - "version": "2.0.19", - "build-options": { - "ioloop": "epoll", - "notify": "inotify", - "ipv6": true, - "openssl": true, - "io_block_size": "8192", - "mail-storages": [ - "shared", - "mdbox", - "sdbox", - "maildir", - "mbox", - "cydir", - "raw" - ], - "sql-driver-plugins": [ - "mysql", - "postgresql", - "sqlite" - ], - "passdb": [ - "checkpassword", - "ldap", - "pam", - "passwd", - "passwd-file", - "shadow", - "sql" - ], - "userdb": [ - "checkpassword", - "ldap(plugin)", - "nss", - "passwd", - "prefetch", - "passwd-file", - "sql" - ] - } -} -``` - -Usage Examples -============== - -## Including in a Cookbook Recipe - -You can simply include it in a recipe: - -```ruby -# from a recipe -include_recipe 'dovecot' -``` - -Don't forget to include the `dovecot` cookbook as a dependency in the metadata. - -```ruby -# metadata.rb -# [...] - -depends 'dovecot' -``` - -## Including in the Run List - -Another alternative is to include the default recipe in your Run List. - -```json -{ - "name": "mail.example.com", - "[...]": "[...]", - "run_list": [ - "recipe[dovecot]" - ] -} -``` - -## Authentication Database Examples - -Authentication database attributes, inside passdb or usedb hash values, can contain both arrays or hashes. - -Supported auths are the following: `checkpassword`, `deny`, `ldap`, `master`, `passwdfile`, `sql`, `system` and `vpopmail`. - -```ruby -node.default['dovecot']['auth']['checkpassword'] = - { - 'passdb' => { # hash - 'driver' => 'checkpassword', - 'args' => '/usr/bin/checkpassword' - }, - 'userdb' => { - 'driver' => 'prefetch' - } - } -``` - -```ruby -node.default['dovecot']['auth']['system']['passdb'] = - [ # array - { - # without driver - 'args' => 'dovecot' - }, - { - 'driver' => 'passwd', - 'args' => '' - }, - { - 'driver' => 'shadow', - 'args' => '' - }, - { - 'driver' => 'bsdauth', - 'args' => '' - } - ] -``` - -## Dictionary Quota SQL Example - -```ruby -node.default['dovecot']['conf']['dict_sql']['maps'] = - [ - { - 'pattern' => 'priv/quota/storage', - 'table' => 'quota', - 'username_field' => 'username', - 'value_field' => 'bytes' - }, - { - 'pattern' => 'priv/quota/messages', - 'table' => 'quota', - 'username_field' => 'username', - 'value_field' => 'messages' - }, - { - 'pattern' => 'shared/expire/$user/$mailbox', - 'table' => 'expires', - 'value_field' => 'expire_stamp', - 'fields' => { - 'username' => '$user', - 'mailbox' => '$mailbox' - } - } - ] -``` - -## Namespaces Example - -The `['namespaces']` attribute is an array, which could contain both array or hash values. - -```ruby -node.default['dovecot']['namespaces'] = [ - { - 'separator' => '/', - 'prefix' => '"#mbox/"', - 'location' => 'mbox:~/mail:INBOX=/var/mail/%u', - 'inbox' => true, - 'hidden' => true, - 'list' => false - }, { - 'separator' => '/', - 'prefix' => '', - 'location' => 'maildir:~/Maildir' - }, { # this requires Dovecot >= 2.1 - 'name' => 'inbox', - 'separator' => '/', - 'prefix' => '', - 'inbox' => true, - 'mailboxes' => { - 'Drafts' => { - 'special_use' => '\Drafts' - }, - 'Junk' => { - 'special_use' => '\Junk' - }, - 'Trash' => { - 'special_use' => '\Trash' - }, - 'Sent' => { - 'special_use' => '\Sent' - }, - 'Sent Messages' => { - 'special_use' => '\Sent' - }, - 'virtual/All' => { - 'special_use' => '\All' - }, - 'virtual/Flagged' => { - 'special_use' => '\All' - } - } - } -] -``` - -## Plugins Examples - -Plugin attribute values should be of type hash. - -Supported plugins are the following: `mail_log`, `acl` and `quota`. - -### Mail Log Plugin Example - -```ruby -node.default['dovecot']['plugins']['mail_log'] = { - 'mail_log_events' => - 'delete undelete expunge copy mailbox_delete mailbox_rename', - 'mail_log_fields' => 'uid box msgid size' -} -``` - -### Sieve Plugin Example - -```ruby -node.default['dovecot']['plugins']['sieve'] = { - 'sieve' => '~/.dovecot.sieve', - 'sieve_dir' => '~/sieve' -} -``` - -## Protocols Examples - -Protocol attribute values should be of type hash. - -Supported protocols are the following: `lda`, `imap`, `lmtp`, `sieve` and `pop3`. - -```ruby -node.default['dovecot']['protocols']['lda'] = { - 'mail_plugins' => %w($mail_plugins) -} -``` - -To enable the IMAP protocol without additional settings: - -```ruby -node.default['dovecot']['protocols']['imap'] = {} -``` - -## Service Examples - -The `['services']` attribute is a hash. Each service attribute should be a hash. But the `['listeners']` subkey could contain both a hash and an array. - -Inside this `listeners` key, you should name each listener with the format *PROTOCOL:NAME*. Allowed protocols are `fifo`, `unix` and `inet`. - -Supported services are the following: `anvil`, `director`, `imap-login`, `pop3-login`, `lmtp`, `imap`, `pop3`, `auth`, `auth-worker`, `dict`, `tcpwrap`, `managesieve-login`, `managesieve`, `aggregator`, `replicator`, `config`. - -### Director Service Example - -```ruby -node.default['dovecot']['services']['director']['listeners'] = [ - { 'unix:login/director' => { 'mode' => '0666' } }, - { 'fifo:login/proxy-notify' => { 'mode' => '0666' } }, - { 'unix:director-userdb' => { 'mode' => '0666' } }, - { 'inet' => { 'port' => '5432' } } -] -``` - -### Imap-login Service Example - -```ruby -node.default['dovecot']['services']['imap-login'] = { - 'listeners' => [ - { 'inet:imap' => { 'port' => 143 } }, - { 'inet:imaps' => { 'port' => 993, 'ssl' => true } } - ], - 'service_count' => 1, - 'process_min_avail' => 0, - 'vsz_limit' => '64M' -} -``` - -### Doveadm Service Example - -```ruby -default['dovecot']['services']['doveadm'] = { - 'listeners' => [ - { 'inet:doveadm-server' => { 'port' => 3333 } - } - ] -} -``` - -### Quota-status Service Example - -```ruby -default['dovecot']['services']['quota-status'] = { - 'executable' => 'quota-status -p postfix', - 'listeners' => [ - { 'inet:imap' => { 'port' => 4444 } } - ] -} -``` - -### Quota-warning Service Example - -```ruby -default['dovecot']['services']['quota-warning'] = { - 'user' => 'dovecot', - 'executable' => 'script /usr/local/bin/quota-warning.sh', - 'listeners' => [ - { 'unix:quota-warning' => { 'user' => 'postfix' } } - ] -} -``` - -## LDAP Example - -This is a recipe example to integrate Dovecot with [OpenLDAP](http://www.openldap.org/). The following cookbooks are used: - -* [`openldap`](https://supermarket.chef.io/cookbooks/openldap) -* [`ldap`](https://supermarket.chef.io/cookbooks/ldap) - -```ruby -# Function to generate the passwords in LDAP format -def generate_ldap_password(password, salt = '12345') - require 'digest' - require 'base64' - digest = Digest::SHA1.digest(password + salt) - '{SSHA}' + Base64.encode64(digest + salt).chomp -end -recipe = self - -# Create LDAP credentials -ldap_password = 'secretsauce' -ldap_credentials = { - 'bind_dn' => "cn=#{node['openldap']['cn']},#{node['openldap']['basedn']}", - 'password' => ldap_password -} - -# Configure OpenLDAP server -node.default['openldap']['tls_enabled'] = false -node.default['openldap']['rootpw'] = generate_ldap_password(ldap_password) -node.default['openldap']['loglevel'] = 'any' - -include_recipe 'openldap::server' - -# Create some LDAP entries as an example - -include_recipe 'ldap' - -ldap_entry node['openldap']['basedn'] do - attributes objectClass: %w(top dcObject organization), - o: 'myorg', - dc: 'myorg', - description: 'My organization' - credentials ldap_credentials -end - -ldap_entry "ou=accounts,#{node['openldap']['basedn']}" do - attributes objectClass: %w(top organizationalUnit), - ou: 'accounts', - description: 'Dovecot email accounts' - credentials ldap_credentials -end - -ldap_entry "cn=dovecot,ou=accounts,#{node['openldap']['basedn']}" do - attributes objectClass: %w(top person), - cn: 'dovecot', - sn: 'dovecot' - credentials ldap_credentials -end - -# Create an email account - -email_account = { - cn: 'Ole Wobble Olson', - sn: 'Olson', - uid: 'wobble', - uidNumber: '1002', # should be an string for ldap_entry - gidNumber: '100', - homeDirectory: '/home/wobble', - userPassword: recipe.generate_ldap_password('w0bbl3_p4ss') -} - -ldap_entry "uid=wobble,ou=accounts,#{node['openldap']['basedn']}" do - attributes email_account.merge(objectClass: %w(top person posixAccount)) - credentials ldap_credentials -end - -# Create home directory for the email account -directory email_account[:homeDirectory] do - owner email_account[:uidNumber].to_i # should be an integer for directory - group email_account[:gidNumber].to_i -end - -# Dovecot IMAP configuration -node.default['dovecot']['conf']['mail_location'] = 'maildir:~/Maildir' -node.default['dovecot']['protocols']['imap'] = {} -node.default['dovecot']['services']['imap-login'] = - { - 'listeners' => - [ - { 'inet:imap' => { 'port' => 143 } }, - { 'inet:imaps' => { 'port' => 993, 'ssl' => true } } - ], - 'service_count' => 1, - 'process_min_avail' => 0, - 'vsz_limit' => '64M' - } - -# Dovecot LDAP configuration -node.default['dovecot']['conf']['ldap']['auth_bind'] = true -node.default['dovecot']['conf']['ldap']['hosts'] = %w(localhost) -node.default['dovecot']['conf']['ldap']['dn'] = ldap_credentials['bind_dn'] -node.default['dovecot']['conf']['ldap']['dnpass'] = ldap_credentials['password'] -node.default['dovecot']['conf']['ldap']['base'] = node['openldap']['basedn'] - -include_recipe 'dovecot' -``` - -## Password File Example - -This is an example of how to use userdb password file. - -```ruby -# Define databag and item inside Databag (default.conf): -node.default['dovecot']['databag_name'] = 'dovecot' -node.default['dovecot']['databag_users_item'] = 'users' - -# Attributes for userdb to function: -node.default['dovecot']['auth']['passwdfile'] = - { - 'passdb' => { - 'driver' => 'passwd-file', - 'args' => node['dovecot']['conf']['password_file'] - }, - 'userdb' => { - 'driver' => 'passwd-file', - 'args' => - "username_format=%u #{node['dovecot']['conf']['password_file']}", - 'default_fields' => 'home=/var/dovecot/vmail/%d/%n' - } - } - -# Include this recipe on your: -include_recipe 'dovecot::pwfile-file' -``` - -Databag example, two ways of defining a user included: - -```json -{ - "users": { - "dilan": "password1234", - "vassilis": [ - "vassilis1234", null, null, null, null, null, null - ] - } -} -``` - -## A Complete Example - -This is a complete recipe example for installing and configuring Dovecot 2 to work with PostfixAdmin MySQL tables, including IMAP service: - -```ruby - -node.default['dovecot']['conf_files_group'] = 'vmail' - -node.default['dovecot']['conf']['disable_plaintext_auth'] = false -node.default['dovecot']['conf_files_mode'] = '00640' - -# 10-logging.conf -node.default['dovecot']['conf']['log_path'] = 'syslog' -node.default['dovecot']['conf']['syslog_facility'] = 'mail' -node.default['dovecot']['conf']['log_timestamp'] = '"%Y-%m-%d %H:%M:%S"' - -# 10-mail.conf -node.default['dovecot']['conf']['mail_location'] = 'maildir:~/Maildir' -node.default['dovecot']['conf']['mail_privileged_group'] = 'mail' - -# 10-master.conf -node.default['dovecot']['services']['auth']['listeners'] = [ - # auth_socket_path points to this userdb socket by default. It's typically - # used by dovecot-lda, doveadm, possibly imap process, etc. Its default - # permissions make it readable only by root, but you may need to relax these - # permissions. Users that have access to this socket are able to get a list - # of all usernames and get results of everyone's userdb lookups. - { 'unix:auth-userdb' => { - 'mode' => '0600', - 'user' => 'vmail', - 'group' => 'vmail' - } }, - # Postfix smtp-auth - { 'unix:/var/spool/postfix/private/auth' => { - 'mode' => '0666', - 'user' => 'postfix', - 'group' => 'postfix' - } } -] - -# 15-lda.conf -# TODO: Change this to fit your server: -node.default['dovecot']['conf']['postmaster_address'] = - 'postmaster@mycompany.org' -# TODO: Change this to fit your server: -node.default['dovecot']['conf']['hostname'] = 'mail.mycompany.org' -node.default['dovecot']['conf']['lda_mailbox_autocreate'] = true -node.default['dovecot']['conf']['lda_mailbox_autosubscribe'] = true -# We want sieve enabled -node.default['dovecot']['protocols']['lda']['mail_plugins'] = - %w($mail_plugins sieve) - -# 20-imap.conf -# We want IMAP enabled with the default configuration -node.default['dovecot']['protocols']['imap'] = {} - -# 90-sieve.conf -node.default['dovecot']['plugins']['sieve']['sieve'] = '~/.dovecot.sieve' -node.default['dovecot']['plugins']['sieve']['sieve_dir'] = '~/sieve' -node.default['dovecot']['plugins']['sieve']['sieve_global_path'] = - "#{node['dovecot']['conf_path']}/sieve/default.sieve" - -# auth-sql.conf.ext -node.default['dovecot']['auth']['sql']['passdb']['args'] = - '/etc/dovecot/dovecot-sql.conf.ext' -node.default['dovecot']['auth']['sql']['userdb']['args'] = - '/etc/dovecot/dovecot-sql.conf.ext' - -# auth-static.conf.ext -node.default['dovecot']['auth']['static']['userdb']['args'] = %w( - uid=vmail - gid=vmail - home=/var/vmail/%d/%n - allow_all_users=yes -) - -# auth-system.conf.ext -node.default['dovecot']['auth']['system'] = {} - -# dovecot-sql.conf.ext -# We want to enable MySQL driver -node.default['dovecot']['conf']['sql']['driver'] = 'mysql' -# TODO: Change the database password below, please: -node.default['dovecot']['conf']['sql']['connect'] = %w( - host=localhost - dbname=postfix - user=postfix - password=postfix_pass -) -# md5crypt encryption method -node.default['dovecot']['conf']['sql']['default_pass_scheme'] = 'MD5-CRYPT' -node.default['dovecot']['conf']['sql']['password_query'] = [ - 'SELECT username AS user, password', - 'FROM mailbox', - "WHERE username = '%u' AND active = '1'" -] -node.default['dovecot']['conf']['sql']['user_query'] = [ - 'SELECT', - ' username AS user,', - ' password,', - ' 5000 as uid,', - ' 5000 as gid,', - " concat('/var/vmail/', maildir) AS home,", - " concat('maildir:/var/vmail/', maildir) AS mail", - 'FROM mailbox', - "WHERE username = '%u' AND active = '1'" -] - -node.default['dovecot']['conf']['sql']['iterate_query'] = [ - 'SELECT username AS user', - "FROM mailbox WHERE active = '1'" -] - -include_recipe 'dovecot' - -# Compile sieve scripts - -# this should go after installing dovecot, sievec is required -sieve_global_path = "#{node['dovecot']['conf_path']}/sieve/default.sieve" -execute 'sievec sieve_global_path' do - command "sievec '#{sieve_global_path}'" - action :nothing -end -directory ::File.dirname(sieve_global_path) do - owner 'root' - group 'root' - mode '00755' - recursive true - not_if { ::File.exist?(::File.dirname(sieve_global_path)) } -end -# This will be the default sieve script: -template node['dovecot']['plugins']['sieve']['sieve_global_path'] do - source 'default.sieve.erb' - owner 'root' - group 'root' - mode '00644' - notifies :run, 'execute[sievec sieve_global_path]' -end -``` - -If you want a more complete example, you can look at the [postfix-dovecot](https://github.com/zuazo/postfix-dovecot-cookbook) recipe. - -Testing -======= - -See [TESTING.md](https://github.com/zuazo/dovecot-cookbook/blob/master/TESTING.md). - -Contributing -============ - -Please do not hesitate to [open an issue](https://github.com/zuazo/dovecot-cookbook/issues/new) with any questions or problems. - -See [CONTRIBUTING.md](https://github.com/zuazo/dovecot-cookbook/blob/master/CONTRIBUTING.md). - -TODO -==== - -See [TODO.md](https://github.com/zuazo/dovecot-cookbook/blob/master/TODO.md). - -License and Author -================== - -| | | -|:---------------------|:-----------------------------------------| -| **Author:** | [Xabier de Zuazo](https://github.com/zuazo) () -| **Contributor:** | [Andreas Lappe](https://github.com/alappe) -| **Contributor:** | [Trond Arve Nordheim](https://github.com/tanordheim) -| **Contributor:** | [Johan Svensson](https://github.com/loxley) -| **Contributor:** | [Arnold Krille](https://github.com/kampfschlaefer) -| **Contributor:** | [claudex](https://github.com/claudex) -| **Contributor:** | [Jordi Llonch](https://github.com/llonchj) -| **Contributor:** | [Michael Burns](https://github.com/mburns) -| **Contributor:** | [Marcus Klein](https://github.com/kleini) -| **Contributor:** | [Vassilis Aretakis](https://github.com/billiaz) -| **Contributor:** | [Edgaras Lukosevicius](https://github.com/ledgr) -| **Contributor:** | [Sjoerd Tromp](https://github.com/stromp) -| **Contributor:** | [Sander van Harmelen](https://github.com/svanharmelen) -| **Copyright:** | Copyright (c) 2015-2016, Xabier de Zuazo -| **Copyright:** | Copyright (c) 2013-2015, Onddo Labs, SL. -| **License:** | Apache License, Version 2.0 - - Licensed 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. diff --git a/lc-gdn-chef/cookbooks/dovecot/Rakefile b/lc-gdn-chef/cookbooks/dovecot/Rakefile deleted file mode 100644 index 762128ea2..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/Rakefile +++ /dev/null @@ -1,150 +0,0 @@ -# encoding: UTF-8 -# -*- mode: ruby -*- -# vi: set ft=ruby : - -# -# Available Rake tasks: -# -# $ rake -T -# rake clean # Clean some generated files -# rake default # Run doc, style, unit and integration tests -# rake doc # Generate Ruby documentation -# rake integration[regexp,action] # Run Test Kitchen integration tests -# rake integration:cloud[regexp,action] # Run Kitchen tests in the cloud -# rake integration:docker[regexp,action] # Run Kitchen tests using docker -# rake integration:vagrant[regexp,action] # Run Kitchen tests using vagrant -# rake style # Run all style checks -# rake style:chef # Run Chef style checks using foodcritic -# rake style:ruby # Run Ruby style checks using rubocop -# rake style:ruby:auto_correct # Auto-correct RuboCop offenses -# rake unit # Run ChefSpec unit tests -# rake yard # Generate Ruby documentation using yard -# -# More info at https://github.com/ruby/rake/blob/master/doc/rakefile.rdoc -# - -require 'bundler/setup' - -# Checks if we are inside a Continuous Integration machine. -# -# @return [Boolean] whether we are inside a CI. -# @example -# ci? #=> false -def ci? - ENV['CI'] == 'true' -end - -desc 'Clean some generated files' -task :clean do - %w( - Berksfile.lock - .bundle - .cache - coverage - Gemfile.lock - .kitchen - metadata.json - vendor - ).each { |f| FileUtils.rm_rf(Dir.glob(f)) } -end - -desc 'Generate Ruby documentation using yard' -task :yard do - require 'yard' - YARD::Rake::YardocTask.new do |t| - t.stats_options = %w(--list-undoc) - end -end - -desc 'Generate Ruby documentation' -task doc: %w(yard) - -namespace :style do - require 'rubocop/rake_task' - desc 'Run Ruby style checks using rubocop' - RuboCop::RakeTask.new(:ruby) - - require 'foodcritic' - desc 'Run Chef style checks using foodcritic' - FoodCritic::Rake::LintTask.new(:chef) do |t| - t.options = { - fail_tags: ['any'], - progress: true - } - end -end - -desc 'Run all style checks' -task style: %w(style:chef style:ruby) - -desc 'Run ChefSpec unit tests' -task :unit do - require 'rspec/core/rake_task' - RSpec::Core::RakeTask.new(:unit) do |t| - t.rspec_opts = '--color --format progress' - t.pattern = 'test/unit/**{,/*/**}/*_spec.rb' - end -end - -desc 'Run Test Kitchen integration tests' -namespace :integration do - # Generates the `Kitchen::Config` class configuration values. - # - # @param loader_config [Hash] loader configuration options. - # @return [Hash] configuration values for the `Kitchen::Config` class. - def kitchen_config(loader_config = {}) - {}.tap do |config| - unless loader_config.empty? - @loader = Kitchen::Loader::YAML.new(loader_config) - config[:loader] = @loader - end - end - end - - # Gets a collection of instances. - # - # @param regexp [String] regular expression to match against instance names. - # @param config [Hash] configuration values for the `Kitchen::Config` class. - # @return [Collection] all instances. - def kitchen_instances(regexp, config) - instances = Kitchen::Config.new(config).instances - return instances if regexp.nil? || regexp == 'all' - instances.get_all(Regexp.new(regexp)) - end - - # Runs a test kitchen action against some instances. - # - # @param action [String] kitchen action to run (defaults to `'test'`). - # @param regexp [String] regular expression to match against instance names. - # @param loader_config [Hash] loader configuration options. - # @return void - def run_kitchen(action, regexp, loader_config = {}) - action = 'test' if action.nil? - require 'kitchen' - Kitchen.logger = Kitchen.default_file_logger - config = kitchen_config(loader_config) - kitchen_instances(regexp, config).each { |i| i.send(action) } - end - - desc 'Run Test Kitchen integration tests using vagrant' - task :vagrant, [:regexp, :action] do |_t, args| - run_kitchen(args.action, args.regexp) - end - - desc 'Run Test Kitchen integration tests using docker' - task :docker, [:regexp, :action] do |_t, args| - run_kitchen(args.action, args.regexp, local_config: '.kitchen.docker.yml') - end - - desc 'Run Test Kitchen integration tests in the cloud' - task :cloud, [:regexp, :action] do |_t, args| - run_kitchen(args.action, args.regexp, local_config: '.kitchen.cloud.yml') - end -end - -desc 'Run Test Kitchen integration tests' -task :integration, [:regexp, :action] => - ci? ? %w(integration:docker) : %w(integration:vagrant) - -desc 'Run doc, style, unit and integration tests' -task default: %w(doc style unit integration) diff --git a/lc-gdn-chef/cookbooks/dovecot/TESTING.md b/lc-gdn-chef/cookbooks/dovecot/TESTING.md deleted file mode 100644 index ed4de16ff..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/TESTING.md +++ /dev/null @@ -1,152 +0,0 @@ -Testing -======= - -## Installing the Requirements - -You must have [VirtualBox](https://www.virtualbox.org/manual/ch02.html)&[Vagrant](https://www.vagrantup.com/docs/installation/) or [Docker](https://docs.docker.com/engine/installation/) installed. - -It's also recommend to install [ChefDK](https://downloads.chef.io/chef-dk/): - - $ curl -L https://www.getchef.com/chef/install.sh | sudo bash -s -- -P chefdk - $ eval "$(/opt/chefdk/bin/chef shell-init bash)" - -You can install gem dependencies with bundler: - - $ chef exec bundle install --without travis - -Or, if you don't want to use ChefDK: - - $ gem install bundler - $ bundle install --without travis - -## Generating the Documentation - -This will generate the documentation for the source files inside the [*libraries/*](https://github.com/zuazo/dovecot-cookbook/tree/master/libraries) directory. - - $ chef exec bundle exec rake doc - -The documentation is included in the source code itself. - -## Syntax Style Tests - -We use the following tools to test the code style: - -* [RuboCop](https://github.com/bbatsov/rubocop#readme) -* [foodcritic](http://www.foodcritic.io/) - -To run the tests: - - $ chef exec bundle exec rake style - -Or: - - $ rubocop . - $ foodcritic . - -## Unit Tests - -We use [ChefSpec](https://github.com/sethvargo/chefspec#readme) and [RSpec](http://rspec.info/) for the unit tests. RSpec is generally used to test the libraries or some Ruby specific code. - -The unit test files are placed in the [*test/unit/*](https://github.com/zuazo/dovecot-cookbook/tree/master/test/unit) directory. - -To run the tests: - - $ chef exec bundle exec rake unit - -Or: - - $ rspec test/unit - -## Integration Tests in Vagrant - -We use [Test Kitchen](http://kitchen.ci/) to run the tests and the tests are written using [Serverspec](http://serverspec.org/). - -The integration test files are placed in the [*test/integration/*](https://github.com/zuazo/dovecot-cookbook/tree/master/test/integration) directory. Some cookbooks required by this tests are in the [*test/cookbooks/*](https://github.com/zuazo/dovecot-cookbook/tree/master/test/cookbooks) directory. - -To run the tests: - - $ chef exec bundle exec rake integration:vagrant - -Or: - - $ kitchen list - $ kitchen test - [...] - -### Integration Tests in Docker - -You can run the integration tests using [Docker](https://www.docker.com/) instead of Vagrant if you prefer. - -Of course, you need to have [Docker installed](https://docs.docker.com/engine/installation/). - - $ wget -qO- https://get.docker.com/ | sh - -Then use the `integration:docker` rake task to run the tests: - - $ bundle exec rake integration:docker - -Or: - - $ export KITCHEN_LOCAL_YAML=.kitchen.docker.yml - $ kitchen list - $ kitchen test - -### Integration Tests in the Cloud - -You can run the tests in the cloud instead of using Vagrant. First, you must set the following environment variables: - -* `AWS_ACCESS_KEY_ID` -* `AWS_SECRET_ACCESS_KEY` -* `AWS_KEYPAIR_NAME`: EC2 SSH public key name. This is the name used in Amazon EC2 Console's Key Pars section. -* `EC2_SSH_KEY_PATH`: EC2 SSH private key local full path. Only when you are not using an SSH Agent. -* `DIGITALOCEAN_ACCESS_TOKEN` -* `DIGITALOCEAN_SSH_KEY_IDS`: DigitalOcean SSH numeric key IDs. -* `DIGITALOCEAN_SSH_KEY_PATH`: DigitalOcean SSH private key local full path. Only when you are not using an SSH Agent. - -Then use the `integration:cloud` rake task to run the tests: - - $ bundle exec rake integration:cloud - -## Guard - -Guard is a tool that runs the tests automatically while you are making changes to the source files. - -To run Guard: - - $ guard - -More info at [Guard Readme](https://github.com/guard/guard#readme). - -## Available Rake Tasks - -There are multiple Rake tasks that you can use to run the tests: - - $ rake -T - -See [Rakefile documentation](https://github.com/ruby/rake/blob/master/doc/rakefile.rdoc) for more information. - -## Using Vagrant with the Vagrantfile - -### Vagrantfile Requirements - -* [ChefDK](https://downloads.chef.io/chef-dk/) -* Berkhelf and Omnibus vagrant plugins: -``` -$ vagrant plugin install vagrant-berkshelf vagrant-omnibus -``` -* The environment correctly configured for ChefDK: -``` -$ eval "$(/opt/chefdk/bin/chef shell-init bash)" -``` - -### Vagrantfile Usage - - $ vagrant up - -To run Chef again on the same machine: - - $ vagrant provision - -To destroy the machine: - - $ vagrant destroy diff --git a/lc-gdn-chef/cookbooks/dovecot/TODO.md b/lc-gdn-chef/cookbooks/dovecot/TODO.md deleted file mode 100644 index 87b0a47b5..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/TODO.md +++ /dev/null @@ -1,7 +0,0 @@ -TODO -==== - -* [ ] Complete the **dovecot-dict-auth.conf.ext.erb** template. -* [ ] Add unit tests for libraries. -* [ ] Install from sources. -* [ ] Integrate with `ssl_certificate` cookbook? diff --git a/lc-gdn-chef/cookbooks/dovecot/Vagrantfile b/lc-gdn-chef/cookbooks/dovecot/Vagrantfile deleted file mode 100644 index 86c49946f..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/Vagrantfile +++ /dev/null @@ -1,124 +0,0 @@ -# encoding: UTF-8 -# -*- mode: ruby -*- -# vi: set ft=ruby : - -# See TESTING.md file. - -Vagrant.configure('2') do |config| - # All Vagrant configuration is done here. The most common configuration - # options are documented and commented below. For a complete reference, please - # see the online documentation at vagrantup.com. - - config.vm.hostname = 'dovecot.local' - - # Opscode Chef Vagrant box to use. - # More boxes here: https://github.com/opscode/bento - opscode_box = 'opscode-ubuntu-12.04' - - # Every Vagrant virtual environment requires a box to build off of. - config.vm.box = opscode_box - - # The url from where the 'config.vm.box' box will be fetched if it doesn't - # already exist on the user's system. - config.vm.box_url = - 'http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/'\ - "#{opscode_box.sub('-', '_')}_chef-provisionerless.box" - - # Assign this VM to a host-only network IP, allowing you to access it via the - # IP. Host-only networks can talk to the host machine as well as any other - # machines on the same network, but cannot be accessed (through this network - # interface) by any external networks. - config.vm.network :private_network, ip: '10.73.57.103' - - # Create a public network, which generally matched to bridged network. Bridged - # networks make the machine appear as another physical device on your network. - - # config.vm.network :public_network - - # Create a forwarded port mapping which allows access to a specific port - # within the machine from a port on the host machine. In the example below, - # accessing 'localhost:8080' will access port 80 on the guest machine. - # config.vm.network :forwarded_port, guest: 80, host: 8080, auto_correct: true - # pop3, pop3s, imap, imaps - config.vm.network :forwarded_port, guest: 110, host: 8110, auto_correct: true - config.vm.network :forwarded_port, guest: 995, host: 8995, auto_correct: true - config.vm.network :forwarded_port, guest: 143, host: 8143, auto_correct: true - config.vm.network :forwarded_port, guest: 993, host: 8993, auto_correct: true - - # The time in seconds that Vagrant will wait for the machine to boot and be - # accessible. - config.vm.boot_timeout = 120 - - # Share an additional folder to the guest VM. The first argument is the path - # on the host to the actual folder. The second argument is the path on the - # guest to mount the folder. And the optional third argument is a set of - # non-required options. - # config.vm.synced_folder '../data', '/vagrant_data' - - # Provider-specific configuration so you can fine-tune various backing - # providers for Vagrant. These expose provider-specific options. - # Example for VirtualBox: - # - # config.vm.provider :virtualbox do |vb| - # # Don't boot with headless mode - # vb.gui = true - # - # # Use VBoxManage to customize the VM. For example to change memory: - # vb.memory = 1024 - # end - # - # View the documentation for the provider you're using for more information on - # available options. - - # Install the latest version of Chef. - config.omnibus.chef_version = :latest - - # Enabling the Berkshelf plugin. To enable this globally, add this - # configuration option to your ~/.vagrant.d/Vagrantfile file. - config.berkshelf.enabled = true - - # The path to the Berksfile to use with Vagrant Berkshelf. - # config.berkshelf.berksfile_path = './Berksfile' - - # An array of symbols representing groups of cookbook described in the - # Vagrantfile to exclusively install and copy to Vagrant's shelf. - # config.berkshelf.only = [] - - # An array of symbols representing groups of cookbook described in the - # Vagrantfile to skip installing and copying to Vagrant's shelf. - # config.berkshelf.except = [] - - config.vm.provision :chef_solo do |chef| - # Set your node attributes here: - chef.json = {} - - chef.run_list = %w( - recipe[apt] - recipe[dovecot::default] - ) - end - - # Enable provisioning with chef server, specifying the chef server URL, and - # the path to the validation key (relative to this Vagrantfile). - # - # The Opscode Platform uses HTTPS. Substitute your organization for ORGNAME in - # the URL and validation key. - # - # If you have your own Chef Server, use the appropriate URL, which may be HTTP - # instead of HTTPS depending on your configuration. Also change the validation - # key to validation.pem. - # - # orgname = 'ORGNAME' - # config.vm.provision :chef_client do |chef| - # chef.chef_server_url = "https://api.chef.io/organizations/#{orgname}" - # chef.validation_key_path = "#{orgname}-validator.pem" - # end - # - # If you're using the Opscode platform, your validator client is - # ORGNAME-validator, replacing ORGNAME with your organization name. - # - # If you have your own Chef Server, the default validation client name is - # chef-validator, unless you changed the configuration. - # - # chef.validation_client_name = "#{orgname}-validator" -end diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/auth.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/auth.rb deleted file mode 100644 index 40f8c6231..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/auth.rb +++ /dev/null @@ -1,22 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: auth -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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['dovecot']['auth'] = {} diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_auth.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_auth.rb deleted file mode 100644 index 86a4fdef7..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_auth.rb +++ /dev/null @@ -1,42 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_10_auth -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# conf.d/10-auth.conf - -default['dovecot']['conf']['disable_plaintext_auth'] = nil -default['dovecot']['conf']['auth_cache_size'] = nil -default['dovecot']['conf']['auth_cache_ttl'] = nil -default['dovecot']['conf']['auth_cache_negative_ttl'] = nil -default['dovecot']['conf']['auth_realms'] = nil -default['dovecot']['conf']['auth_default_realm'] = nil -default['dovecot']['conf']['auth_username_chars'] = nil -default['dovecot']['conf']['auth_username_translation'] = nil -default['dovecot']['conf']['auth_username_format'] = nil -default['dovecot']['conf']['auth_master_user_separator'] = nil -default['dovecot']['conf']['auth_anonymous_username'] = nil -default['dovecot']['conf']['auth_worker_max_count'] = nil -default['dovecot']['conf']['auth_gssapi_hostname'] = nil -default['dovecot']['conf']['auth_krb5_keytab'] = nil -default['dovecot']['conf']['auth_use_winbind'] = nil -default['dovecot']['conf']['auth_winbind_helper_path'] = nil -default['dovecot']['conf']['auth_failure_delay'] = nil -default['dovecot']['conf']['auth_ssl_require_client_cert'] = nil -default['dovecot']['conf']['auth_mechanisms'] = 'plain' diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_director.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_director.rb deleted file mode 100644 index ecae018cd..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_director.rb +++ /dev/null @@ -1,28 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_10_director -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014-2015 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# conf.d/10-director.conf - -default['dovecot']['conf']['director_servers'] = nil -default['dovecot']['conf']['director_mail_servers'] = nil -default['dovecot']['conf']['director_user_expire'] = nil -default['dovecot']['conf']['director_doveadm_port'] = nil -default['dovecot']['conf']['director_username_hash'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_logging.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_logging.rb deleted file mode 100644 index d5d5e1581..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_logging.rb +++ /dev/null @@ -1,38 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_10_logging -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# conf.d/10-logging.conf - -default['dovecot']['conf']['log_path'] = nil -default['dovecot']['conf']['info_log_path'] = nil -default['dovecot']['conf']['debug_log_path'] = nil -default['dovecot']['conf']['syslog_facility'] = nil -default['dovecot']['conf']['auth_verbose'] = nil -default['dovecot']['conf']['auth_verbose_passwords'] = nil -default['dovecot']['conf']['auth_debug'] = nil -default['dovecot']['conf']['auth_debug_passwords'] = nil -default['dovecot']['conf']['mail_debug'] = nil -default['dovecot']['conf']['verbose_ssl'] = nil -default['dovecot']['conf']['log_timestamp'] = nil -default['dovecot']['conf']['login_log_format_elements'] = nil -default['dovecot']['conf']['login_log_format'] = nil -default['dovecot']['conf']['mail_log_prefix'] = nil -default['dovecot']['conf']['deliver_log_format'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_mail.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_mail.rb deleted file mode 100644 index 1498a44d7..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_mail.rb +++ /dev/null @@ -1,76 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_10_mail -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2016 Xabier de Zuazo -# Copyright:: Copyright (c) 2014-2015 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# conf.d/10-mail.conf - -default['dovecot']['conf']['mail_location'] = nil -default['dovecot']['conf']['mail_shared_explicit_inbox'] = nil -default['dovecot']['conf']['mail_uid'] = nil -default['dovecot']['conf']['mail_gid'] = nil -default['dovecot']['conf']['mail_privileged_group'] = nil -default['dovecot']['conf']['mail_access_groups'] = nil -default['dovecot']['conf']['mail_full_filesystem_access'] = nil -default['dovecot']['conf']['mail_attribute_dict'] = nil -default['dovecot']['conf']['mail_server_comment'] = nil -default['dovecot']['conf']['mail_server_admin'] = nil -default['dovecot']['conf']['mmap_disable'] = nil -default['dovecot']['conf']['dotlock_use_excl'] = nil -default['dovecot']['conf']['mail_fsync'] = nil -default['dovecot']['conf']['mail_nfs_storage'] = nil -default['dovecot']['conf']['mail_nfs_index'] = nil -default['dovecot']['conf']['lock_method'] = nil -default['dovecot']['conf']['mail_temp_dir'] = nil -default['dovecot']['conf']['first_valid_uid'] = nil -default['dovecot']['conf']['last_valid_uid'] = nil -default['dovecot']['conf']['first_valid_gid'] = nil -default['dovecot']['conf']['last_valid_gid'] = nil -default['dovecot']['conf']['mail_max_keyword_length'] = nil -default['dovecot']['conf']['valid_chroot_dirs'] = nil -default['dovecot']['conf']['mail_chroot'] = nil -default['dovecot']['conf']['auth_socket_path'] = nil -default['dovecot']['conf']['mail_plugin_dir'] = nil -default['dovecot']['conf']['mailbox_list_index'] = nil -default['dovecot']['conf']['mail_cache_min_mail_count'] = nil -default['dovecot']['conf']['mailbox_idle_check_interval'] = nil -default['dovecot']['conf']['mail_save_crlf'] = nil -default['dovecot']['conf']['mail_prefetch_count'] = nil -default['dovecot']['conf']['mail_temp_scan_interval'] = nil -default['dovecot']['conf']['maildir_stat_dirs'] = nil -default['dovecot']['conf']['maildir_copy_with_hardlinks'] = nil -default['dovecot']['conf']['maildir_very_dirty_syncs'] = nil -default['dovecot']['conf']['maildir_broken_filename_sizes'] = nil -default['dovecot']['conf']['maildir_empty_new'] = nil -default['dovecot']['conf']['mbox_read_locks'] = nil -default['dovecot']['conf']['mbox_write_locks'] = nil -default['dovecot']['conf']['mbox_lock_timeout'] = nil -default['dovecot']['conf']['mbox_dotlock_change_timeout'] = nil -default['dovecot']['conf']['mbox_dirty_syncs'] = nil -default['dovecot']['conf']['mbox_very_dirty_syncs'] = nil -default['dovecot']['conf']['mbox_lazy_writes'] = nil -default['dovecot']['conf']['mbox_min_index_size'] = nil -default['dovecot']['conf']['mbox_md5'] = nil -default['dovecot']['conf']['mdbox_rotate_size'] = nil -default['dovecot']['conf']['mdbox_rotate_interval'] = nil -default['dovecot']['conf']['mdbox_preallocate_space'] = nil -default['dovecot']['conf']['mail_attachment_min_size'] = nil -default['dovecot']['conf']['mail_attachment_fs'] = nil -default['dovecot']['conf']['mail_attachment_hash'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_master.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_master.rb deleted file mode 100644 index 15a9341dd..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_master.rb +++ /dev/null @@ -1,28 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_10_master -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# conf.d/10-master.conf - -default['dovecot']['conf']['default_process_limit'] = nil -default['dovecot']['conf']['default_client_limit'] = nil -default['dovecot']['conf']['default_vsz_limit'] = nil -default['dovecot']['conf']['default_login_user'] = nil -default['dovecot']['conf']['default_internal_user'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_replication.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_replication.rb deleted file mode 100644 index e83f18553..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_replication.rb +++ /dev/null @@ -1,24 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_10_replication -# Author:: Vassilis Aretakis () -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# conf.d/10-director.conf - -default['dovecot']['conf']['doveadm_port'] = nil -default['dovecot']['conf']['doveadm_password'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_ssl.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_ssl.rb deleted file mode 100644 index c1acc0267..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_10_ssl.rb +++ /dev/null @@ -1,76 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_10_ssl -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014-2015 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# conf.d/10-ssl.conf - -default['dovecot']['conf']['ssl'] = \ - if node['platform_family'] == 'suse' && node['platform_version'].to_i < 13 - false - end - -case node['platform_family'] -when 'rhel', 'fedora' - default['dovecot']['conf']['ssl_cert'] = '= 15.10 - default['dovecot']['conf']['ssl_cert'] = nil - default['dovecot']['conf']['ssl_key'] = nil - elsif node['platform_version'].to_f >= 14.04 - default['dovecot']['conf']['ssl_cert'] = '= 8 - default['dovecot']['conf']['ssl_cert'] = nil - default['dovecot']['conf']['ssl_key'] = nil - else - default['dovecot']['conf']['ssl_cert'] = ') -# Copyright:: Copyright (c) 2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# conf.d/15-lda.conf - -default['dovecot']['conf']['postmaster_address'] = nil -default['dovecot']['conf']['hostname'] = nil -default['dovecot']['conf']['quota_full_tempfail'] = nil -default['dovecot']['conf']['sendmail_path'] = nil -default['dovecot']['conf']['submission_host'] = nil -default['dovecot']['conf']['rejection_subject'] = nil -default['dovecot']['conf']['rejection_reason'] = nil -default['dovecot']['conf']['recipient_delimiter'] = nil -default['dovecot']['conf']['lda_original_recipient_header'] = nil -default['dovecot']['conf']['lda_mailbox_autocreate'] = nil -default['dovecot']['conf']['lda_mailbox_autosubscribe'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_20_lmtp.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_20_lmtp.rb deleted file mode 100644 index ed5837bef..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_20_lmtp.rb +++ /dev/null @@ -1,28 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_20_lmtp -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2016 Xabier de Zuazo -# Copyright:: Copyright (c) 2014-2015 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# conf.d/20-lmtp.conf - -default['dovecot']['conf']['lmtp_proxy'] = nil -default['dovecot']['conf']['lmtp_save_to_detail_mailbox'] = nil -default['dovecot']['conf']['lmtp_rcpt_check_quota'] = nil -default['dovecot']['conf']['lmtp_hdr_delivery_address'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot.rb deleted file mode 100644 index 784bc02b2..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot.rb +++ /dev/null @@ -1,36 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_dovecot -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014-2015 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# dovecot.conf - -default['dovecot']['conf']['listen'] = nil -default['dovecot']['conf']['base_dir'] = nil -default['dovecot']['conf']['instance_name'] = nil -default['dovecot']['conf']['login_greeting'] = nil -default['dovecot']['conf']['login_trusted_networks'] = nil -default['dovecot']['conf']['login_access_sockets'] = nil -default['dovecot']['conf']['auth_proxy_self'] = nil -default['dovecot']['conf']['verbose_proctitle'] = nil -default['dovecot']['conf']['shutdown_clients'] = nil -default['dovecot']['conf']['doveadm_worker_count'] = nil -default['dovecot']['conf']['doveadm_socket_path'] = nil -default['dovecot']['conf']['import_environment'] = nil -default['dovecot']['conf']['dict'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_db.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_db.rb deleted file mode 100644 index 9d5d59f37..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_db.rb +++ /dev/null @@ -1,24 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_dovecot_db -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# dovecot-db.conf.ext - -default['dovecot']['conf']['db'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_dict_auth.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_dict_auth.rb deleted file mode 100644 index e7dfd066f..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_dict_auth.rb +++ /dev/null @@ -1,30 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_dovecot_dict_auth -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# dovecot-dict-auth.conf.ext - -default['dovecot']['conf']['dict_auth']['uri'] = nil -default['dovecot']['conf']['dict_auth']['password_key'] = nil -default['dovecot']['conf']['dict_auth']['user_key'] = nil -default['dovecot']['conf']['dict_auth']['value_format'] = nil -default['dovecot']['conf']['dict_auth']['iterate_prefix'] = nil -default['dovecot']['conf']['dict_auth']['iterate_disable'] = nil -default['dovecot']['conf']['dict_auth']['default_pass_scheme'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_dict_sql.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_dict_sql.rb deleted file mode 100644 index 9b87baa75..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_dict_sql.rb +++ /dev/null @@ -1,24 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_dovecot_dict_sql -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# dovecot-dict-sql.conf.ext - -default['dovecot']['conf']['dict_sql']['connect'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_ldap.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_ldap.rb deleted file mode 100644 index a8d56522e..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_ldap.rb +++ /dev/null @@ -1,54 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_dovecot_ldap -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014-2015 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# dovecot-ldap.conf.ext - -default['dovecot']['conf']['ldap']['hosts'] = nil -default['dovecot']['conf']['ldap']['uris'] = nil -default['dovecot']['conf']['ldap']['dn'] = nil -default['dovecot']['conf']['ldap']['dnpass'] = nil -default['dovecot']['conf']['ldap']['sasl_bind'] = nil -default['dovecot']['conf']['ldap']['sasl_mech'] = nil -default['dovecot']['conf']['ldap']['sasl_realm'] = nil -default['dovecot']['conf']['ldap']['sasl_authz_id'] = nil -default['dovecot']['conf']['ldap']['tls'] = nil -default['dovecot']['conf']['ldap']['tls_ca_cert_file'] = nil -default['dovecot']['conf']['ldap']['tls_ca_cert_file'] = nil -default['dovecot']['conf']['ldap']['tls_ca_cert_dir'] = nil -default['dovecot']['conf']['ldap']['tls_cipher_suite'] = nil -default['dovecot']['conf']['ldap']['tls_cert_file'] = nil -default['dovecot']['conf']['ldap']['tls_key_file'] = nil -default['dovecot']['conf']['ldap']['tls_require_cert'] = nil -default['dovecot']['conf']['ldap']['ldaprc_path'] = nil -default['dovecot']['conf']['ldap']['debug_level'] = nil -default['dovecot']['conf']['ldap']['auth_bind'] = nil -default['dovecot']['conf']['ldap']['auth_bind_userdn'] = nil -default['dovecot']['conf']['ldap']['ldap_version'] = nil -default['dovecot']['conf']['ldap']['base'] = '' -default['dovecot']['conf']['ldap']['deref'] = nil -default['dovecot']['conf']['ldap']['scope'] = nil -default['dovecot']['conf']['ldap']['user_attrs'] = nil -default['dovecot']['conf']['ldap']['user_filter'] = nil -default['dovecot']['conf']['ldap']['pass_attrs'] = nil -default['dovecot']['conf']['ldap']['pass_filter'] = nil -default['dovecot']['conf']['ldap']['iterate_attrs'] = nil -default['dovecot']['conf']['ldap']['iterate_filter'] = nil -default['dovecot']['conf']['ldap']['default_pass_scheme'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_sql.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_sql.rb deleted file mode 100644 index 868184241..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_dovecot_sql.rb +++ /dev/null @@ -1,29 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_dovecot_sql -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# dovecot-sql.conf.ext - -default['dovecot']['conf']['sql']['driver'] = nil -default['dovecot']['conf']['sql']['connect'] = nil -default['dovecot']['conf']['sql']['default_pass_scheme'] = nil -default['dovecot']['conf']['sql']['password_query'] = nil -default['dovecot']['conf']['sql']['user_query'] = nil -default['dovecot']['conf']['sql']['iterate_query'] = nil diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_files.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/conf_files.rb deleted file mode 100644 index ff9c0b774..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/conf_files.rb +++ /dev/null @@ -1,79 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: conf_files -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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['dovecot']['conf_path'] = '/etc/dovecot' -default['dovecot']['conf_files_user'] = 'root' -default['dovecot']['conf_files_group'] = node['dovecot']['group'] -default['dovecot']['conf_files_mode'] = '00644' -default['dovecot']['conf']['password_file'] = - "#{node['dovecot']['conf_path']}/password" - -default['dovecot']['sensitive_files'] = %w( - *.conf.ext -) -default['dovecot']['sensitive_files_mode'] = '00640' - -default['dovecot']['conf_files']['core'] = %w( - conf.d/10-auth.conf - conf.d/10-director.conf - conf.d/10-logging.conf - conf.d/10-mail.conf - conf.d/10-master.conf - conf.d/10-ssl.conf - conf.d/10-tcpwrapper.conf - conf.d/15-lda.conf - conf.d/15-mailboxes.conf - conf.d/15-replication.conf - conf.d/90-acl.conf - conf.d/90-plugin.conf - conf.d/90-quota.conf - conf.d/auth-checkpassword.conf.ext - conf.d/auth-deny.conf.ext - conf.d/auth-dict.conf.ext - conf.d/auth-master.conf.ext - conf.d/auth-passwdfile.conf.ext - conf.d/auth-sql.conf.ext - conf.d/auth-static.conf.ext - conf.d/auth-system.conf.ext - conf.d/auth-vpopmail.conf.ext - dovecot.conf - dovecot-db.conf.ext - dovecot-dict-auth.conf.ext - dovecot-dict-sql.conf.ext - dovecot-sql.conf.ext -) -default['dovecot']['conf_files']['imap'] = %w( - conf.d/20-imap.conf -) -default['dovecot']['conf_files']['pop3'] = %w( - conf.d/20-pop3.conf -) -default['dovecot']['conf_files']['lmtp'] = %w( - conf.d/20-lmtp.conf -) -default['dovecot']['conf_files']['sieve'] = %w( - conf.d/20-managesieve.conf - conf.d/90-sieve.conf -) -default['dovecot']['conf_files']['ldap'] = %w( - dovecot-ldap.conf.ext - conf.d/auth-ldap.conf.ext -) diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/create_pwfile.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/create_pwfile.rb deleted file mode 100644 index a822e24fb..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/create_pwfile.rb +++ /dev/null @@ -1,23 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: create_pwfile -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2017 Xabier de Zuazo -# License:: Apache License, Version 2.0 -# -# Licensed 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['dovecot']['databag_name'] = 'dovecot' -default['dovecot']['databag_users_item'] = 'users' diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/default.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/default.rb deleted file mode 100644 index d06934cd4..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/default.rb +++ /dev/null @@ -1,36 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: default -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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['dovecot']['install_from'] = 'package' - -case node['platform_family'] -when 'rhel', 'fedora' - default['dovecot']['lib_path'] = '/usr/libexec/dovecot' -when 'suse' - default['dovecot']['lib_path'] = '/var/run/dovecot' -# when 'debian' -else - default['dovecot']['lib_path'] = '/usr/lib/dovecot' -end - -default['dovecot']['user'] = 'dovecot' -default['dovecot']['group'] = node['dovecot']['user'] -default['dovecot']['user_homedir'] = node['dovecot']['lib_path'] diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/namespaces.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/namespaces.rb deleted file mode 100644 index 00e944bc3..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/namespaces.rb +++ /dev/null @@ -1,22 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: default -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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['dovecot']['namespaces'] = [] diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/ohai_plugin.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/ohai_plugin.rb deleted file mode 100644 index 5b7d39a6e..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/ohai_plugin.rb +++ /dev/null @@ -1,22 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: ohai_plugin -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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['dovecot']['ohai_plugin']['build-options'] = true diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/packages.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/packages.rb deleted file mode 100644 index be831b027..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/packages.rb +++ /dev/null @@ -1,64 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: packages -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -case node['platform_family'] -when 'rhel', 'fedora' - default['dovecot']['packages']['core'] = %w(dovecot) - default['dovecot']['packages']['imap'] = [] # included inside core - default['dovecot']['packages']['pop3'] = [] # included inside core - default['dovecot']['packages']['lmtp'] = [] # included inside core - default['dovecot']['packages']['sieve'] = %w(dovecot-pigeonhole) - default['dovecot']['packages']['ldap'] = [] # included inside core - default['dovecot']['packages']['sqlite'] = [] # included inside core - default['dovecot']['packages']['mysql'] = %w(dovecot-mysql) - default['dovecot']['packages']['pgsql'] = %w(dovecot-pgsql) -when 'suse' - default['dovecot']['packages']['core'] = %w(dovecot) - default['dovecot']['packages']['imap'] = [] # included inside core - default['dovecot']['packages']['pop3'] = [] # included inside core - default['dovecot']['packages']['lmtp'] = [] # included inside core - default['dovecot']['packages']['sieve'] = [] # included inside core - default['dovecot']['packages']['ldap'] = [] # included inside core - default['dovecot']['packages']['sqlite'] = %w(dovecot-backend-sqlite) - default['dovecot']['packages']['mysql'] = %w(dovecot-backend-mysql) - default['dovecot']['packages']['pgsql'] = %w(dovecot-backend-pgsql) -when 'arch' # not tested - default['dovecot']['packages']['core'] = %w(dovecot) - default['dovecot']['packages']['imap'] = [] # included inside core - default['dovecot']['packages']['pop3'] = [] # included inside core - default['dovecot']['packages']['lmtp'] = [] # included inside core - default['dovecot']['packages']['sieve'] = %w(pigeonhole) - default['dovecot']['packages']['ldap'] = [] # included inside core - default['dovecot']['packages']['sqlite'] = [] # included inside core - default['dovecot']['packages']['mysql'] = [] # included inside core - default['dovecot']['packages']['pgsql'] = [] # included inside core -else # when 'debian' - default['dovecot']['packages']['core'] = %w(dovecot-core dovecot-gssapi) - default['dovecot']['packages']['imap'] = %w(dovecot-imapd) - default['dovecot']['packages']['pop3'] = %w(dovecot-pop3d) - default['dovecot']['packages']['lmtp'] = %w(dovecot-lmtpd) - default['dovecot']['packages']['sieve'] = - %w(dovecot-sieve dovecot-managesieved) - default['dovecot']['packages']['ldap'] = %w(dovecot-ldap) - default['dovecot']['packages']['sqlite'] = %w(dovecot-sqlite) - default['dovecot']['packages']['mysql'] = %w(dovecot-mysql) - default['dovecot']['packages']['pgsql'] = %w(dovecot-pgsql) -end diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/plugins.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/plugins.rb deleted file mode 100644 index adacb7c6a..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/plugins.rb +++ /dev/null @@ -1,28 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: plugins -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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['dovecot']['conf']['mail_plugins'] = [] - -default['dovecot']['plugins']['sieve'] = - { - 'sieve' => '~/.dovecot.sieve', - 'sieve_dir' => '~/sieve' - } diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/protocols.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/protocols.rb deleted file mode 100644 index b4ec27241..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/protocols.rb +++ /dev/null @@ -1,22 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: protocols -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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['dovecot']['protocols'] = {} diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/service.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/service.rb deleted file mode 100644 index 5826dbe22..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/service.rb +++ /dev/null @@ -1,41 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: service -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2015 Xabier de Zuazo -# License:: Apache License, Version 2.0 -# -# Licensed 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['dovecot']['service']['name'] = 'dovecot' - -default['dovecot']['service']['supports'] = - if node['platform_family'] == 'suse' && node['platform_version'].to_i < 13 - { restart: true, reload: false, status: true } - else - { restart: true, reload: true, status: true } - end - -default['dovecot']['service']['provider'] = - if node['platform'] == 'ubuntu' && - Gem::Requirement.new(['>= 13.10', '< 15']) - .satisfied_by?(Gem::Version.new(node['platform_version'])) - Chef::Provider::Service::Upstart - elsif (node['platform'] == 'debian' && node['platform_version'].to_i >= 8) || - (node['platform'] == 'ubuntu' && node['platform_version'].to_i >= 15) - Chef::Provider::Service::Debian - elsif node['platform_family'] == 'suse' && node['platform_version'].to_i == 12 - Chef::Provider::Service::Redhat - end diff --git a/lc-gdn-chef/cookbooks/dovecot/attributes/services.rb b/lc-gdn-chef/cookbooks/dovecot/attributes/services.rb deleted file mode 100644 index 84d5815e5..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/attributes/services.rb +++ /dev/null @@ -1,22 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Attributes:: services -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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['dovecot']['services'] = {} diff --git a/lc-gdn-chef/cookbooks/dovecot/libraries/auth.rb b/lc-gdn-chef/cookbooks/dovecot/libraries/auth.rb deleted file mode 100644 index 5b22629cd..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/libraries/auth.rb +++ /dev/null @@ -1,38 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Library:: auth -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -module DovecotCookbook - # Helpers module to check if the configuration contains a valid user or passdb - module Auth - def self.authdb?(type, auth) - auth.is_a?(Hash) && !auth.empty? && - (auth[type].is_a?(Hash) || auth[type].is_a?(Array)) - end - - def self.passdb?(auth) - authdb?('passdb', auth) - end - - def self.userdb?(auth) - authdb?('userdb', auth) - end - end -end diff --git a/lc-gdn-chef/cookbooks/dovecot/libraries/conf.rb b/lc-gdn-chef/cookbooks/dovecot/libraries/conf.rb deleted file mode 100644 index 718cc8d0f..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/libraries/conf.rb +++ /dev/null @@ -1,103 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Library:: conf -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2015 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -require 'erubis' - -module DovecotCookbook - # Helper module to generate configuration structures - module Conf - def self.name(str) - str =~ /\s/ ? "\"#{str}\"" : str - end - - def self.value(v, default = nil) - case v - when nil then default.to_s - when true then 'yes' - when false then 'no' - when Array then v.join(' ') - else - v.to_s - end - end - - def self.attribute(conf, k, default = nil) - v = conf[k] - v.nil? ? "##{k} = #{value(default)}" : "#{k} = #{value(v)}" - end - - def self.evaluate_template(template, context) - context = context.merge(dovecot_conf: DovecotCookbook::Conf) - eruby = Erubis::Eruby.new(template) - eruby.evaluate(context) - end - - def self.protocols(conf) - # dovecot: config: Fatal: Error in configuration file - # /etc/dovecot/dovecot.conf: protocols: Unknown protocol: lda - ignore_protos = %w(lda) - protos = DovecotCookbook::Protocols.list(conf) - ignore_protos - protos.empty? ? 'none' : protos.join(' ') - end - - def self.authdb(driver, type, conf) - template = DovecotCookbook::Conf::Templates::AUTHDB - evaluate_template(template, driver: driver, type: type, conf: conf) - end - - def self.plugin(_name, conf) - template = DovecotCookbook::Conf::Templates::PLUGIN - evaluate_template(template, conf: conf) - end - - def self.namespace(ns) - template = DovecotCookbook::Conf::Templates::NAMESPACE - evaluate_template(template, ns: ns) - end - - def self.protocol(name, conf) - template = DovecotCookbook::Conf::Templates::PROTOCOL - evaluate_template(template, name: name, conf: conf) - end - - def self.service(name, conf) - template = DovecotCookbook::Conf::Templates::SERVICE - evaluate_template(template, name: name, conf: conf) - end - - def self.map(map) - template = DovecotCookbook::Conf::Templates::MAP - evaluate_template(template, map: map) - end - - def self.require?(req, conf) - case req - when 'core' then true - when 'imap', 'pop3', 'lmtp' then Conf::Require.protocol?(req, conf) - when 'sieve' then Conf::Require.plugin?('sieve', conf) - when 'ldap' then Conf::Require.ldap?(conf['conf']) - when 'sqlite', 'mysql', 'pgsql' then Conf::Require.db?(req, conf['conf']) - else - raise "Unknown configuration requirement: #{req.inspect}" - end - end - end -end diff --git a/lc-gdn-chef/cookbooks/dovecot/libraries/conf_require.rb b/lc-gdn-chef/cookbooks/dovecot/libraries/conf_require.rb deleted file mode 100644 index a527fda90..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/libraries/conf_require.rb +++ /dev/null @@ -1,45 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Library:: conf_require -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014-2015 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -require 'erubis' - -module DovecotCookbook - module Conf - # Helper module to check configuration requirements - module Require - def self.protocol?(proto, gconf) - DovecotCookbook::Protocols.enabled?(proto, gconf['protocols']) - end - - def self.plugin?(plugin, gconf) - DovecotCookbook::Plugins.required?(plugin, gconf) - end - - def self.ldap?(conf) - [true, false].include?(conf['ldap']['auth_bind']) - end - - def self.db?(db, conf) - conf['sql']['driver'] == db - end - end - end -end diff --git a/lc-gdn-chef/cookbooks/dovecot/libraries/conf_templates.rb b/lc-gdn-chef/cookbooks/dovecot/libraries/conf_templates.rb deleted file mode 100644 index 7d2ea387c..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/libraries/conf_templates.rb +++ /dev/null @@ -1,150 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Library:: conf_templates -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -require 'erubis' - -module DovecotCookbook - module Conf - # Configuration structure templates - module Templates - AUTHDB = <<-EOT -<% confs = @conf.is_a?(Array)? @conf : [@conf] - confs.each do |conf| -%> -<%= @dovecot_conf.name(@type) %> { - <% unless conf.key?('driver') -%> - driver = <%= @driver %> - <% end -%> - <% conf.sort.each do |key, value| - unless value.nil? - -%> - <%= key %> = <%= @dovecot_conf.value(value) %> - <% end - end - -%> -} -<% end -%> -EOT - .freeze unless defined?(Conf::Templates::AUTHDB) - - PLUGIN = <<-EOT -plugin { - <% @conf.sort.each do |key, value| - unless value.nil? - -%> - <%= key %> = <%= @dovecot_conf.value(value) %> - <% end - end -%> -} -EOT - .freeze unless defined?(Conf::Templates::PLUGIN) - - NAMESPACE = <<-EOT -namespace <%= @dovecot_conf.name(@ns['name']) %> { - <% if @ns['mailboxes'].is_a?(Array) || @ns['mailboxes'].is_a?(Hash) - mailboxes = - if @ns['mailboxes'].is_a?(Array) - @ns['mailboxes'] - else - [@ns['mailboxes']] - end - mailboxes.each do |mailbox| - mailbox.sort.each do |key, values| - -%> - mailbox <%= @dovecot_conf.name(key) %> { - <% values.sort.each do |key, value| -%> - <%= key %> = <%= @dovecot_conf.value(value) %> - <% end -%> - } - <% end -%> - <% end -%> - <% end -%> - <% @ns.sort.each do |key, value| - next if key == 'mailboxes' - -%> - <%= key %> = <%= @dovecot_conf.value(value) %> - <% end -%> -} -EOT - .freeze unless defined?(Conf::Templates::NAMESPACE) - - PROTOCOL = <<-EOT -protocol <%= @dovecot_conf.name(@name) %> { - <% @conf.sort.each do |key, value| -%> - <%= key %> = <%= @dovecot_conf.value(value) %> - <% end -%> -} -EOT - .freeze unless defined?(Conf::Templates::PROTOCOL) - - SERVICE = <<-EOT -service <%= @dovecot_conf.name(@name) %> { - <% if @conf['listeners'].is_a?(Array) || @conf['listeners'].is_a?(Hash) - listeners = - if @conf['listeners'].is_a?(Array) - @conf['listeners'] - else - [@conf['listeners']] - end - listeners.each do |listener| - listener.sort.each do |service, values| - service_proto = service.split(':')[0] - service_name = service.split(':')[1] - -%> - <%= service_proto %>_listener <%= @dovecot_conf.name(service_name) %> { - <% values.sort.each do |key, value|-%> - <%= key %> = <%= @dovecot_conf.value(value) %> - <% end -%> - } - <% end -%> - <% end -%> - <% end -%> - <% @conf.sort.each do |key, value| - next if key == 'listeners' - -%> - <%= key %> = <%= @dovecot_conf.value(value) %> - <% end -%> -} -EOT - .freeze unless defined?(Conf::Templates::SERVICE) - - MAP = <<-EOT -map { -<% @map.sort.each do |k, v| - if v.is_a?(Hash) --%> - <%= @dovecot_conf.name(k) %> { -<% - v.sort.each do |k2, v2| --%> - <%= k2 %> = <%= @dovecot_conf.value(v2) %> -<% end -%> - } -<% else -%> - <%= k %> = <%= @dovecot_conf.value(v) %> -<% end - end --%> -} -EOT - .freeze unless defined?(Conf::Templates::MAP) - end - end -end diff --git a/lc-gdn-chef/cookbooks/dovecot/libraries/plugins.rb b/lc-gdn-chef/cookbooks/dovecot/libraries/plugins.rb deleted file mode 100644 index 34a3003a0..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/libraries/plugins.rb +++ /dev/null @@ -1,49 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Library:: plugins -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -module DovecotCookbook - # Helper module to check required plugins - module Plugins - def self.require_plugin?(plugin, conf) - conf.key?('mail_plugins') && - conf['mail_plugins'].include?(plugin) - end - - def self.required?(plugin, attrs) - attrs = attrs.to_hash - return true if require_plugin?(plugin, attrs['conf']) - attrs['protocols'].sort.each do |_protocol, conf| - return true if conf.is_a?(Hash) && require_plugin?(plugin, conf) - end - false - end - - def self.list_unknown(plugins) - known_plugins = %w( - mail_log - quota - acl - sieve - ) - plugins.keys - known_plugins - end - end -end diff --git a/lc-gdn-chef/cookbooks/dovecot/libraries/protocols.rb b/lc-gdn-chef/cookbooks/dovecot/libraries/protocols.rb deleted file mode 100644 index c275f0525..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/libraries/protocols.rb +++ /dev/null @@ -1,35 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Library:: protocols -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -module DovecotCookbook - # Helper module to check enabled protocols - module Protocols - def self.enabled?(proto, protos) - protos.key?(proto) && protos[proto].is_a?(Hash) - end - - def self.list(protos) - list = [] - protos.sort.each { |proto, conf| list.push(proto) if conf.is_a?(Hash) } - list - end - end -end diff --git a/lc-gdn-chef/cookbooks/dovecot/libraries/pwfile.rb b/lc-gdn-chef/cookbooks/dovecot/libraries/pwfile.rb deleted file mode 100644 index 0e47f8fdb..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/libraries/pwfile.rb +++ /dev/null @@ -1,163 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Library:: pwfile -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -module DovecotCookbook - # Helper module to check password file and import it - module Pwfile - extend Chef::Mixin::ShellOut - - # Checks if the file exists locally. - # - # @param localdata [String] File path. - # @return [Boolean] Whether the file exists. - def self.exists?(localdata) - ::File.exist?(localdata) - end - - # Reads a password file from this and it returns its contents as a hash. - # - # @param inputfile [String] File path. - # @return [Hash] The file contents. - def self.file_to_hash(inputfile) - output_entries = {} - File.open(inputfile, File::RDONLY | File::CREAT, 0640) do |passwordfile| - passwordfile.readlines.each do |line| - user, data = fileline_to_userdb_hash(line) - output_entries[user] = data - end - end - output_entries - end - - # Returns Password file in userdb style hash and if exists. - # - # @param input [String] The path of the file. - # @return [Array] An array with two values: The input in hash format and - # whether the file exists on the disk or not. - # @api public - def self.passfile_read(input) - [file_to_hash(input), exists?(input)] - end - - # Returns a hash of details taken from the userdb file line. - # - # @param input [String] A line of input. - def self.fileline_to_userdb_hash(input) - data = [nil] * 7 - if input.strip.split(':').length == 2 - user, data[0] = input.strip.split(':') - else - user = input.strip.split(':')[0] - data = input.strip.split(':')[1..7] - end - [user, data] - end - - # Returns an array with 8 values to use with user copy. - # - # @param key [String] The name, or the first value to be included in the - # final array. - # @param value [String, Array] An array of values to be added to the key. - # @return [Array] An array of length 8 with the format - # `[key, value1, value2, ..., value7]`. The array is filled with `nil` - # values if there are less than 7 values in `value` array. - def self.dbentry_to_array(key, value) - if value.is_a?(Array) - [key] + (value + ([nil] * (7 - value.size))) - else - [key, value] + ([nil] * 6) - end - end - - # Checks if a plain text password matches a specific encrypted password. - # - # @param hashed_pw [String] The password encrypted. - # @param plaintext_pw [String] The password in clear text. - # @return [Boolean] Whether the two passwords are the same. - def self.password_valid?(hashed_pw, plaintext_pw) - shell_out("/usr/bin/doveadm pw -t '#{hashed_pw}' -p '#{plaintext_pw}'") - .exitstatus == 0 - end - - # Checks if two arrays contain the same values. - # - # @param array1 [Array] The first array. - # @param array2 [Array] The second array. - # @return [Boolean] Returns `true` if both arrays contain the same values. - # @api public - def self.arrays_same?(array1, array2) - (array1 - array2).empty? && (array2 - array1).empty? - end - - # Encrypts a plain text password. - # - # @param plaintextpass [String] The password to encrypt. - # @return [String] The password encrypted. - def self.encrypt_password(plaintextpass) - shell_out("/usr/bin/doveadm pw -s MD5 -p '#{plaintextpass}'") - .stdout.tr("\n", '') - end - - # Generates the user password on the disk password file only if required. - # - # @param input_creds [Array] Credentials on disk for a user. - # @param plaintextpass [String] The password to encrypt. - # @param updated [Boolean] Previous values of whether any user has been - # updated. - # @param file_exists [Boolean] Whether the local file already exists. - # @return [Array] An array with two values: the encrypted password and - # whether it needs to be updated on disk. - def self.generate_userpass(input_creds, plaintextpass, updated, file_exists) - if !input_creds.nil? && file_exists == true && - password_valid?(input_creds[0], plaintextpass) - return [input_creds[0], updated] - end - [encrypt_password(plaintextpass), true] - end - - # Update users credentials only if required. - # - # The `credentials` parameter is updated with all the credentials. - # - # @param databag_users [Hash] User list read from the Data Bag. - # @param current_users [Hash] User list read from a file on the disk. - # @param pwfile_exists [Boolean] Whether exists a file on the disk. - # @param prev_updated [Boolean] Previous values of this function return - # value. - # @param credentials [Array] The list of credentials. This value is - # populated by this function with the generated (encrypted) credentials - # ready to be written to disk. - # @return [Boolean] `true` if any user has been updated. - # @api public - def self.compile_users( - databag_users, current_users, pwfile_exists, prev_updated, credentials - ) - databag_users.reduce(prev_updated) do |updated, (username, user_details)| - current_user = dbentry_to_array(username, user_details) - current_user[1], updated = - generate_userpass( - current_users[username], current_user[1], updated, pwfile_exists) - credentials.push(current_user) - updated - end - end - end -end diff --git a/lc-gdn-chef/cookbooks/dovecot/metadata.rb b/lc-gdn-chef/cookbooks/dovecot/metadata.rb deleted file mode 100644 index b4361d528..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/metadata.rb +++ /dev/null @@ -1,1884 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2016 Xabier de Zuazo -# Copyright:: Copyright (c) 2013-2015 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -name 'dovecot' -maintainer 'Xabier de Zuazo' -maintainer_email 'xabier@zuazo.org' -license 'Apache 2.0' -description <<-EOH -Installs and configures Dovecot, open source IMAP and POP3 email server. -EOH -long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) -version '3.2.1' - -if respond_to?(:source_url) - source_url "https://github.com/zuazo/#{name}-cookbook" -end -if respond_to?(:issues_url) - issues_url "https://github.com/zuazo/#{name}-cookbook/issues" -end - -chef_version '>= 12' if respond_to?(:chef_version) - -supports 'amazon' -supports 'centos', '>= 6.0' -supports 'debian', '>= 7.0' -supports 'fedora', '>= 18.0' -supports 'opensuse' -supports 'oracle', '>= 6.0' -supports 'scientific', '>= 6.0' -supports 'suse' -supports 'ubuntu', '>= 12.04' - -depends 'ohai', '~> 4.0' - -recipe 'dovecot::default', 'Installs and configures Dovecot.' -recipe 'dovecot::user', 'Creates the dovecot system user.' -recipe 'dovecot::conf_files', 'Generates all the configuration files.' -recipe 'dovecot::ohai_plugin', - 'Provides an Ohai plugin for reading dovecot install information.' -recipe 'dovecot::from_package', 'Installs the required packages.' -recipe 'dovecot::service', 'Configures the Dovecot service.' -recipe 'dovecot::create_pwfile', 'Creates a userdb password file from databag.' - -attribute 'dovecot/install_from', - display_name: 'dovecot install method', - description: - 'Determines how Dovecot is installed from. Only `package` is '\ - 'supported for now.', - type: 'string', - required: 'optional', - default: '"package"' - -attribute 'dovecot/user', - display_name: 'dovecot user', - description: 'Dovecot system user. Should no be changed.', - type: 'string', - required: 'optional', - default: '"dovecot"' - -attribute 'dovecot/group', - display_name: 'dovecot group', - description: 'Dovecot system group. Should no be changed.', - type: 'string', - required: 'optional', - default: '"dovecot"' - -attribute 'dovecot/databag_name', - display_name: 'Databag name', - description: 'The name of the databag to use', - type: 'string', - required: 'optional', - default: '"dovecot"' - -attribute 'dovecot/databag_users_item', - display_name: 'Databag users item name', - description: 'The name item to put the users in', - type: 'string', - required: 'optional', - default: '"users"' - -attribute 'dovecot/user_homedir', - display_name: 'dovecot homedir', - description: 'Dovecot system user home directory.', - calculated: true, - type: 'string', - required: 'optional' - -attribute 'dovecot/lib_path', - display_name: 'dovecot library path', - description: 'Dovecot library path. Should no be changed.', - calculated: true, - type: 'string', - required: 'optional' - -attribute 'dovecot/conf_path', - display_name: 'dovecot configuration path', - description: - 'Dovecot configruration files path. Should no be changed.', - type: 'string', - required: 'optional', - default: '"/etc/dovecot"' - -attribute 'dovecot/conf_files_user', - display_name: 'dovecot configuration files user', - description: 'System user owner of configuration files.', - type: 'string', - required: 'optional', - default: '"root"' - -attribute 'dovecot/conf_files_group', - display_name: 'dovecot configuration files group', - description: 'System group owner of configuration files.', - type: 'string', - required: 'optional', - default: 'node["dovecot"]["group"]' - -attribute 'dovecot/conf_files_mode', - display_name: 'dovecot configuration files mode', - description: 'Configuration files system file mode bits.', - type: 'string', - required: 'optional', - default: '00644' - -attribute 'dovecot/conf/password_file', - display_name: 'path of password file', - description: 'The path and filename of the password file', - type: 'string', - required: 'optional', - default: 'node["dovecot"]["conf_path"]/password' - -attribute 'dovecot/sensitive_files', - display_name: 'dovecot sensitve files', - description: - 'An array of dovecot sensitive configuration files. Each array '\ - 'item can be a glob expression or a fixed file name. This file '\ - 'names should be relative to node["dovecot"]["conf_path"] '\ - 'directory. Example: [ "dovecot-sql.conf.ext", "*-auth.conf.ext", '\ - '"conf.d/auth-supersecret.conf.ext" ]', - type: 'array', - required: 'optional', - default: %w(*.conf.ext) - -attribute 'dovecot/sensitive_files_mode', - display_name: 'dovecot sensitve files mode', - description: - 'Configuration files system file mode bits for sensitve files.', - type: 'string', - required: 'optional', - default: '00640' - -attribute 'dovecot/conf_files/core', - display_name: 'dovecot core configuration files', - description: 'Dovecot core configuration files list.', - type: 'array', - required: 'optional', - default: %w( - conf.d/10-auth.conf - conf.d/10-director.conf - conf.d/10-logging.conf - conf.d/10-mail.conf - conf.d/10-master.conf - conf.d/10-ssl.conf - conf.d/10-tcpwrapper.conf - conf.d/15-lda.conf - conf.d/15-mailboxes.conf - conf.d/90-acl.conf - conf.d/90-plugin.conf - conf.d/90-quota.conf - conf.d/auth-checkpassword.conf.ext - conf.d/auth-deny.conf.ext - conf.d/auth-master.conf.ext - conf.d/auth-passwdfile.conf.ext - conf.d/auth-sql.conf.ext - conf.d/auth-static.conf.ext - conf.d/auth-system.conf.ext - conf.d/auth-vpopmail.conf.ext - dovecot.conf - dovecot-db.conf.ext - dovecot-dict-sql.conf.ext - dovecot-sql.conf.ext - ) - -attribute 'dovecot/conf_files/imap', - display_name: 'dovecot imap configuration files', - description: 'Dovecot IMAP configuration files list.', - type: 'array', - required: 'optional', - default: %w(conf.d/20-imap.conf) - -attribute 'dovecot/conf_files/pop3', - display_name: 'dovecot pop3 configuration files', - description: 'Dovecot POP3 configuration files list.', - type: 'array', - required: 'optional', - default: %w(conf.d/20-pop3.conf) - -attribute 'dovecot/conf_files/lmtp', - display_name: 'dovecot lmtp configuration files', - description: 'Dovecot LMTP configuration files list.', - type: 'array', - required: 'optional', - default: %w(conf.d/20-lmtp.conf) - -attribute 'dovecot/conf_files/sieve', - display_name: 'dovecot sieve configuration files', - description: 'Dovecot Sieve configuration files list.', - type: 'array', - required: 'optional', - default: %w( - conf.d/20-managesieve.conf - conf.d/90-sieve.conf - ) - -attribute 'dovecot/conf_files/ldap', - display_name: 'dovecot ldap configuration files', - description: 'Dovecot LDAP configuration files list.', - type: 'array', - required: 'optional', - default: %w( - dovecot-ldap.conf.ext - conf.d/auth-ldap.conf.ext - ) - -attribute 'dovecot/auth', - display_name: 'dovecot auth', - description: - 'Dovecot Authentication Databases as a hash of hashes. Supported '\ - 'authdbs: checkpassword, deny, ldap, master, passwdfile, sql, '\ - 'system and vpopmail.', - type: 'hash', - required: 'optional', - default: {} - -attribute 'dovecot/namespaces', - display_name: 'dovecot namespaces', - description: 'Dovecot Namespaces as an array of hashes.', - type: 'array', - required: 'optional', - default: [] - -attribute 'dovecot/plugins', - display_name: 'dovecot plugins', - description: - 'Dovecot Plugins configuration as a hash of hashes. Supported '\ - 'plugins: mail_log, acl and quota.', - type: 'hash', - required: 'optional', - default: { - 'sieve' => { - 'sieve' => '~/.dovecot.sieve', - 'sieve_dir' => '~/sieve' - } - } - -attribute 'dovecot/protocols', - display_name: 'dovecot protocols', - description: - 'Dovecot Protocols configuration as a hash of hashes. Supported '\ - 'protocols: lda, imap, lmtp, sieve and pop3.', - type: 'hash', - required: 'optional', - default: {} - -attribute 'dovecot/services', - display_name: 'dovecot services', - description: - 'Dovecot Services configuration as a hash of hashes. Supported '\ - 'services: anvil, director, imap-login, pop3-login, lmtp, imap, '\ - 'pop3, auth, auth-worker, dict, tcpwrap, managesieve-login, '\ - 'managesieve, quota-status, quota-warning, doveadm, config, '\ - 'aggregator, replicator', - type: 'hash', - required: 'optional', - default: {} - -grouping 'dovecot/conf', - title: 'dovecot conf', - description: 'Dovecot configuration values' - -attribute 'dovecot/conf/mail_plugins', - display_name: 'dovecot mail plugins', - description: 'Dovecot default enabled mail_plugins.', - type: 'array', - required: 'optional', - default: [] - -grouping 'dovecot/packages', - title: 'dovecot packages', - description: 'Dovecot packages' - -attribute 'dovecot/packages/core', - display_name: 'dovecot core packages', - description: 'Dovecot core package names array.', - type: 'array', - required: 'optional', - calculated: true - -attribute 'dovecot/packages/imap', - display_name: 'dovecot imap packages', - description: 'Dovecot IMAP package names array.', - type: 'array', - required: 'optional', - calculated: true - -attribute 'dovecot/packages/pop3', - display_name: 'dovecot pop3 packages', - description: 'Dovecot POP3 package names array.', - type: 'array', - required: 'optional', - calculated: true - -attribute 'dovecot/packages/lmtp', - display_name: 'dovecot lmtp packages', - description: 'Dovecot LMTP package names array.', - type: 'array', - required: 'optional', - calculated: true - -attribute 'dovecot/packages/sieve', - display_name: 'dovecot sieve packages', - description: 'Dovecot Sieve package names array.', - type: 'array', - required: 'optional', - calculated: true - -attribute 'dovecot/packages/ldap', - display_name: 'dovecot ldap packages', - description: 'Dovecot LDAP package names array.', - type: 'array', - required: 'optional', - calculated: true - -attribute 'dovecot/packages/sqlite', - display_name: 'dovecot sqlite packages', - description: 'Dovecot SQLite package names array.', - type: 'array', - required: 'optional', - calculated: true - -attribute 'dovecot/packages/mysql', - display_name: 'dovecot mysql packages', - description: 'Dovecot MySQL package names array.', - type: 'array', - required: 'optional', - calculated: true - -attribute 'dovecot/packages/pgsql', - display_name: 'dovecot pgsql packages', - description: 'Dovecot PostgreSQL package names array.', - type: 'array', - required: 'optional', - calculated: true - -grouping 'dovecot/service', - title: 'dovecot service', - description: 'Dovecot system service' - -attribute 'dovecot/service/name', - display_name: 'dovecot service name', - description: 'Dovecot system service name.', - type: 'string', - required: 'optional', - default: 'dovecot' - -attribute 'dovecot/service/supports', - display_name: 'dovecot service supports', - description: 'Dovecot service supported actions.', - type: 'hash', - required: 'optional', - calculated: true - -attribute 'dovecot/service/provider', - display_name: 'dovecot service provider', - description: 'Dovecot service Chef provider class.', - type: 'string', # 'class' really - required: 'optional', - calculated: true - -attribute 'dovecot/ohai_plugin/build-options', - display_name: 'dovecot ohai plugin build options', - description: - 'Whether to enable reading build options inside ohai plugin. Can '\ - 'be disabled to be lighter.', - type: 'string', - required: 'optional', - choice: %w(true false), - default: 'true' - -# dovecot.conf - -attribute 'dovecot/conf/listen', - display_name: 'listen', - description: - 'A comma separated list of IPs or hosts where to listen in for '\ - 'connections.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/base_dir', - display_name: 'dovecot base dir', - description: 'Base directory where to store runtime data.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/instance_name', - display_name: 'instance name', - description: - 'Name of this instance. Used to prefix all Dovecot processes in '\ - 'ps output.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/login_greeting', - display_name: 'login greeting', - description: 'Greeting message for clients.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/login_trusted_networks', - display_name: 'login trusted networks', - description: 'Space separated list of trusted network ranges.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/login_access_sockets', - display_name: 'login access sockets', - description: 'Space separated list of login access check sockets.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_proxy_self', - display_name: 'auth proxy self', - description: - 'With proxy_maybe=yes if proxy destination matches any of these '\ - 'IPs, don\'t do proxying.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/verbose_proctitle', - display_name: 'verbose proctitle', - description: 'Show more verbose process titles (in ps).', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/shutdown_clients', - display_name: 'shutdown clients', - description: - 'Should all processes be killed when Dovecot master process shuts '\ - 'down.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/doveadm_port', - display_name: 'doveadm port', - description: - 'If non-zero, doveadm cli will use this port to communicate with '\ - 'doveadm server.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/doveadm_password', - display_name: 'doveadm password', - description: - 'If not empty, the doveadm server replication communication will '\ - 'use that secret.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/doveadm_worker_count', - display_name: 'doveadm worker count', - description: - 'If non-zero, run mail commands via this many connections to '\ - 'doveadm server.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/doveadm_socket_path', - display_name: 'doveadm socket path', - description: - 'UNIX socket or host:port used for connecting to doveadm server.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/import_environment', - display_name: 'import environment', - description: - 'Space separated list of environment variables that are preserved '\ - 'on Dovecot startup and his childs.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/dict', - display_name: 'dict', - description: 'Dictionary server settings as a hash.', - type: 'hash', - required: 'optional', - default: nil - -# conf.d/10-auth.conf - -attribute 'dovecot/conf/disable_plaintext_auth', - display_name: 'disable plaintext auth', - description: - 'Disable LOGIN command and all other plaintext authentications '\ - 'unless SSL/TLS is used.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_cache_size', - display_name: 'auth cache size', - description: - 'Authentication cache size (e.g. 10M). 0 means it\'s disabled.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_cache_ttl', - display_name: 'auth cache ttl', - description: 'Time to live for cached data.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_cache_negative_ttl', - display_name: 'auth cache negative ttl', - description: - 'TTL for negative hits (user not found, password mismatch).', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_realms', - display_name: 'disable plaintext auth', - description: - 'Space separated list (or array) of realms for SASL '\ - 'authentication mechanisms that need them.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_default_realm', - display_name: 'auth default realm', - description: 'Default realm/domain to use if none was specified.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_username_chars', - display_name: 'auth username chars', - description: 'List of allowed characters in username.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_username_translation', - display_name: 'auth username translation', - description: - 'Username character translations before it\'s looked up from '\ - 'databases.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_username_format', - display_name: 'auth username format', - description: - 'Username formatting before it\'s looked up from databases.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_master_user_separator', - display_name: 'auth master user separator', - description: - 'If you want to allow master users to log in by specifying the '\ - 'master username within the normal username string, you can '\ - 'specify the separator character here (format: '\ - ').', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_anonymous_username', - display_name: 'auth anonymous username', - description: - 'Username to use for users logging in with ANONYMOUS SASL '\ - 'mechanism.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_worker_max_count', - display_name: 'auth worker max count', - description: 'Maximum number of dovecot-auth worker processes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_gssapi_hostname', - display_name: 'auth gssapi hostname', - description: 'Host name to use in GSSAPI principal names.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_krb5_keytab', - display_name: 'auth krb5 keytab', - description: 'Kerberos keytab to use for the GSSAPI mechanism.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_use_winbind', - display_name: 'auth use winbind', - description: - 'Do NTLM and GSS-SPNEGO authentication using Samba\'s winbind '\ - 'daemon and ntlm_auth helper.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_winbind_helper_path', - display_name: 'auth winbind helper path', - description: 'Path for Samba\'s ntlm_auth helper binary.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_failure_delay', - display_name: 'auth failure delay', - description: - 'Time to delay before replying to failed authentications.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_ssl_require_client_cert', - display_name: 'auth ssl require client cert', - description: - 'Take the username from client\'s SSL certificate, using '\ - 'X509_NAME_get_text_by_NID() which returns the subject\'s DN\'s '\ - 'CommonName.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_mechanisms', - display_name: 'auth mechanisms', - description: - 'Space separated list of wanted authentication mechanisms: plain, '\ - 'login, digest-md5, cram-md5, ntlm, rpa, apop, anonymous, gssapi, '\ - 'otp, skey, gss-spnego', - type: 'string', - required: 'optional', - default: '"plain"' - -# conf.d/10-director.conf - -attribute 'dovecot/conf/director_servers', - display_name: 'director servers', - description: - 'List of IPs or hostnames to all director servers, including '\ - 'ourself (as a string or as an array).', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/director_mail_servers', - display_name: 'director mail servers', - description: 'List of IPs or hostnames to all backend mail servers.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/director_user_expire', - display_name: 'director_user_expire', - description: - 'How long to redirect users to a specific server after it no '\ - 'longer has any connections.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/director_doveadm_port', - display_name: 'director doveadm port', - description: - 'TCP/IP port that accepts doveadm connections (instead of '\ - 'director connections).', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/director_username_hash', - display_name: 'director username hash', - description: - 'How the username is translated before being hashed.', - type: 'string', - required: 'optional', - default: 'nil' - -# conf.d/10-logging.conf - -attribute 'dovecot/conf/log_path', - display_name: 'path', - description: - 'Log file to use for error messages. "syslog" logs to syslog, '\ - '/dev/stderr logs to stderr.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/info_log_path', - display_name: 'info log path', - description: - 'Log file to use for informational messages. Defaults to log_path.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/debug_log_path', - display_name: 'debug log path', - description: - 'Log file to use for debug messages. Defaults to info_log_path.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/syslog_facility', - display_name: 'syslog facility', - description: 'Syslog facility to use if you\'re logging to syslog.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_verbose', - display_name: 'auth verbose', - description: - 'Log unsuccessful authentication attempts and the reasons why '\ - 'they failed.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_verbose_passwords', - display_name: 'auth verbose passwords', - description: - 'In case of password mismatches, log the attempted password.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_debug', - display_name: 'auth debug', - description: 'Even more verbose logging for debugging purposes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_debug_passwords', - display_name: 'auth debug passwords', - description: - 'In case of password mismatches, log the passwords and used '\ - 'scheme so the problem can be debugged.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_debug', - display_name: 'mail debug', - description: 'Enable mail process debugging.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/verbose_ssl', - display_name: 'verbose ssl', - description: 'Show protocol level SSL errors.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/log_timestamp', - display_name: 'log timestamp', - description: 'Prefix for each line written to log file.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/login_log_format_elements', - display_name: 'login log format elements', - description: - 'Space-separated list (or array) of elements we want to log.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/login_log_format', - display_name: 'login log format', - description: 'Login log format.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_log_prefix', - display_name: 'mail log prefix', - description: 'Log prefix for mail processes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/deliver_log_format', - display_name: 'deliver log format', - description: 'Format to use for logging mail deliveries.', - type: 'string', - required: 'optional', - default: 'nil' - -# conf.d/10-mail.conf - -attribute 'dovecot/conf/mail_location', - display_name: 'mail location', - description: 'Location for user\'s mailboxes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_shared_explicit_inbox', - display_name: 'mail shared explicit inbox', - description: - 'Should shared INBOX be visible as "shared/user" or '\ - '"shared/user/INBOX"?', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_uid', - display_name: 'mail uid', - description: 'System user used to access mails.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_gid', - display_name: 'mail gid', - description: 'System group used to access mails.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_privileged_group', - display_name: 'mail privileged group', - description: 'Group to enable temporarily for privileged operations.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_access_groups', - display_name: 'mail access groups', - description: - 'Grant access to these supplementary groups for mail processes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_full_filesystem_access', - display_name: 'mail full filesystem access', - description: 'Allow full filesystem access to clients.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_attribute_dict', - display_name: 'mail attribute dict', - description: 'Dictionary for key=value mailbox attributes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_server_comment', - display_name: 'mail server comment', - description: 'A comment or note that is associated with the server.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_server_admin', - display_name: 'mail server admin', - description: - 'Indicates a method for contacting the server administrator. '\ - 'This value MUST be a URI.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mmap_disable', - display_name: 'mmap disable', - description: 'Don\'t use mmap() at all.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/dotlock_use_excl', - display_name: 'dotlock use excl', - description: 'Rely on O_EXCL to work when creating dotlock files.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_fsync', - display_name: 'mail fsync', - description: - 'When to use fsync() or fdatasync() calls: optimized, always or '\ - 'never', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_nfs_storage', - display_name: 'mail nfs storage', - description: 'Mail storage exists in NFS.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_nfs_index', - display_name: 'mail nfs index', - description: 'Mail index files also exist in NFS.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/lock_method', - display_name: 'lock method', - description: - 'Locking method for index files: fcntl, flock or dotlock.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_temp_dir', - display_name: 'mail temp dir', - description: - 'Directory in which LDA/LMTP temporarily stores incoming mails '\ - '>128 kB.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/first_valid_uid', - display_name: 'first valid uid', - description: 'Valid UID range for users, defaults to 500 and above.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/last_valid_uid', - display_name: 'last valid uid', - description: 'Valid UID range for users, defaults to 500 and above.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/first_valid_gid', - display_name: 'first valid gid', - description: 'Valid GID range for users, defaults to non-root/wheel.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/last_valid_gid', - display_name: 'last valid gid', - description: 'Valid GID range for users, defaults to non-root/wheel.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_max_keyword_length', - display_name: 'mail max keyword length', - description: 'Maximum allowed length for mail keyword name.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/valid_chroot_dirs', - display_name: 'valid chroot dirs', - description: - '\':\' separated list of directories under which chrooting is '\ - 'allowed for mail processes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_chroot', - display_name: 'mail chroot', - description: 'Default chroot directory for mail processes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/auth_socket_path', - display_name: 'auth socket path', - description: - 'UNIX socket path to master authentication server to find users.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_plugin_dir', - display_name: 'mail plugin dir', - description: 'Directory where to look up mail plugins.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_cache_min_mail_count', - display_name: 'mail cache min mail count', - description: - 'The minimum number of mails in a mailbox before updates are done '\ - 'to cache file.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mailbox_idle_check_interval', - display_name: 'mailbox idle check interval', - description: - 'When IDLE command is running, mailbox is checked once in a while '\ - 'to see if there are any new mails or other changes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_save_crlf', - display_name: 'mail save crlf', - description: 'Save mails with CR+LF instead of plain LF.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_prefetch_count', - display_name: 'mail prefetch count', - description: - 'Max number of mails to keep open and prefetch to memory.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_temp_scan_interval', - display_name: 'mail temp scan interval', - description: - 'How often to scan for stale temporary files and delete them '\ - '(0 = never).', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/maildir_stat_dirs', - display_name: 'maildir stat dirs', - description: - 'By default LIST command returns all entries in maildir beginning '\ - 'with a dot.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/maildir_copy_with_hardlinks', - display_name: 'maildir copy with hardlinks', - description: - 'When copying a message, do it with hard links whenever possible.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/maildir_very_dirty_syncs', - display_name: 'maildir very dirty syncs', - description: 'Assume Dovecot is the only MUA accessing Maildir.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/maildir_broken_filename_sizes', - display_name: 'maildir broken filename sizes', - description: - 'If enabled, Dovecot doesn\'t use the S= in the Maildir '\ - 'filenames for getting the mail\'s physical size, except when '\ - 'recalculating Maildir++ quota.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/maildir_empty_new', - display_name: 'maildir empty new', - description: - 'Always move mails from new/ directory to cur/, even when the '\ - '\Recent flags aren\'t being reset.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mbox_read_locks', - display_name: 'mbox read locks', - description: - 'Which read locking methods to use for locking mbox: dotlock, '\ - 'dotlock_try, fcntl, flock or lockfyy', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mbox_write_locks', - display_name: 'mbox write locks', - description: - 'Which write locking methods to use for locking mbox: dotlock, '\ - 'dotlock_try, fcntl, flock or lockfyy', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mbox_lock_timeout', - display_name: 'mbox lock timeout', - description: - 'Maximum time to wait for lock (all of them) before aborting.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mbox_dotlock_change_timeout', - display_name: 'mbox dotlock change timeout', - description: - 'If dotlock exists but the mailbox isn\'t modified in any way, '\ - 'override the lock file after this much time.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mbox_dirty_syncs', - display_name: 'mbox dirty syncs', - description: - 'When mbox changes unexpectedly simply read the new mails but '\ - 'still safely fallbacks to re-reading the whole mbox file '\ - 'whenever something in mbox isn\'t how it\'s expected to be.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mbox_very_dirty_syncs', - display_name: 'mbox very dirty syncs', - description: - 'Like mbox_dirty_syncs, but don\'t do full syncs even with '\ - 'SELECT, EXAMINE, EXPUNGE or CHECK commands.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mbox_lazy_writes', - display_name: 'mbox lazy writes', - description: - 'Delay writing mbox headers until doing a full write sync '\ - '(EXPUNGE and CHECK commands and when closing the mailbox).', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mbox_min_index_size', - display_name: 'mbox min index size', - description: - 'If mbox size is smaller than this (e.g. 100k), don\'t write '\ - 'index files.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mbox_md5', - display_name: 'mbox md5', - description: - 'Mail header selection algorithm to use for MD5 POP3 UIDLs when '\ - 'pop3_uidl_format=%m.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mdbox_rotate_size', - display_name: 'mdbox rotate size', - description: 'Maximum dbox file size until it\'s rotated.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mdbox_rotate_interval', - display_name: 'mdbox rotate interval', - description: 'Maximum dbox file age until it\'s rotated.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mdbox_preallocate_space', - display_name: 'mdbox preallocate space', - description: - 'When creating new mdbox files, immediately preallocate their '\ - 'size to mdbox_rotate_size.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_attachment_dir', - display_name: 'mail attachment dir', - description: - 'Directory root where to store mail attachments. Disabled, if '\ - 'empty.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_attachment_min_size', - display_name: 'mail attachment min size', - description: - 'Attachments smaller than this aren\'t saved externally.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_attachment_fs', - display_name: 'mail attachment fs', - description: - 'Filesystem backend to use for saving attachments: posix, sis '\ - 'posix or sis-queue posix.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/mail_attachment_hash', - display_name: 'mail attachment hash', - description: 'Hash format to use in attachment filenames.', - type: 'string', - required: 'optional', - default: 'nil' - -# conf.d/10-master.conf - -attribute 'dovecot/conf/default_process_limit', - display_name: 'default process limit', - description: 'Default process limit.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/default_client_limit', - display_name: 'default client limit', - description: 'Default client limit.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/default_vsz_limit', - display_name: 'default vsz limit', - description: - 'Default VSZ (virtual memory size) limit for service processes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/default_login_user', - display_name: 'default login user', - description: 'Login user is internally used by login processes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/default_internal_user', - display_name: 'default internal user', - description: 'Internal user is used by unprivileged processes.', - type: 'string', - required: 'optional', - default: 'nil' - -# conf.d/10-ssl.conf - -attribute 'dovecot/conf/ssl', - display_name: 'ssl', - description: 'SSL/TLS support: true or false', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_cert', - display_name: 'ssl cert', - description: 'PEM encoded X.509 SSL/TLS certificate.', - calculated: true, - type: 'string', - required: 'optional' - -attribute 'dovecot/conf/ssl_key', - display_name: 'ssl key', - description: 'PEM encoded X.509 SSL/TLS private key.', - calculated: true, - type: 'string', - required: 'optional' - -attribute 'dovecot/conf/ssl_key_password', - display_name: 'ssl key password', - description: - 'If key file is password protected, give the password here.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_ca', - display_name: 'ssl ca', - description: 'PEM encoded trusted certificate authority.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_require_crl', - display_name: 'ssl require crl', - description: - 'Require that CRL check succeeds for client certificates.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_client_ca_dir', - display_name: 'ssl client ca dir', - description: - 'Directory for trusted SSL CA certificates. These are used only '\ - 'when Dovecot needs to act as an SSL client..', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_client_ca_file', - display_name: 'ssl client ca file', - description: - 'File for trusted SSL CA certificates. These are used only when '\ - 'Dovecot needs to act as an SSL client.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_verify_client_cert', - display_name: 'ssl verify client cert', - description: 'Request client to send a certificate.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_cert_username_field', - display_name: 'ssl cert username field', - description: 'Which field from certificate to use for username.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_parameters_regenerate', - display_name: 'ssl parameters regenerate', - description: 'How often to regenerate the SSL parameters file.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_dh_parameters_length', - display_name: 'ssl dh parameters length', - description: 'DH parameters length to use.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_protocols', - display_name: 'ssl protocols', - description: 'SSL protocols to use.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_cipher_list', - display_name: 'ssl cipher list', - description: 'SSL ciphers to use', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_prefer_server_ciphers', - display_name: 'ssl prefer server ciphers', - description: 'Prefer the server\'s order of ciphers over client\'s.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_options', - display_name: 'ssl options', - description: - 'SSL extra options. Currently supported options are: '\ - 'no_compression', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ssl_crypto_device', - display_name: 'ssl crypto device', - description: - 'SSL crypto device to use, for valid values run '\ - '"$ openssl engine".', - type: 'string', - required: 'optional', - default: 'nil' - -# conf.d/15-lda.conf - -attribute 'dovecot/conf/postmaster_address', - display_name: 'postmaster address', - description: 'Address to use when sending rejection mails.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/hostname', - display_name: 'hostname', - description: - 'Hostname to use in various parts of sent mails, eg. in '\ - 'Message-Id.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/quota_full_tempfail', - display_name: 'quota full tempfail', - description: - 'If user is over quota, return with temporary failure instead of '\ - 'bouncing the mail.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/sendmail_path', - display_name: 'sendmail path', - description: 'Binary to use for sending mails.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/submission_host', - display_name: 'submission host', - description: - 'If non-empty, send mails via this SMTP host[:port] instead of '\ - 'sendmail.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/rejection_subject', - display_name: 'rejection subject', - description: 'Subject: header to use for rejection mails.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/rejection_reason', - display_name: 'rejection reason', - description: 'Human readable error message for rejection mails.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/recipient_delimiter', - display_name: 'recipient delimiter', - description: - 'Delimiter character between local-part and detail in email '\ - 'address.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/lda_original_recipient_header', - display_name: 'lda original recipient header', - description: - 'Header where the original recipient address (SMTP\'s RCPT TO: '\ - 'address) is taken from if not available elsewhere.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/lda_mailbox_autocreate', - display_name: 'lda mailbox autocreate', - description: - 'Should saving a mail to a nonexistent mailbox automatically '\ - 'create it?', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/lda_mailbox_autosubscribe', - display_name: 'lda mailbox autosubscribe', - description: - 'Should automatically created mailboxes be also automatically '\ - 'subscribed?', - type: 'string', - required: 'optional', - default: 'nil' - -# conf.d/20-lmtp.conf - -attribute 'dovecot/conf/lmtp_proxy', - display_name: 'lmtp proxy', - description: - 'Support proxying to other LMTP/SMTP servers by performing passdb '\ - 'lookups.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/lmtp_save_to_detail_mailbox', - display_name: 'lmtp save to detail mailbox', - description: - 'When recipient address includes the detail (e.g. user+detail), '\ - 'try to save the mail to the detail mailbox.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/lmtp_rcpt_check_quota', - display_name: 'lmtp rcpt check quota', - description: - 'Verify quota before replying to RCPT TO. This adds a small '\ - 'overhead.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/lmtp_hdr_delivery_address', - display_name: 'lmtp hdr delivery address', - description: - 'Which recipient address to use for Delivered-To: header and '\ - 'Received: header.', - type: 'string', - required: 'optional', - default: 'nil' - -# dovecot-db.conf.ext - -attribute 'dovecot/conf/db', - display_name: 'berkeley db', - description: 'DB_CONFIG for Berkeley DB as a hash.', - type: 'hash', - required: 'optional', - default: nil - -# conf-dovecot-dict-sql.rb - -grouping 'dovecot/conf/dict_sql', - title: 'dict sql config', - description: 'Dovecot dict sql configuration' - -attribute 'dovecot/conf/dict_sql/connect', - display_name: 'dict sql connect', - description: - 'Dict sql connect configuration as a string or an array.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/dict_sql/maps', - display_name: 'dict sql maps', - description: 'Dict sql database tables maps.', - type: 'string', - required: 'optional', - default: 'nil' - -# dovecot-ldap.conf.ext - -grouping 'dovecot/conf/ldap', - title: 'ldap config', - description: 'Dovecot LDAP Authentication Database configuration' - -attribute 'dovecot/conf/ldap/hosts', - display_name: 'ldap hosts', - description: 'Space separated list or array of LDAP hosts to use.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/uris', - display_name: 'ldap uris', - description: 'LDAP URIs to use.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/dn', - display_name: 'ldap dn', - description: - 'Distinguished Name, the username used to login to the LDAP '\ - 'server.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/dnpass', - display_name: 'ldap dnpass', - description: 'Password for LDAP server, if dn is specified.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/sasl_bind', - display_name: 'ldap sasl bind', - description: 'Use SASL binding instead of the simple binding.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/sasl_mech', - display_name: 'ldap sasl mech', - description: 'SASL mechanism name to use.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/sasl_realm', - display_name: 'ldap sasl realm', - description: 'SASL realm to use.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/sasl_authz_id', - display_name: 'ldap sasl authz id', - description: - 'SASL authorization ID, ie. the dnpass is for this "master user", '\ - 'but the dn is still the logged in user.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/tls', - display_name: 'ldap tls', - description: 'Use TLS to connect to the LDAP server.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/tls_ca_cert_file', - display_name: 'ldap tls ca cert file', - description: 'TLS options, currently supported only with OpenLDAP.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/tls_ca_cert_file', - display_name: 'ldap tls ca cert file', - description: 'TLS options, currently supported only with OpenLDAP.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/tls_ca_cert_dir', - display_name: 'ldap tls ca cert dir', - description: 'TLS options, currently supported only with OpenLDAP.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/tls_cipher_suite', - display_name: 'ldap tls cipher suite', - description: 'TLS options, currently supported only with OpenLDAP.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/tls_cert_file', - display_name: 'ldap tls cert file', - description: - 'TLS cert/key is used only if LDAP server requires a client '\ - 'certificate.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/tls_key_file', - display_name: 'ldap tls key file', - description: - 'TLS cert/key is used only if LDAP server requires a client '\ - 'certificate.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/tls_require_cert', - display_name: 'ldap tls require cert', - description: 'Valid values: never, hard, demand, allow, try', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/ldaprc_path', - display_name: 'ldap ldaprc path', - description: 'Use the given ldaprc path.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/debug_level', - display_name: 'ldap debug level', - description: - 'LDAP library debug level as specified by LDAP_DEBUG_* in '\ - 'ldap_log.h.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/auth_bind', - display_name: 'ldap auth bind', - description: - 'Use authentication binding for verifying password\'s validity.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/auth_bind_userdn', - display_name: 'ldap auth bind userdn', - description: - 'If authentication binding is used, you can save one LDAP request '\ - 'per login if user\'s DN can be specified with a common template.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/ldap_version', - display_name: 'ldap ldap version', - description: 'LDAP protocol version to use. Likely 2 or 3.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/base', - display_name: 'ldap base', - description: 'LDAP base. %variables can be used here.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/deref', - display_name: 'ldap deref', - description: 'Dereference: never, searching, finding or always.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/scope', - display_name: 'ldap scope', - description: 'Search scope: base, onelevel or subtree.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/user_attrs', - display_name: 'ldap user attrs', - description: - 'User attributes are given in LDAP-name=dovecot-internal-name '\ - 'list.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/user_filter', - display_name: 'ldap user filter', - description: 'Filter for user lookup.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/pass_attrs', - display_name: 'ldap pass attrs', - description: 'Password checking attributes.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/pass_filter', - display_name: 'ldap pass filter', - description: 'Filter for password lookups.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/iterate_attrs', - display_name: 'ldap iterate attrs', - description: 'Attributes to get a list of all users', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/iterate_filter', - display_name: 'ldap iterate filter', - description: 'Filter to get a list of all users', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/ldap/default_pass_scheme', - display_name: 'ldap default pass scheme', - description: - 'Default password scheme. "{scheme}" before password overrides '\ - 'this.', - type: 'string', - required: 'optional', - default: 'nil' - -# dovecot-sql.conf.ext - -attribute 'dovecot/conf/sql/driver', - display_name: 'sql driver', - description: 'Database driver: mysql, pgsql or sqlite.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/sql/connect', - display_name: 'sql connect', - description: - 'Database connection string or array. This is driver-specific '\ - 'setting.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/sql/default_pass_scheme', - display_name: 'sql default pass scheme', - description: 'Default password scheme.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/sql/password_query', - display_name: 'sql password query', - description: 'passdb query to retrieve the password.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/sql/user_query', - display_name: 'sql user query', - description: 'userdb query to retrieve the user information.', - type: 'string', - required: 'optional', - default: 'nil' - -attribute 'dovecot/conf/sql/iterate_query', - display_name: 'sql iterate query', - description: 'Query to get a list of all usernames.', - type: 'string', - required: 'optional', - default: 'nil' diff --git a/lc-gdn-chef/cookbooks/dovecot/recipes/conf_files.rb b/lc-gdn-chef/cookbooks/dovecot/recipes/conf_files.rb deleted file mode 100644 index ed8a1f2a2..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/recipes/conf_files.rb +++ /dev/null @@ -1,84 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Recipe:: conf_files -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# required directories - -directory node['dovecot']['lib_path'] do - owner node['dovecot']['conf_files_user'] - group node['dovecot']['conf_files_group'] - mode '00755' -end -conf_files_dirs = - node['dovecot']['conf_files'].values.reduce([]) do |r, conf_files| - r + conf_files.map { |f| ::File.dirname(f) } - end.uniq -conf_files_dirs.each do |dir| - directory "#{node['dovecot']['conf_path']}/#{dir}" do - name ::File.join(node['dovecot']['conf_path'], dir) - recursive true - owner node['dovecot']['conf_files_user'] - group node['dovecot']['group'] - mode '00755' - only_if { dir != '.' } - end -end - -# config files - -node['dovecot']['conf_files'].each do |type, conf_files| - conf_files.each do |conf_file| - template "(#{type}) #{conf_file}" do - path conf_file - # calculate file mode function - def get_conf_file_mode(conf_file) - node['dovecot']['sensitive_files'].each do |file_glob| - if ::File.fnmatch?(file_glob, conf_file, ::File::FNM_PATHNAME) - return node['dovecot']['sensitive_files_mode'] - end - end - node['dovecot']['conf_files_mode'] - end - - path ::File.join(node['dovecot']['conf_path'], conf_file) - source "#{conf_file}.erb" - owner node['dovecot']['conf_files_user'] - group node['dovecot']['conf_files_group'] - mode get_conf_file_mode(conf_file) - variables( - auth: node['dovecot']['auth'].to_hash, - protocols: node['dovecot']['protocols'].to_hash, - services: node['dovecot']['services'].to_hash, - plugins: node['dovecot']['plugins'].to_hash, - namespaces: node['dovecot']['namespaces'], - conf: node['dovecot']['conf'] - ) - if DovecotCookbook::Conf.require?(type, node['dovecot']) - action :create - else - action :delete - end - notifies :reload, 'service[dovecot]' - end # template conf_file - end # conf_files.each -end # node['dovecot']['conf_files'].each - -# Already included in ::default recipe, required for ChefSpec tests -include_recipe 'dovecot::service' diff --git a/lc-gdn-chef/cookbooks/dovecot/recipes/create_pwfile.rb b/lc-gdn-chef/cookbooks/dovecot/recipes/create_pwfile.rb deleted file mode 100644 index 89d12c9c5..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/recipes/create_pwfile.rb +++ /dev/null @@ -1,65 +0,0 @@ -# -# Cookbook Name:: dovecot -# Recipe:: create_pwfile -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. - -# The file credentials should be like: -# user:password:uid:gid:(gecos):home:(shell):extra_fields -# We ignore gecos and shell, all the others are included in the script but -# uid,gid,home,extra_Fields can be nil -# user:pass:::::: - -# Predefined Variables -credentials = [] -update_credentials = false -db_name = node['dovecot']['databag_name'] -db_item = node['dovecot']['databag_users_item'] -pwfile = node['dovecot']['conf']['password_file'] - -ruby_block 'databag_to_dovecot_userdb' do - block do - databag_users = data_bag_item(db_name, db_item)['users'] - - # Check if passwd file exists: - local_creds, pwfile_exists = DovecotCookbook::Pwfile.passfile_read(pwfile) - # Check if users on both passwd file and databag are the same. - # If not, force credentials update: - unless DovecotCookbook::Pwfile - .arrays_same?(databag_users.keys, local_creds.keys) - update_credentials = true - end - # Check if users has a changed password, if not change it and force update: - update_credentials = - DovecotCookbook::Pwfile.compile_users( - databag_users, local_creds, pwfile_exists, update_credentials, - credentials - ) - end - action :run -end - -template node['dovecot']['conf']['password_file'] do - source 'password.erb' - owner node['dovecot']['user'] - group node['dovecot']['group'] - mode '0640' - sensitive true - variables( - credentials: credentials - ) - only_if { update_credentials } -end diff --git a/lc-gdn-chef/cookbooks/dovecot/recipes/default.rb b/lc-gdn-chef/cookbooks/dovecot/recipes/default.rb deleted file mode 100644 index f655bcb57..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/recipes/default.rb +++ /dev/null @@ -1,26 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Recipe:: default -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -include_recipe 'dovecot::ohai_plugin' -include_recipe 'dovecot::user' -include_recipe "dovecot::from_#{node['dovecot']['install_from']}" -include_recipe 'dovecot::conf_files' -include_recipe 'dovecot::service' diff --git a/lc-gdn-chef/cookbooks/dovecot/recipes/from_package.rb b/lc-gdn-chef/cookbooks/dovecot/recipes/from_package.rb deleted file mode 100644 index c30c8c6ae..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/recipes/from_package.rb +++ /dev/null @@ -1,42 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Recipe:: from_package -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -# Already included in ::default recipe, required for ChefSpec tests -include_recipe 'dovecot::ohai_plugin' - -node['dovecot']['packages'].each do |type, pkgs| - if pkgs.is_a?(String) - pkgs = [pkgs] - elsif !pkgs.is_a?(Array) - raise "`node['dovecot']['packages']['#{type}']` should contain an array "\ - "of packages. You passed: #{pkgs.inspect}" - end - - pkgs.each do |pkg| - package "(#{type}) #{pkg}" do - package_name pkg - only_if { DovecotCookbook::Conf.require?(type, node['dovecot']) } - if type == 'core' || node['dovecot']['ohai_plugin']['build-options'] - notifies :reload, 'ohai[dovecot]', :immediately - end - end # package - end # pkg.each -end # node['dovecot']['packages'].each diff --git a/lc-gdn-chef/cookbooks/dovecot/recipes/ohai_plugin.rb b/lc-gdn-chef/cookbooks/dovecot/recipes/ohai_plugin.rb deleted file mode 100644 index f7f3ea1c3..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/recipes/ohai_plugin.rb +++ /dev/null @@ -1,39 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Recipe:: ohai_plugin -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -def ohai7? - Gem::Requirement.new('>= 7').satisfied_by?(Gem::Version.new(Ohai::VERSION)) -end - -ohai_build_options = node['dovecot']['ohai_plugin']['build-options'] -source_dir = ohai7? ? 'ohai7_plugins' : 'ohai_plugins' - -# dummy resource to be able to notify reload action to the ohai plugin -ohai 'dovecot' do - action :nothing -end - -ohai_plugin 'dovecot' do - name 'dovecot' - source_file "#{source_dir}/dovecot.rb.erb" - resource :template - variables enable_build_options: ohai_build_options -end diff --git a/lc-gdn-chef/cookbooks/dovecot/recipes/service.rb b/lc-gdn-chef/cookbooks/dovecot/recipes/service.rb deleted file mode 100644 index 81b6331c0..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/recipes/service.rb +++ /dev/null @@ -1,28 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Recipe:: service -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2015 Xabier de Zuazo -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -service 'dovecot' do - service_name node['dovecot']['service']['name'] - supports Mash.new(node['dovecot']['service']['supports']) - provider node['dovecot']['service']['provider'] - action [:enable, :start] -end diff --git a/lc-gdn-chef/cookbooks/dovecot/recipes/user.rb b/lc-gdn-chef/cookbooks/dovecot/recipes/user.rb deleted file mode 100644 index 4131005f0..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/recipes/user.rb +++ /dev/null @@ -1,43 +0,0 @@ -# encoding: UTF-8 -# -# Cookbook Name:: dovecot -# Recipe:: user -# Author:: Xabier de Zuazo () -# Copyright:: Copyright (c) 2013-2014 Onddo Labs, SL. -# License:: Apache License, Version 2.0 -# -# Licensed 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. -# - -user node['dovecot']['user'] do - comment 'Dovecot mail server' - home node['dovecot']['user_homedir'] - shell '/bin/false' - system true -end - -group node['dovecot']['group'] do - members [node['dovecot']['user']] - system true - append true -end - -default_login_user = node['dovecot']['conf']['default_login_user'] || 'dovenull' - -group default_login_user do - system true -end - -user default_login_user do - group default_login_user -end diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-auth.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-auth.conf.erb deleted file mode 100644 index c5422509c..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-auth.conf.erb +++ /dev/null @@ -1,131 +0,0 @@ -# Generated by Chef - -## -## Authentication processes -## - -# Disable LOGIN command and all other plaintext authentications unless -# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP -# matches the local IP (ie. you're connecting from the same computer), the -# connection is considered secure and plaintext authentication is allowed. -# See also ssl=required setting. -<%= DovecotCookbook::Conf.attribute(@conf, 'disable_plaintext_auth', true) %> - -# Authentication cache size (e.g. 10M). 0 means it's disabled. Note that -# bsdauth, PAM and vpopmail require cache_key to be set for caching to be used. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_cache_size', 0) %> -# Time to live for cached data. After TTL expires the cached record is no -# longer used, *except* if the main database lookup returns internal failure. -# We also try to handle password changes automatically: If user's previous -# authentication was successful, but this one wasn't, the cache isn't used. -# For now this works only with plaintext authentication. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_cache_ttl', '1 hour') %> -# TTL for negative hits (user not found, password mismatch). -# 0 disables caching them completely. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_cache_negative_ttl', '1 hour') %> - -# Space separated list of realms for SASL authentication mechanisms that need -# them. You can leave it empty if you don't want to support multiple realms. -# Many clients simply use the first one listed here, so keep the default realm -# first. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_realms') %> - -# Default realm/domain to use if none was specified. This is used for both -# SASL realms and appending @domain to username in plaintext logins. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_default_realm') %> - -# List of allowed characters in username. If the user-given username contains -# a character not listed in here, the login automatically fails. This is just -# an extra check to make sure user can't exploit any potential quote escaping -# vulnerabilities with SQL/LDAP databases. If you want to allow all characters, -# set this value to empty. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_username_chars', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@') %> - -# Username character translations before it's looked up from databases. The -# value contains series of from -> to characters. For example "#@/@" means -# that '#' and '/' characters are translated to '@'. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_username_translation') %> - -# Username formatting before it's looked up from databases. You can use -# the standard variables here, eg. %Lu would lowercase the username, %n would -# drop away the domain if it was given, or "%n-AT-%d" would change the '@' into -# "-AT-". This translation is done after auth_username_translation changes. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_username_format', '%Lu') %> - -# If you want to allow master users to log in by specifying the master -# username within the normal username string (ie. not using SASL mechanism's -# support for it), you can specify the separator character here. The format -# is then . UW-IMAP uses "*" as the -# separator, so that could be a good choice. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_master_user_separator') %> - -# Username to use for users logging in with ANONYMOUS SASL mechanism -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_anonymous_username', 'anonymous') %> - -# Maximum number of dovecot-auth worker processes. They're used to execute -# blocking passdb and userdb queries (eg. MySQL and PAM). They're -# automatically created and destroyed as needed. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_worker_max_count', 30) %> - -# Host name to use in GSSAPI principal names. The default is to use the -# name returned by gethostname(). Use "$ALL" (with quotes) to allow all keytab -# entries. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_gssapi_hostname') %> - -# Kerberos keytab to use for the GSSAPI mechanism. Will use the system -# default (usually /etc/krb5.keytab) if not specified. You may need to change -# the auth service to run as root to be able to read this file. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_krb5_keytab') %> - -# Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and -# ntlm_auth helper. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_use_winbind', false) %> - -# Path for Samba's ntlm_auth helper binary. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_winbind_helper_path', '/usr/bin/ntlm_auth') %> - -# Time to delay before replying to failed authentications. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_failure_delay', '2 secs') %> - -# Require a valid SSL client certificate or the authentication fails. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_ssl_require_client_cert', false) %> - -# Take the username from client's SSL certificate, using -# X509_NAME_get_text_by_NID() which returns the subject's DN's -# CommonName. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_ssl_username_from_cert', false) %> - -# Space separated list of wanted authentication mechanisms: -# plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey -# gss-spnego -# NOTE: See also disable_plaintext_auth setting. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_mechanisms', 'plain') %> - -## -## Password and user databases -## - -# -# Password database is used to verify user's password (and nothing more). -# You can have multiple passdbs and userdbs. This is useful if you want to -# allow both system users (/etc/passwd) and virtual users to login without -# duplicating the system users into virtual database. -# -# -# -# User database specifies where mails are located and what user/group IDs -# own them. For single-UID configuration use "static" userdb. -# -# - -<%= '#' unless @auth['deny'].kind_of?(Hash) %>!include auth-deny.conf.ext -<%= '#' unless @auth['master'].kind_of?(Hash) %>!include auth-master.conf.ext - -<%= '#' unless @auth['system'].kind_of?(Hash) %>!include auth-system.conf.ext -<%= '#' unless @auth['sql'].kind_of?(Hash) %>!include auth-sql.conf.ext -<%= '#' unless DovecotCookbook::Conf::Require.ldap?(@conf) %>!include auth-ldap.conf.ext -<%= '#' unless @auth['passwdfile'].kind_of?(Hash) %>!include auth-passwdfile.conf.ext -<%= '#' unless @auth['checkpassword'].kind_of?(Hash) %>!include auth-checkpassword.conf.ext -<%= '#' unless @auth['vpopmail'].kind_of?(Hash) %>!include auth-vpopmail.conf.ext -<%= '#' unless @auth['static'].kind_of?(Hash) %>!include auth-static.conf.ext -<%= '#' unless @auth['dict'].kind_of?(Hash) %>!include auth-dict.conf.ext diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-director.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-director.conf.erb deleted file mode 100644 index 342eb9090..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-director.conf.erb +++ /dev/null @@ -1,67 +0,0 @@ -# Generated by Chef - -## -## Director-specific settings. -## - -# Director can be used by Dovecot proxy to keep a temporary user -> mail server -# mapping. As long as user has simultaneous connections, the user is always -# redirected to the same server. Each proxy server is running its own director -# process, and the directors are communicating the state to each others. -# Directors are mainly useful with NFS-like setups. - -# List of IPs or hostnames to all director servers, including ourself. -# Ports can be specified as ip:port. The default port is the same as -# what director service's inet_listener is using. -<%= DovecotCookbook::Conf.attribute(@conf, 'director_servers') %> - -# List of IPs or hostnames to all backend mail servers. Ranges are allowed -# too, like 10.0.0.10-10.0.0.30. -<%= DovecotCookbook::Conf.attribute(@conf, 'director_mail_servers') %> - -# How long to redirect users to a specific server after it no longer has -# any connections. -<%= DovecotCookbook::Conf.attribute(@conf, 'director_user_expire', '15 min') %> - -# TCP/IP port that accepts doveadm connections (instead of director connections) -# If you enable this, you'll also need to add inet_listener for the port. -<%= DovecotCookbook::Conf.attribute(@conf, 'director_doveadm_port', 0) %> - -# How the username is translated before being hashed. Useful values include -# %Ln if user can log in with or without @domain, %Ld if mailboxes are shared -# within domain. -<%= DovecotCookbook::Conf.attribute(@conf, 'director_username_hash', '%Lu') %> - -<% if @services['director'].kind_of?(Hash) and @services['director'].length > 0 -%> -<%= DovecotCookbook::Conf.service('director', @services['director']) %> -<% else -%> -# To enable director service, uncomment the modes and assign a port. -service director { - unix_listener login/director { - #mode = 0666 - } - fifo_listener login/proxy-notify { - #mode = 0666 - } - unix_listener director-userdb { - #mode = 0600 - } - inet_listener { - #port = - } -} -<% end -%> - -# Enable director for the wanted login services by telling them to -# connect to director socket instead of the default login socket: -service imap-login { - #executable = imap-login director -} -service pop3-login { - #executable = pop3-login director -} - -# Enable director for LMTP proxying: -protocol lmtp { - #auth_socket_path = director-userdb -} diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-logging.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-logging.conf.erb deleted file mode 100644 index cbcdb2e7e..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-logging.conf.erb +++ /dev/null @@ -1,91 +0,0 @@ -# Generated by Chef - -## -## Log destination. -## - -# Log file to use for error messages. "syslog" logs to syslog, -# /dev/stderr logs to stderr. -<%= DovecotCookbook::Conf.attribute(@conf, 'log_path', 'syslog') %> - -# Log file to use for informational messages. Defaults to log_path. -<%= DovecotCookbook::Conf.attribute(@conf, 'info_log_path') %> -# Log file to use for debug messages. Defaults to info_log_path. -<%= DovecotCookbook::Conf.attribute(@conf, 'debug_log_path') %> - -# Syslog facility to use if you're logging to syslog. Usually if you don't -# want to use "mail", you'll use local0..local7. Also other standard -# facilities are supported. -<%= DovecotCookbook::Conf.attribute(@conf, 'syslog_facility', 'mail') %> - -## -## Logging verbosity and debugging. -## - -# Log unsuccessful authentication attempts and the reasons why they failed. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_verbose', false) %> - -# In case of password mismatches, log the attempted password. Valid values are -# no, plain and sha1. sha1 can be useful for detecting brute force password -# attempts vs. user simply trying the same password over and over again. -# You can also truncate the value to n chars by appending ":n" (e.g. sha1:6). -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_verbose_passwords', false) %> - -# Even more verbose logging for debugging purposes. Shows for example SQL -# queries. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_debug', false) %> - -# In case of password mismatches, log the passwords and used scheme so the -# problem can be debugged. Enabling this also enables auth_debug. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_debug_passwords', false) %> - -# Enable mail process debugging. This can help you figure out why Dovecot -# isn't finding your mails. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_debug', false) %> - -# Show protocol level SSL errors. -<%= DovecotCookbook::Conf.attribute(@conf, 'verbose_ssl', false) %> - -# mail_log plugin provides more event logging for mail processes. -<% if @plugins.has_key?('mail_log') and @plugins['mail_log'].kind_of?(Hash) -%> -<%= DovecotCookbook::Conf.plugin('mail_log', @plugins['mail_log']) %> -<% else -%> -plugin { - # Events to log. Also available: flag_change append - #mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename - # Available fields: uid, box, msgid, from, subject, size, vsize, flags - # size and vsize are available only for expunge and copy events. - #mail_log_fields = uid box msgid size -} -<% end -%> - -## -## Log formatting. -## - -# Prefix for each line written to log file. % codes are in strftime(3) -# format. -<%= DovecotCookbook::Conf.attribute(@conf, 'log_timestamp', '"%b %d %H:%M:%S "') %> - -# Space-separated list of elements we want to log. The elements which have -# a non-empty variable value are joined together to form a comma-separated -# string. -<%= DovecotCookbook::Conf.attribute(@conf, 'login_log_format_elements', 'user=<%u> method=%m rip=%r lip=%l mpid=%e %c') %> - -# Login log format. %s contains login_log_format_elements string, %$ contains -# the data we want to log. -<%= DovecotCookbook::Conf.attribute(@conf, 'login_log_format', '%$: %s') %> - -# Log prefix for mail processes. See doc/wiki/Variables.txt for list of -# possible variables you can use. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_log_prefix', '"%s(%u): "') %> - -# Format to use for logging mail deliveries. See doc/wiki/Variables.txt for -# list of all variables you can use. Some of the common ones include: -# %$ - Delivery status message (e.g. "saved to INBOX") -# %m - Message-ID -# %s - Subject -# %f - From address -# %p - Physical size -# %w - Virtual size -<%= DovecotCookbook::Conf.attribute(@conf, 'deliver_log_format', 'msgid=%m: %$') %> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-mail.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-mail.conf.erb deleted file mode 100644 index bfd924c64..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-mail.conf.erb +++ /dev/null @@ -1,401 +0,0 @@ -# Generated by Chef - -## -## Mailbox locations and namespaces -## - -# Location for users' mailboxes. The default is empty, which means that Dovecot -# tries to find the mailboxes automatically. This won't work if the user -# doesn't yet have any mail, so you should explicitly tell Dovecot the full -# location. -# -# If you're using mbox, giving a path to the INBOX file (eg. /var/mail/%u) -# isn't enough. You'll also need to tell Dovecot where the other mailboxes are -# kept. This is called the "root mail directory", and it must be the first -# path given in the mail_location setting. -# -# There are a few special variables you can use, eg.: -# -# %u - username -# %n - user part in user@domain, same as %u if there's no domain -# %d - domain part in user@domain, empty if there's no domain -# %h - home directory -# -# See doc/wiki/Variables.txt for full list. Some examples: -# -# mail_location = maildir:~/Maildir -# mail_location = mbox:~/mail:INBOX=/var/mail/%u -# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n -# -# -# -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_location') %> - -# If you need to set multiple mailbox locations or want to change default -# namespace settings, you can do it by defining namespace sections. -# -# You can have private, shared and public namespaces. Private namespaces -# are for user's personal mails. Shared namespaces are for accessing other -# users' mailboxes that have been shared. Public namespaces are for shared -# mailboxes that are managed by sysadmin. If you create any shared or public -# namespaces you'll typically want to enable ACL plugin also, otherwise all -# users can access all the shared mailboxes, assuming they have permissions -# on filesystem level to do so. -<% if @namespaces.kind_of?(Array) and @namespaces.length > 0 -%> -<% @namespaces.each do |ns| -%> -<%= DovecotCookbook::Conf.namespace(ns) %> -<% end -%> -<% else -%> -#namespace { - # Namespace type: private, shared or public - #type = private - - # Hierarchy separator to use. You should use the same separator for all - # namespaces or some clients get confused. '/' is usually a good one. - # The default however depends on the underlying mail storage format. - #separator = - - # Prefix required to access this namespace. This needs to be different for - # all namespaces. For example "Public/". - #prefix = - - # Physical location of the mailbox. This is in same format as - # mail_location, which is also the default for it. - #location = - - # There can be only one INBOX, and this setting defines which namespace - # has it. - #inbox = yes - - # If namespace is hidden, it's not advertised to clients via NAMESPACE - # extension. You'll most likely also want to set list=no. This is mostly - # useful when converting from another server with different namespaces which - # you want to deprecate but still keep working. For example you can create - # hidden namespaces with prefixes "~/mail/", "~%u/mail/" and "mail/". - #hidden = no - - # Show the mailboxes under this namespace with LIST command. This makes the - # namespace visible for clients that don't support NAMESPACE extension. - # "children" value lists child mailboxes, but hides the namespace prefix. - #list = yes - - # Namespace handles its own subscriptions. If set to "no", the parent - # namespace handles them (empty prefix should always have this as "yes") - #subscriptions = yes - - # See 15-mailboxes.conf for definitions of special mailboxes. -#} -<% end -%> - -# Example shared namespace configuration -#namespace { - #type = shared - #separator = / - - # Mailboxes are visible under "shared/user@domain/" - # %%n, %%d and %%u are expanded to the destination user. - #prefix = shared/%%u/ - - # Mail location for other users' mailboxes. Note that %variables and ~/ - # expands to the logged in user's data. %%n, %%d, %%u and %%h expand to the - # destination user's data. - #location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u - - # Use the default namespace for saving subscriptions. - #subscriptions = no - - # List the shared/ namespace only if there are visible shared mailboxes. - #list = children -#} -# Should shared INBOX be visible as "shared/user" or "shared/user/INBOX"? -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_shared_explicit_inbox', false) %> - -# System user and group used to access mails. If you use multiple, userdb -# can override these by returning uid or gid fields. You can use either numbers -# or names. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_uid') %> -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_gid') %> - -# Group to enable temporarily for privileged operations. Currently this is -# used only with INBOX when either its initial creation or dotlocking fails. -# Typically this is set to "mail" to give access to /var/mail. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_privileged_group') %> - -# Grant access to these supplementary groups for mail processes. Typically -# these are used to set up access to shared mailboxes. Note that it may be -# dangerous to set these if users can create symlinks (e.g. if "mail" group is -# set here, ln -s /var/mail ~/mail/var could allow a user to delete others' -# mailboxes, or ln -s /secret/shared/box ~/mail/mybox would allow reading it). -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_access_groups') %> - -# Allow full filesystem access to clients. There's no access checks other than -# what the operating system does for the active UID/GID. It works with both -# maildir and mboxes, allowing you to prefix mailboxes names with eg. /path/ -# or ~user/. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_full_filesystem_access', false) %> - -# Dictionary for key=value mailbox attributes. This is used for example by -# URLAUTH and METADATA extensions. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_attribute_dict') %> - -# A comment or note that is associated with the server. This value is -# accessible for authenticated users through the IMAP METADATA server -# entry "/shared/comment". -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_server_comment', '') %> - -# Indicates a method for contacting the server administrator. According to -# RFC 5464, this value MUST be a URI (e.g., a mailto: or tel: URL), but that -# is currently not enforced. Use for example mailto:admin@example.com. This -# value is accessible for authenticated users through the IMAP METADATA server -# entry "/shared/admin". -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_server_admin', '') %> - -## -## Mail processes -## - -# Don't use mmap() at all. This is required if you store indexes to shared -# filesystems (NFS or clustered filesystem). -<%= DovecotCookbook::Conf.attribute(@conf, 'mmap_disable', false) %> - -# Rely on O_EXCL to work when creating dotlock files. NFS supports O_EXCL -# since version 3, so this should be safe to use nowadays by default. -<%= DovecotCookbook::Conf.attribute(@conf, 'dotlock_use_excl', true) %> - -# When to use fsync() or fdatasync() calls: -# optimized (default): Whenever necessary to avoid losing important data -# always: Useful with e.g. NFS when write()s are delayed -# never: Never use it (best performance, but crashes can lose data) -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_fsync', 'optimized') %> - -# Mail storage exists in NFS. Set this to yes to make Dovecot flush NFS caches -# whenever needed. If you're using only a single mail server this isn't needed. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_nfs_storage', false) %> -# Mail index files also exist in NFS. Setting this to yes requires -# mmap_disable=yes and fsync_disable=no. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_nfs_index', false) %> - -# Locking method for index files. Alternatives are fcntl, flock and dotlock. -# Dotlocking uses some tricks which may create more disk I/O than other locking -# methods. NFS users: flock doesn't work, remember to change mmap_disable. -<%= DovecotCookbook::Conf.attribute(@conf, 'lock_method', 'fcntl') %> - -# Directory in which LDA/LMTP temporarily stores incoming mails >128 kB. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_temp_dir', '/tmp') %> - -# Valid UID range for users, defaults to 500 and above. This is mostly -# to make sure that users can't log in as daemons or other system users. -# Note that denying root logins is hardcoded to dovecot binary and can't -# be done even if first_valid_uid is set to 0. -<%= DovecotCookbook::Conf.attribute(@conf, 'first_valid_uid', 500) %> -<%= DovecotCookbook::Conf.attribute(@conf, 'last_valid_uid', 0) %> - -# Valid GID range for users, defaults to non-root/wheel. Users having -# non-valid GID as primary group ID aren't allowed to log in. If user -# belongs to supplementary groups with non-valid GIDs, those groups are -# not set. -<%= DovecotCookbook::Conf.attribute(@conf, 'first_valid_gid', 1) %> -<%= DovecotCookbook::Conf.attribute(@conf, 'last_valid_gid', 0) %> - -# Maximum allowed length for mail keyword name. It's only forced when trying -# to create new keywords. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_max_keyword_length', 50) %> - -# ':' separated list of directories under which chrooting is allowed for mail -# processes (ie. /var/mail will allow chrooting to /var/mail/foo/bar too). -# This setting doesn't affect login_chroot, mail_chroot or auth chroot -# settings. If this setting is empty, "/./" in home dirs are ignored. -# WARNING: Never add directories here which local users can modify, that -# may lead to root exploit. Usually this should be done only if you don't -# allow shell access for users. -<%= DovecotCookbook::Conf.attribute(@conf, 'valid_chroot_dirs') %> - -# Default chroot directory for mail processes. This can be overridden for -# specific users in user database by giving /./ in user's home directory -# (eg. /home/./user chroots into /home). Note that usually there is no real -# need to do chrooting, Dovecot doesn't allow users to access files outside -# their mail directory anyway. If your home directories are prefixed with -# the chroot directory, append "/." to mail_chroot. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_chroot') %> - -# UNIX socket path to master authentication server to find users. -# This is used by imap (for shared users) and lda. -<%= DovecotCookbook::Conf.attribute(@conf, 'auth_socket_path', '/var/run/dovecot/auth-userdb') %> - -# Directory where to look up mail plugins. -<%= case node['platform_family'] - when 'rhel', 'fedora', 'suse' - DovecotCookbook::Conf.attribute(@conf, 'mail_plugin_dir', '/usr/lib/dovecot') - # when 'debian' - else - DovecotCookbook::Conf.attribute(@conf, 'mail_plugin_dir', '/usr/lib/dovecot/modules') - end -%> - -# Space separated list of plugins to load for all services. Plugins specific to -# IMAP, LDA, etc. are added to this list in their own .conf files. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_plugins') %> - -## -## Mailbox handling optimizations -## - -# Mailbox list indexes can be used to optimize IMAP STATUS commands. They are -# also required for IMAP NOTIFY extension to be enabled. -<%= DovecotCookbook::Conf.attribute(@conf, 'mailbox_list_index', 'no') %> - -# The minimum number of mails in a mailbox before updates are done to cache -# file. This allows optimizing Dovecot's behavior to do less disk writes at -# the cost of more disk reads. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_cache_min_mail_count', 0) %> - -# When IDLE command is running, mailbox is checked once in a while to see if -# there are any new mails or other changes. This setting defines the minimum -# time to wait between those checks. Dovecot can also use inotify and -# kqueue to find out immediately when changes occur. -<%= DovecotCookbook::Conf.attribute(@conf, 'mailbox_idle_check_interval', '30 secs') %> - -# Save mails with CR+LF instead of plain LF. This makes sending those mails -# take less CPU, especially with sendfile() syscall with Linux and FreeBSD. -# But it also creates a bit more disk I/O which may just make it slower. -# Also note that if other software reads the mboxes/maildirs, they may handle -# the extra CRs wrong and cause problems. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_save_crlf', false) %> - -# Max number of mails to keep open and prefetch to memory. This only works with -# some mailbox formats and/or operating systems. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_prefetch_count', 0) %> - -# How often to scan for stale temporary files and delete them (0 = never). -# These should exist only after Dovecot dies in the middle of saving mails. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_temp_scan_interval', '1w') %> - -## -## Maildir-specific settings -## - -# By default LIST command returns all entries in maildir beginning with a dot. -# Enabling this option makes Dovecot return only entries which are directories. -# This is done by stat()ing each entry, so it causes more disk I/O. -# (For systems setting struct dirent->d_type, this check is free and it's -# done always regardless of this setting) -<%= DovecotCookbook::Conf.attribute(@conf, 'maildir_stat_dirs', false) %> - -# When copying a message, do it with hard links whenever possible. This makes -# the performance much better, and it's unlikely to have any side effects. -<%= DovecotCookbook::Conf.attribute(@conf, 'maildir_copy_with_hardlinks', true) %> - -# Assume Dovecot is the only MUA accessing Maildir: Scan cur/ directory only -# when its mtime changes unexpectedly or when we can't find the mail otherwise. -<%= DovecotCookbook::Conf.attribute(@conf, 'maildir_very_dirty_syncs', false) %> - -# If enabled, Dovecot doesn't use the S= in the Maildir filenames for -# getting the mail's physical size, except when recalculating Maildir++ quota. -# This can be useful in systems where a lot of the Maildir filenames have a -# broken size. The performance hit for enabling this is very small. -<%= DovecotCookbook::Conf.attribute(@conf, 'maildir_broken_filename_sizes', false) %> - -# Always move mails from new/ directory to cur/, even when the \Recent flags -# aren't being reset. -<%= DovecotCookbook::Conf.attribute(@conf, 'maildir_empty_new', false) %> - -## -## mbox-specific settings -## - -# Which locking methods to use for locking mbox. There are four available: -# dotlock: Create .lock file. This is the oldest and most NFS-safe -# solution. If you want to use /var/mail/ like directory, the users -# will need write access to that directory. -# dotlock_try: Same as dotlock, but if it fails because of permissions or -# because there isn't enough disk space, just skip it. -# fcntl : Use this if possible. Works with NFS too if lockd is used. -# flock : May not exist in all systems. Doesn't work with NFS. -# lockf : May not exist in all systems. Doesn't work with NFS. -# -# You can use multiple locking methods; if you do the order they're declared -# in is important to avoid deadlocks if other MTAs/MUAs are using multiple -# locking methods as well. Some operating systems don't allow using some of -# them simultaneously. -<%= DovecotCookbook::Conf.attribute(@conf, 'mbox_read_locks', 'fcntl') %> -<%= DovecotCookbook::Conf.attribute(@conf, 'mbox_write_locks', 'dotlock fcntl') %> - -# Maximum time to wait for lock (all of them) before aborting. -<%= DovecotCookbook::Conf.attribute(@conf, 'mbox_lock_timeout', '5 mins') %> - -# If dotlock exists but the mailbox isn't modified in any way, override the -# lock file after this much time. -<%= DovecotCookbook::Conf.attribute(@conf, 'mbox_dotlock_change_timeout', '2 mins') %> - -# When mbox changes unexpectedly we have to fully read it to find out what -# changed. If the mbox is large this can take a long time. Since the change -# is usually just a newly appended mail, it'd be faster to simply read the -# new mails. If this setting is enabled, Dovecot does this but still safely -# fallbacks to re-reading the whole mbox file whenever something in mbox isn't -# how it's expected to be. The only real downside to this setting is that if -# some other MUA changes message flags, Dovecot doesn't notice it immediately. -# Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK -# commands. -<%= DovecotCookbook::Conf.attribute(@conf, 'mbox_dirty_syncs', true) %> - -# Like mbox_dirty_syncs, but don't do full syncs even with SELECT, EXAMINE, -# EXPUNGE or CHECK commands. If this is set, mbox_dirty_syncs is ignored. -<%= DovecotCookbook::Conf.attribute(@conf, 'mbox_very_dirty_syncs', false) %> - -# Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK -# commands and when closing the mailbox). This is especially useful for POP3 -# where clients often delete all mails. The downside is that our changes -# aren't immediately visible to other MUAs. -<%= DovecotCookbook::Conf.attribute(@conf, 'mbox_lazy_writes', true) %> - -# If mbox size is smaller than this (e.g. 100k), don't write index files. -# If an index file already exists it's still read, just not updated. -<%= DovecotCookbook::Conf.attribute(@conf, 'mbox_min_index_size', 0) %> - -# Mail header selection algorithm to use for MD5 POP3 UIDLs when -# pop3_uidl_format=%m. For backwards compatibility we use apop3d inspired -# algorithm, but it fails if the first Received: header isn't unique in all -# mails. An alternative algorithm is "all" that selects all headers. -<%= DovecotCookbook::Conf.attribute(@conf, 'mbox_md5', 'apop3d') %> - -## -## mdbox-specific settings -## - -# Maximum dbox file size until it's rotated. -<%= DovecotCookbook::Conf.attribute(@conf, 'mdbox_rotate_size', '2M') %> - -# Maximum dbox file age until it's rotated. Typically in days. Day begins -# from midnight, so 1d = today, 2d = yesterday, etc. 0 = check disabled. -<%= DovecotCookbook::Conf.attribute(@conf, 'mdbox_rotate_interval', 0) %> - -# When creating new mdbox files, immediately preallocate their size to -# mdbox_rotate_size. This setting currently works only in Linux with some -# filesystems (ext4, xfs). -<%= DovecotCookbook::Conf.attribute(@conf, 'mdbox_preallocate_space', false) %> - -## -## Mail attachments -## - -# sdbox and mdbox support saving mail attachments to external files, which -# also allows single instance storage for them. Other backends don't support -# this for now. - -# Directory root where to store mail attachments. Disabled, if empty. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_attachment_dir') %> - -# Attachments smaller than this aren't saved externally. It's also possible to -# write a plugin to disable saving specific attachments externally. -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_attachment_min_size', '128k') %> - -# Filesystem backend to use for saving attachments: -# posix : No SiS done by Dovecot (but this might help FS's own deduplication) -# sis posix : SiS with immediate byte-by-byte comparison during saving -# sis-queue posix : SiS with delayed comparison and deduplication -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_attachment_fs', 'sis posix') %> - -# Hash format to use in attachment filenames. You can add any text and -# variables: %{md4}, %{md5}, %{sha1}, %{sha256}, %{sha512}, %{size}. -# Variables can be truncated, e.g. %{sha256:80} returns only first 80 bits -<%= DovecotCookbook::Conf.attribute(@conf, 'mail_attachment_hash', '%{sha1}') %> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-master.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-master.conf.erb deleted file mode 100644 index 259cbcbdc..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-master.conf.erb +++ /dev/null @@ -1,160 +0,0 @@ -# Generated by Chef - -<%= DovecotCookbook::Conf.attribute(@conf, 'default_process_limit', 100) %> -<%= DovecotCookbook::Conf.attribute(@conf, 'default_client_limit', 1000) %> - -# Default VSZ (virtual memory size) limit for service processes. This is mainly -# intended to catch and kill processes that leak memory before they eat up -# everything. -<%= DovecotCookbook::Conf.attribute(@conf, 'default_vsz_limit', '256M') %> - -# Login user is internally used by login processes. This is the most untrusted -# user in Dovecot system. It shouldn't have access to anything at all. -<%= DovecotCookbook::Conf.attribute(@conf, 'default_login_user', 'dovenull') %> - -# Internal user is used by unprivileged processes. It should be separate from -# login user, so that login processes can't disturb other processes. -<%= DovecotCookbook::Conf.attribute(@conf, 'default_internal_user', 'dovecot') %> - -<% if @services['doveadm'].kind_of?(Hash) and @services['doveadm'].length > 0 -%> -<%= DovecotCookbook::Conf.service('doveadm', @services['doveadm']) %> -<% end -%> - -<% if @services['imap-login'].kind_of?(Hash) and @services['imap-login'].length > 0 -%> -<%= DovecotCookbook::Conf.service('imap-login', @services['imap-login']) %> -<% else -%> -service imap-login { - inet_listener imap { - #port = 143 - } - inet_listener imaps { - #port = 993 - #ssl = yes - } - - # Number of connections to handle before starting a new process. Typically - # the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0 - # is faster. - #service_count = 1 - - # Number of processes to always keep waiting for more connections. - #process_min_avail = 0 - - # If you set service_count=0, you probably need to grow this. - #vsz_limit = $default_vsz_limit -} -<% end -%> - -<% if @services['pop3-login'].kind_of?(Hash) and @services['pop3-login'].length > 0 -%> -<%= DovecotCookbook::Conf.service('pop3-login', @services['pop3-login']) %> -<% else -%> -service pop3-login { - inet_listener pop3 { - #port = 110 - } - inet_listener pop3s { - #port = 995 - #ssl = yes - } -} -<% end -%> - -<% if @services['lmtp'].kind_of?(Hash) and @services['lmtp'].length > 0 -%> -<%= DovecotCookbook::Conf.service('lmtp', @services['lmtp']) %> -<% else -%> -service lmtp { - unix_listener lmtp { - #mode = 0666 - } - - # Create inet listener only if you can't use the above UNIX socket - #inet_listener lmtp { - # Avoid making LMTP visible for the entire internet - #address = - #port = - #} -} -<% end -%> - -<% if @services['imap'].kind_of?(Hash) and @services['imap'].length > 0 -%> -<%= DovecotCookbook::Conf.service('imap', @services['imap']) %> -<% else -%> -service imap { - # Most of the memory goes to mmap()ing files. You may need to increase this - # limit if you have huge mailboxes. - #vsz_limit = $default_vsz_limit - - # Max. number of IMAP processes (connections) - #process_limit = 1024 -} -<% end -%> - -<% if @services['pop3'].kind_of?(Hash) and @services['pop3'].length > 0 -%> -<%= DovecotCookbook::Conf.service('pop3', @services['pop3']) %> -<% else -%> -service pop3 { - # Max. number of POP3 processes (connections) - #process_limit = 1024 -} -<% end -%> - -<% if @services['auth'].kind_of?(Hash) and @services['auth'].length > 0 -%> -<%= DovecotCookbook::Conf.service('auth', @services['auth']) %> -<% else -%> -service auth { - # used by dovecot-lda, doveadm, possibly imap process, etc. Users that have - # full permissions to this socket are able to get a list of all usernames and - # get the results of everyone's userdb lookups. - # - # The default 0666 mode allows anyone to connect to the socket, but the - # userdb lookups will succeed only if the userdb returns an "uid" field that - # matches the caller process's UID. Also if caller's uid or gid matches the - # socket's uid or gid the lookup succeeds. Anything else causes a failure. - # - # To give the caller full permissions to lookup all users, set the mode to - # something else than 0666 and Dovecot lets the kernel enforce the - # permissions (e.g. 0777 allows everyone full permissions). - unix_listener auth-userdb { - #mode = 0666 - #user = - #group = - } - - # Postfix smtp-auth - #unix_listener /var/spool/postfix/private/auth { - # mode = 0666 - #} - - # Auth process is run as this user. - #user = $default_internal_user -} -<% end -%> - -<% if @services['auth-worker'].kind_of?(Hash) and @services['auth-worker'].length > 0 -%> -<%= DovecotCookbook::Conf.service('auth-worker', @services['auth-worker']) %> -<% else -%> -service auth-worker { - # Auth worker process is run as root by default, so that it can access - # /etc/shadow. If this isn't necessary, the user should be changed to - # $default_internal_user. - #user = root -} -<% end -%> - -<% if @services['dict'].kind_of?(Hash) and @services['dict'].length > 0 -%> -<%= DovecotCookbook::Conf.service('dict', @services['dict']) %> -<% else -%> -service dict { - # If dict proxy is used, mail processes should have access to its socket. - # For example: mode=0660, group=vmail and global mail_access_groups=vmail - unix_listener dict { - #mode = 0600 - #user = - #group = - } -} -<% end -%> - -<% if @services['anvil'].kind_of?(Hash) and @services['anvil'].length > 0 -%> -<%= DovecotCookbook::Conf.service('anvil', @services['anvil']) %> -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-ssl.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-ssl.conf.erb deleted file mode 100644 index 3946f57bc..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-ssl.conf.erb +++ /dev/null @@ -1,81 +0,0 @@ -# Generated by Chef - -## -## SSL settings -## - -# SSL/TLS support: yes, no, required. -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl', 'yes') %> - -# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before -# dropping root privileges, so keep the key file unreadable by anyone but -# root. Included doc/mkcert.sh can be used to easily generate self-signed -# certificate, just make sure to update the domains in dovecot-openssl.cnf -<% case node['platform_family'] - when 'rhel', 'fedora', 'suse' - ssl_cert = ' -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_cert', ssl_cert) %> -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_key', ssl_key) %> - -# If key file is password protected, give the password here. Alternatively -# give it when starting dovecot with -p parameter. Since this file is often -# world-readable, you may want to place this setting instead to a different -# root owned 0600 file by using ssl_key_password = - -# PEM encoded trusted certificate authority. Set this only if you intend to use -# ssl_verify_client_cert=yes. The file should contain the CA certificate(s) -# followed by the matching CRL(s). (e.g. ssl_ca = <%= ca_pem %>) -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_ca') %> - -# Require that CRL check succeeds for client certificates. -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_require_crl', true) %> - -# Directory and/or file for trusted SSL CA certificates. These are used only -# when Dovecot needs to act as an SSL client (e.g. imapc backend). The -# directory is usually /etc/ssl/certs in Debian-based systems and the file is -# /etc/pki/tls/cert.pem in RedHat-based systems. -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_client_ca_dir') %> -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_client_ca_file') %> - -# Request client to send a certificate. If you also want to require it, set -# auth_ssl_require_client_cert=yes in auth section. -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_verify_client_cert', false) %> - -# Which field from certificate to use for username. commonName and -# x500UniqueIdentifier are the usual choices. You'll also need to set -# auth_ssl_username_from_cert=yes. -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_cert_username_field', 'commonName') %> - -# How often to regenerate the SSL parameters file. Generation is quite CPU -# intensive operation. The value is in hours, 0 disables regeneration -# entirely. -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_parameters_regenerate', 168) %> - -# DH parameters length to use. -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_dh_parameters_length', 1024) %> - -# SSL protocols to use -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_protocols', '!SSLv2') %> - -# SSL ciphers to use -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_cipher_list', 'ALL:!LOW:!SSLv2:!EXP:!aNULL') %> - -# Prefer the server's order of ciphers over client's. -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_prefer_server_ciphers', false) %> - -# SSL crypto device to use, for valid values run "openssl engine" -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_crypto_device') %> - -# SSL extra options. Currently supported options are: -# no_compression - Disable compression. -<%= DovecotCookbook::Conf.attribute(@conf, 'ssl_options') %> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-tcpwrapper.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-tcpwrapper.conf.erb deleted file mode 100644 index 77d6c7240..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/10-tcpwrapper.conf.erb +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Chef - -# 10-tcpwrapper.conf -# -# service name for hosts.{allow|deny} are those defined as -# inet_listener in master.conf -# -<% if @services['tcpwrap'].kind_of?(Hash) and @services['tcpwrap'].length > 0 -%> -login_access_sockets = tcpwrap - -<%= DovecotCookbook::Conf.service('tcpwrap', @services['tcpwrap']) %> -<% else -%> -#login_access_sockets = tcpwrap -# -#service tcpwrap { -# unix_listener login/tcpwrap { -# group = $default_login_user -# mode = 0600 -# user = $default_login_user -# } -#} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-lda.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-lda.conf.erb deleted file mode 100644 index 58fa20d32..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-lda.conf.erb +++ /dev/null @@ -1,54 +0,0 @@ -# Generated by Chef - -## -## LDA specific settings (also used by LMTP) -## - -# Address to use when sending rejection mails. -# Default is postmaster@. %d expands to recipient domain. -<%= DovecotCookbook::Conf.attribute(@conf, 'postmaster_address') %> - -# Hostname to use in various parts of sent mails (e.g. in Message-Id) and -# in LMTP replies. Default is the system's real hostname@domain. -<%= DovecotCookbook::Conf.attribute(@conf, 'hostname') %> - -# If user is over quota, return with temporary failure instead of -# bouncing the mail. -<%= DovecotCookbook::Conf.attribute(@conf, 'quota_full_tempfail', false) %> - -# Binary to use for sending mails. -<%= DovecotCookbook::Conf.attribute(@conf, 'sendmail_path', '/usr/sbin/sendmail') %> - -# If non-empty, send mails via this SMTP host[:port] instead of sendmail. -<%= DovecotCookbook::Conf.attribute(@conf, 'submission_host') %> - -# Subject: header to use for rejection mails. You can use the same variables -# as for rejection_reason below. -<%= DovecotCookbook::Conf.attribute(@conf, 'rejection_subject', 'Rejected: %s') %> - -# Human readable error message for rejection mails. You can use variables: -# %n = CRLF, %r = reason, %s = original subject, %t = recipient -<%= DovecotCookbook::Conf.attribute(@conf, 'rejection_reason', 'Your message to <%t> was automatically rejected:%n%r') %> - -# Delimiter character between local-part and detail in email address. -<%= DovecotCookbook::Conf.attribute(@conf, 'recipient_delimiter', '+') %> - -# Header where the original recipient address (SMTP's RCPT TO: address) is taken -# from if not available elsewhere. With dovecot-lda -a parameter overrides this. -# A commonly used header for this is X-Original-To. -<%= DovecotCookbook::Conf.attribute(@conf, 'lda_original_recipient_header') %> - -# Should saving a mail to a nonexistent mailbox automatically create it? -<%= DovecotCookbook::Conf.attribute(@conf, 'lda_mailbox_autocreate', false) %> - -# Should automatically created mailboxes be also automatically subscribed? -<%= DovecotCookbook::Conf.attribute(@conf, 'lda_mailbox_autosubscribe', false) %> - -<% if @protocols['lda'].kind_of?(Hash) and @protocols['lda'].length > 0 -%> -<%= DovecotCookbook::Conf.protocol('lda', @protocols['lda']) %> -<% else -%> -protocol lda { - # Space separated list of plugins to load (default is global mail_plugins). - #mail_plugins = $mail_plugins -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-mailboxes.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-mailboxes.conf.erb deleted file mode 100644 index 9a8986bf9..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-mailboxes.conf.erb +++ /dev/null @@ -1,80 +0,0 @@ -# Generated by Chef - -## -## Mailbox definitions -## - -# Each mailbox is specified in a separate mailbox section. The section name -# specifies the mailbox name. If it has spaces, you can put the name -# "in quotes". These sections can contain the following mailbox settings: -# -# auto: -# Indicates whether the mailbox with this name is automatically created -# implicitly when it is first accessed. The user can also be automatically -# subscribed to the mailbox after creation. The following values are -# defined for this setting: -# -# no - Never created automatically. -# create - Automatically created, but no automatic subscription. -# subscribe - Automatically created and subscribed. -# -# special_use: -# A space-separated list of SPECIAL-USE flags (RFC 6154) to use for the -# mailbox. There are no validity checks, so you could specify anything -# you want in here, but it's not a good idea to use flags other than the -# standard ones specified in the RFC: -# -# \All - This (virtual) mailbox presents all messages in the -# user's message store. -# \Archive - This mailbox is used to archive messages. -# \Drafts - This mailbox is used to hold draft messages. -# \Flagged - This (virtual) mailbox presents all messages in the -# user's message store marked with the IMAP \Flagged flag. -# \Junk - This mailbox is where messages deemed to be junk mail -# are held. -# \Sent - This mailbox is used to hold copies of messages that -# have been sent. -# \Trash - This mailbox is used to hold messages that have been -# deleted. -# -# comment: -# Defines a default comment or note associated with the mailbox. This -# value is accessible through the IMAP METADATA mailbox entries -# "/shared/comment" and "/private/comment". Users with sufficient -# privileges can override the default value for entries with a custom -# value. - -# NOTE: Assumes "namespace inbox" has been defined in 10-mail.conf. -# namespace inbox { -# # These mailboxes are widely used and could perhaps be created automatically: -# mailbox Drafts { -# special_use = \Drafts -# } -# mailbox Junk { -# special_use = \Junk -# } -# mailbox Trash { -# special_use = \Trash -# } -# -# # For \Sent mailboxes there are two widely used names. We'll mark both of -# # them as \Sent. User typically deletes one of them if duplicates are created. -# mailbox Sent { -# special_use = \Sent -# } -# mailbox "Sent Messages" { -# special_use = \Sent -# } -# -# # If you have a virtual "All messages" mailbox: -# #mailbox virtual/All { -# # special_use = \All -# # comment = All my messages -# #} -# -# # If you have a virtual "Flagged" mailbox: -# #mailbox virtual/Flagged { -# # special_use = \Flagged -# # comment = All my flagged messages -# #} -# } diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-replication.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-replication.conf.erb deleted file mode 100644 index 0724ff35a..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/15-replication.conf.erb +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Chef - -# This file will contain replication settings in case of a replicated -# master/master dovecot setup - -<% if @services['replicator'].kind_of?(Hash) and @services['replicator'].length > 0 -%> -<%= DovecotCookbook::Conf.service('replicator', @services['replicator']) %> -<% end -%> - -<% if @services['aggregator'].kind_of?(Hash) and @services['aggregator'].length > 0 -%> -<%= DovecotCookbook::Conf.service('aggregator', @services['aggregator']) %> -<% end -%> - -<% if @services['config'].kind_of?(Hash) and @services['config'].length > 0 -%> -<%= DovecotCookbook::Conf.service('config', @services['config']) %> -<% end -%> - -#Doveadm port and password for replication -<%= DovecotCookbook::Conf.attribute(@conf, 'doveadm_port', 3333) %> -<%= DovecotCookbook::Conf.attribute(@conf, 'doveadm_password', 'secret') %> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-imap.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-imap.conf.erb deleted file mode 100644 index 801e53ea5..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-imap.conf.erb +++ /dev/null @@ -1,81 +0,0 @@ -# Generated by Chef - -## -## IMAP specific settings -## - -<% if @protocols['imap'].kind_of?(Hash) and @protocols['imap'].length > 0 -%> -<%= DovecotCookbook::Conf.protocol('imap', @protocols['imap']) %> -<% else -%> -protocol imap { - # If nothing happens for this long while client is IDLEing, move the connection - # to imap-hibernate process and close the old imap process. This saves memory, - # because connections use very little memory in imap-hibernate process. The - # downside is that recreating the imap process back uses some resources. - #imap_hibernate_timeout = 0 - - # Maximum IMAP command line length. Some clients generate very long command - # lines with huge mailboxes, so you may need to raise this if you get - # "Too long argument" or "IMAP command line too large" errors often. - #imap_max_line_length = 64k - - # Maximum number of IMAP connections allowed for a user from each IP address. - # NOTE: The username is compared case-sensitively. - #mail_max_userip_connections = 10 - - # Space separated list of plugins to load (default is global mail_plugins). - #mail_plugins = $mail_plugins - - # IMAP logout format string: - # %i - total number of bytes read from client - # %o - total number of bytes sent to client - # %{fetch_hdr_count} - Number of mails with mail header data sent to client - # %{fetch_hdr_bytes} - Number of bytes with mail header data sent to client - # %{fetch_body_count} - Number of mails with mail body data sent to client - # %{fetch_body_bytes} - Number of bytes with mail body data sent to client - # %{deleted} - Number of mails where client added \Deleted flag - # %{expunged} - Number of mails that client expunged - # %{trashed} - Number of mails that client copied/moved to the - # special_use=\Trash mailbox. - #imap_logout_format = bytes=%i/%o - - # Override the IMAP CAPABILITY response. If the value begins with '+', - # add the given capabilities on top of the defaults (e.g. +XFOO XBAR). - #imap_capability = - - # How long to wait between "OK Still here" notifications when client is - # IDLEing. - #imap_idle_notify_interval = 2 mins - - # ID field names and values to send to clients. Using * as the value makes - # Dovecot use the default value. The following fields have default values - # currently: name, version, os, os-version, support-url, support-email. - #imap_id_send = - - # ID fields sent by client to log. * means everything. - #imap_id_log = - - # Workarounds for various client bugs: - # delay-newmail: - # Send EXISTS/RECENT new mail notifications only when replying to NOOP - # and CHECK commands. Some clients ignore them otherwise, for example OSX - # Mail ( diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-lmtp.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-lmtp.conf.erb deleted file mode 100644 index 0c0d1619e..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-lmtp.conf.erb +++ /dev/null @@ -1,32 +0,0 @@ -# Generated by Chef - -## -## LMTP specific settings -## - -# Support proxying to other LMTP/SMTP servers by performing passdb lookups. -<%= DovecotCookbook::Conf.attribute(@conf, 'lmtp_proxy', false) %> - -# When recipient address includes the detail (e.g. user+detail), try to save -# the mail to the detail mailbox. See also recipient_delimiter and -# lda_mailbox_autocreate settings. -<%= DovecotCookbook::Conf.attribute(@conf, 'lmtp_save_to_detail_mailbox', false) %> - -# Verify quota before replying to RCPT TO. This adds a small overhead. -<%= DovecotCookbook::Conf.attribute(@conf, 'lmtp_rcpt_check_quota', false) %> - -# Which recipient address to use for Delivered-To: header and Received: -# header. The default is "final", which is the same as the one given to -# RCPT TO command. "original" uses the address given in RCPT TO's ORCPT -# parameter, "none" uses nothing. Note that "none" is currently always used -# when a mail has multiple recipients. -<%= DovecotCookbook::Conf.attribute(@conf, 'lmtp_hdr_delivery_address', 'final') %> - -<% if @protocols['lmtp'].kind_of?(Hash) and @protocols['lmtp'].length > 0 -%> -<%= DovecotCookbook::Conf.protocol('lmtp', @protocols['lmtp']) %> -<% else -%> -protocol lmtp { - # Space separated list of plugins to load (default is global mail_plugins). - #mail_plugins = $mail_plugins -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-managesieve.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-managesieve.conf.erb deleted file mode 100644 index 4f367c872..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-managesieve.conf.erb +++ /dev/null @@ -1,87 +0,0 @@ -# Generated by Chef - -## -## ManageSieve specific settings -## - -# Service definitions - -<% if @services['managesieve-login'].kind_of?(Hash) and @services['managesieve-login'].length > 0 -%> -<%= DovecotCookbook::Conf.service('managesieve-login', @services['managesieve-login']) %> -<% else -%> -service managesieve-login { - #inet_listener sieve { - # port = 4190 - #} - - #inet_listener sieve_deprecated { - # port = 2000 - #} - - # Number of connections to handle before starting a new process. Typically - # the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0 - # is faster. - #service_count = 1 - - # Number of processes to always keep waiting for more connections. - #process_min_avail = 0 - - # If you set service_count=0, you probably need to grow this. - #vsz_limit = 64M -} -<% end -%> - -<% if @services['managesieve'].kind_of?(Hash) and @services['managesieve'].length > 0 -%> -<%= DovecotCookbook::Conf.service('managesieve', @services['managesieve']) %> -<% else -%> -service managesieve { - # Max. number of ManageSieve processes (connections) - #process_count = 1024 -} -<% end -%> - -# Service configuration - -<% if @protocols['sieve'].kind_of?(Hash) and @protocols['sieve'].length > 0 -%> -<%= DovecotCookbook::Conf.protocol('sieve', @protocols['sieve']) %> -<% else -%> -protocol sieve { - # Maximum ManageSieve command line length in bytes. ManageSieve usually does - # not involve overly long command lines, so this setting will not normally - # need adjustment - #managesieve_max_line_length = 65536 - - # Maximum number of ManageSieve connections allowed for a user from each IP - # address. - # NOTE: The username is compared case-sensitively. - #mail_max_userip_connections = 10 - - # Space separated list of plugins to load (none known to be useful so far). - # Do NOT try to load IMAP plugins here. - #mail_plugins = - - # MANAGESIEVE logout format string: - # %i - total number of bytes read from client - # %o - total number of bytes sent to client - #managesieve_logout_format = bytes=%i/%o - - # To fool ManageSieve clients that are focused on CMU's timesieved you can - # specify the IMPLEMENTATION capability that Dovecot reports to clients. - # For example: 'Cyrus timsieved v2.2.13' - #managesieve_implementation_string = Dovecot Pigeonhole - - # Explicitly specify the SIEVE and NOTIFY capability reported by the server - # before login. If left unassigned these will be reported dynamically - # according to what the Sieve interpreter supports by default (after login - # this may differ depending on the user). - #managesieve_sieve_capability = - #managesieve_notify_capability = - - # The maximum number of compile errors that are returned to the client upon - # script upload or script verification. - #managesieve_max_compile_errors = 5 - - # Refer to 90-sieve.conf for script quota configuration and configuration of - # Sieve execution limits. -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-pop3.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-pop3.conf.erb deleted file mode 100644 index 10032c8be..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/20-pop3.conf.erb +++ /dev/null @@ -1,105 +0,0 @@ -# Generated by Chef - -## -## POP3 specific settings -## - -<% if @protocols['pop3'].kind_of?(Hash) and @protocols['pop3'].length > 0 -%> -<%= DovecotCookbook::Conf.protocol('pop3', @protocols['pop3']) %> -<% else -%> -protocol pop3 { - # Don't try to set mails non-recent or seen with POP3 sessions. This is - # mostly intended to reduce disk I/O. With maildir it doesn't move files - # from new/ to cur/, with mbox it doesn't write Status-header. - #pop3_no_flag_updates = no - - # Support LAST command which exists in old POP3 specs, but has been removed - # from new ones. Some clients still wish to use this though. Enabling this - # makes RSET command clear all \Seen flags from messages. - #pop3_enable_last = no - - # If mail has X-UIDL header, use it as the mail's UIDL. - #pop3_reuse_xuidl = no - - # Allow only one POP3 session to run simultaneously for the same user. - #pop3_lock_session = no - - # POP3 requires message sizes to be listed as if they had CR+LF linefeeds. - # Many POP3 servers violate this by returning the sizes with LF linefeeds, - # because it's faster to get. When this setting is enabled, Dovecot still - # tries to do the right thing first, but if that requires opening the - # message, it fallbacks to the easier (but incorrect) size. - #pop3_fast_size_lookups = no - - # POP3 UIDL (unique mail identifier) format to use. You can use following - # variables, along with the variable modifiers described in - # doc/wiki/Variables.txt (e.g. %Uf for the filename in uppercase) - # - # %v - Mailbox's IMAP UIDVALIDITY - # %u - Mail's IMAP UID - # %m - MD5 sum of the mailbox headers in hex (mbox only) - # %f - filename (maildir only) - # %g - Mail's GUID - # - # If you want UIDL compatibility with other POP3 servers, use: - # UW's ipop3d : %08Xv%08Xu - # Courier : %f or %v-%u (both might be used simultaneosly) - # Cyrus (<= 2.1.3) : %u - # Cyrus (>= 2.1.4) : %v.%u - # Dovecot v0.99.x : %v.%u - # tpop3d : %Mf - # - # Note that Outlook 2003 seems to have problems with %v.%u format which was - # Dovecot's default, so if you're building a new server it would be a good - # idea to change this. %08Xu%08Xv should be pretty fail-safe. - # - #pop3_uidl_format = %08Xu%08Xv - - # Permanently save UIDLs sent to POP3 clients, so pop3_uidl_format changes - # won't change those UIDLs. Currently this works only with Maildir. - #pop3_save_uidl = no - - # What to do about duplicate UIDLs if they exist? - # allow: Show duplicates to clients. - # rename: Append a temporary -2, -3, etc. counter after the UIDL. - #pop3_uidl_duplicates = allow - - # This option changes POP3 behavior so that it's not possible to actually - # delete mails via POP3, only hide them from future POP3 sessions. The mails - # will still be counted towards user's quota until actually deleted via IMAP. - # Use e.g. "$POP3Deleted" as the value (it will be visible as IMAP keyword). - # Make sure you can legally archive mails before enabling this setting. - #pop3_deleted_flag = - - # POP3 logout format string: - # %i - total number of bytes read from client - # %o - total number of bytes sent to client - # %t - number of TOP commands - # %p - number of bytes sent to client as a result of TOP command - # %r - number of RETR commands - # %b - number of bytes sent to client as a result of RETR command - # %d - number of deleted messages - # %{deleted_bytes} - number of bytes in deleted messages - # %m - number of messages (before deletion) - # %s - mailbox size in bytes (before deletion) - # %u - old/new UIDL hash. may help finding out if UIDLs changed unexpectedly - #pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s - - # Maximum number of POP3 connections allowed for a user from each IP address. - # NOTE: The username is compared case-sensitively. - #mail_max_userip_connections = 10 - - # Space separated list of plugins to load (default is global mail_plugins). - #mail_plugins = $mail_plugins - - # Workarounds for various client bugs: - # outlook-no-nuls: - # Outlook and Outlook Express hang if mails contain NUL characters. - # This setting replaces them with 0x80 character. - # oe-ns-eoh: - # Outlook Express and Netscape Mail breaks if end of headers-line is - # missing. This option simply sends it if it's missing. - # The list is space-separated. - #pop3_client_workarounds = -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-acl.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-acl.conf.erb deleted file mode 100644 index 0175b7b81..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-acl.conf.erb +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Chef - -## -## Mailbox access control lists. -## - -# vfile backend reads ACLs from "dovecot-acl" file from mail directory. -# You can also optionally give a global ACL directory path where ACLs are -# applied to all users' mailboxes. The global ACL directory contains -# one file for each mailbox, eg. INBOX or sub.mailbox. cache_secs parameter -# specifies how many seconds to wait between stat()ing dovecot-acl file -# to see if it changed. -<% if @plugins.has_key?('acl') and @plugins['acl'].kind_of?(Hash) -%> -<%= DovecotCookbook::Conf.plugin('acl', @plugins['acl']) %> -<% else -%> -plugin { - #acl = vfile:/etc/dovecot/global-acls:cache_secs=300 -} - -# To let users LIST mailboxes shared by other users, Dovecot needs a -# shared mailbox dictionary. For example: -plugin { - #acl_shared_dict = file:/var/lib/dovecot/shared-mailboxes -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-plugin.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-plugin.conf.erb deleted file mode 100644 index d717d27bf..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-plugin.conf.erb +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Chef - -## -## Plugin settings -## - -# All wanted plugins must be listed in mail_plugins setting before any of the -# settings take effect. See for list of plugins and -# their configuration. Note that %variable expansion is done for all values. - -<% unknown_plugins = DovecotCookbook::Plugins.list_unknown(@plugins) - if unknown_plugins.length > 0 - unknown_plugins.each do |plugin| - if @plugins[plugin].kind_of?(Hash) - -%> -<%= DovecotCookbook::Conf.plugin(plugin, @plugins[plugin]) %> -<% end - end - else -%> -plugin { - #setting_name = value -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-quota.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-quota.conf.erb deleted file mode 100644 index e5631c3fc..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-quota.conf.erb +++ /dev/null @@ -1,95 +0,0 @@ -# Generated by Chef - -## -## Quota configuration. -## - -# Note that you also have to enable quota plugin in mail_plugins setting. -# - -<% if [@plugins['quota'], @services['quota-status'], @services['quota-warning']].any? {|p| !p.nil?} -%> - <% unless @plugins['quota'].nil? or !@plugins['quota'].kind_of?(Hash) or @plugins['quota'].empty? -%> -<%= DovecotCookbook::Conf.plugin('quota', @plugins['quota']) %> - <% end -%> - <% unless @services['quota-status'].nil? or !@services['quota-status'].kind_of?(Hash) or @services['quota-status'].empty? -%> -<%= DovecotCookbook::Conf.service('quota-status', @services['quota-status']) %> - <% end -%> - <% unless @services['quota-warning'].nil? or !@services['quota-warning'].kind_of?(Hash) or @services['quota-warning'].empty? -%> -<%= DovecotCookbook::Conf.service('quota-warning', @services['quota-warning']) %> - <% end -%> -<% else -%> - -## -## Quota limits -## - -# Quota limits are set using "quota_rule" parameters. To get per-user quota -# limits, you can set/override them by returning "quota_rule" extra field -# from userdb. It's also possible to give mailbox-specific limits, for example -# to give additional 100 MB when saving to Trash: - -plugin { - #quota_rule = *:storage=1G - #quota_rule2 = Trash:storage=+100M - - # LDA/LMTP allows saving the last mail to bring user from under quota to - # over quota, if the quota doesn't grow too high. Default is to allow as - # long as quota will stay under 10% above the limit. Also allowed e.g. 10M. - #quota_grace = 10%% -} - -## -## Quota warnings -## - -# You can execute a given command when user exceeds a specified quota limit. -# Each quota root has separate limits. Only the command for the first -# exceeded limit is excecuted, so put the highest limit first. -# The commands are executed via script service by connecting to the named -# UNIX socket (quota-warning below). -# Note that % needs to be escaped as %%, otherwise "% " expands to empty. - -plugin { - #quota_warning = storage=95%% quota-warning 95 %u - #quota_warning2 = storage=80%% quota-warning 80 %u -} - -# Example quota-warning service. The unix listener's permissions should be -# set in a way that mail processes can connect to it. Below example assumes -# that mail processes run as vmail user. If you use mode=0666, all system users -# can generate quota warnings to anyone. -#service quota-warning { -# executable = script /usr/local/bin/quota-warning.sh -# user = dovecot -# unix_listener quota-warning { -# user = vmail -# } -#} - -## -## Quota backends -## - -# Multiple backends are supported: -# dirsize: Find and sum all the files found from mail directory. -# Extremely SLOW with Maildir. It'll eat your CPU and disk I/O. -# dict: Keep quota stored in dictionary (eg. SQL) -# maildir: Maildir++ quota -# fs: Read-only support for filesystem quota - -plugin { - #quota = dirsize:User quota - #quota = maildir:User quota - #quota = dict:User quota::proxy::quota - #quota = fs:User quota -} - -# Multiple quota roots are also possible, for example this gives each user -# their own 100MB quota and one shared 1GB quota within the domain: -plugin { - #quota = dict:user::proxy::quota - #quota2 = dict:domain:%d:proxy::quota_domain - #quota_rule = *:storage=102400 - #quota2_rule = *:storage=1048576 -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-sieve.conf.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-sieve.conf.erb deleted file mode 100644 index f68fd62cd..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/90-sieve.conf.erb +++ /dev/null @@ -1,89 +0,0 @@ -# Generated by Chef - -## -## Settings for the Sieve interpreter -## - -# Do not forget to enable the Sieve plugin in 15-lda.conf and 20-lmtp.conf -# by adding it to the respective mail_plugins= settings. - -<% if @plugins.has_key?('sieve') and @plugins['sieve'].kind_of?(Hash) -%> -<%= DovecotCookbook::Conf.plugin('sieve', @plugins['sieve']) %> -<% else -%> -plugin { - # The path to the user's main active script. If ManageSieve is used, this the - # location of the symbolic link controlled by ManageSieve. - #sieve = ~/.dovecot.sieve - - # The default Sieve script when the user has none. This is a path to a global - # sieve script file, which gets executed ONLY if user's private Sieve script - # doesn't exist. Be sure to pre-compile this script manually using the sievec - # command line tool. - # --> See sieve_before fore executing scripts before the user's personal - # script. - #sieve_global_path = /var/lib/dovecot/sieve/default.sieve - - # Directory for :personal include scripts for the include extension. This - # is also where the ManageSieve service stores the user's scripts. - #sieve_dir = ~/sieve - - # Directory for :global include scripts for the include extension. - #sieve_global_dir = - - # Path to a script file or a directory containing script files that need to be - # executed before the user's script. If the path points to a directory, all - # the Sieve scripts contained therein (with the proper .sieve extension) are - # executed. The order of execution is determined by the file names, using a - # normal 8bit per-character comparison. - #sieve_before = - - # Identical to sieve_before, only the specified scripts are executed after the - # user's script (only when keep is still in effect!). - #sieve_after = - - # Which Sieve language extensions are available to users. By default, all - # supported extensions are available, except for deprecated extensions or - # those that are still under development. Some system administrators may want - # to disable certain Sieve extensions or enable those that are not available - # by default. This setting can use '+' and '-' to specify differences relative - # to the default. For example `sieve_extensions = +imapflags' will enable the - # deprecated imapflags extension in addition to all extensions thatwere - # already enabled by default. - #sieve_extensions = +notify +imapflags - - # The Pigeonhole Sieve interpreter can have plugins of its own. Using this - # setting, the used plugins can be specified. Check the Dovecot wiki - # (wiki2.dovecot.org) or the pigeonhole website - # (http://pigeonhole.dovecot.org) for available plugins. - #sieve_plugins = - - # The separator that is expected between the :user and :detail - # address parts introduced by the subaddress extension. This may - # also be a sequence of characters (e.g. '--'). The current - # implementation looks for the separator from the left of the - # localpart and uses the first one encountered. The :user part is - # left of the separator and the :detail part is right. This setting - # is also used by Dovecot's LMTP service. - #recipient_delimiter = + - - # The maximum size of a Sieve script. The compiler will refuse to - # compile any script larger than this limit. - #sieve_max_script_size = 1M - - # The maximum number of actions that can be performed during a single - # script execution. - #sieve_max_actions = 32 - - # The maximum number of redirect actions that can be performed during - # a single script execution. - #sieve_max_redirects = 4 - - # The maximum number of personal Sieve scripts a single user can have. - # (Currently only relevant for ManageSieve) - #sieve_quota_max_scripts = 0 - - # The maximum amount of disk storage a single user's scripts may occupy. - # (Currently only relevant for ManageSieve) - #sieve_quota_max_storage = 0 -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-checkpassword.conf.ext.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-checkpassword.conf.ext.erb deleted file mode 100644 index 4305d33c9..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-checkpassword.conf.ext.erb +++ /dev/null @@ -1,31 +0,0 @@ -# Generated by Chef - -# Authentication for checkpassword users. Included from 10-auth.conf. -# -# - -<% if DovecotCookbook::Auth.passdb?(@auth['checkpassword']) -%> -<%= DovecotCookbook::Conf.authdb('checkpassword', 'passdb', @auth['checkpassword']['passdb']) %> -<% else -%> -passdb { - driver = checkpassword - args = /usr/bin/checkpassword -} -<% end -%> - -<% if DovecotCookbook::Auth.userdb?(@auth['checkpassword']) -%> -<%= DovecotCookbook::Conf.authdb('checkpassword', 'userdb', @auth['checkpassword']['userdb']) %> -<% else -%> -# passdb lookup should return also userdb info -userdb { - driver = prefetch -} -<% end -%> - -# Standard checkpassword doesn't support direct userdb lookups. -# If you need checkpassword userdb, the checkpassword must support -# Dovecot-specific extensions. -#userdb { -# driver = checkpassword -# args = /usr/bin/checkpassword -#} diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-deny.conf.ext.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-deny.conf.ext.erb deleted file mode 100644 index 45095f543..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-deny.conf.ext.erb +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Chef - -# Deny access for users. Included from 10-auth.conf. - -# Users can be (temporarily) disabled by adding a passdb with deny=yes. -# If the user is found from that database, authentication will fail. -# The deny passdb should always be specified before others, so it gets -# checked first. - -<% if DovecotCookbook::Auth.passdb?(@auth['deny']) -%> -<%= DovecotCookbook::Conf.authdb('passwd-file', 'passdb', @auth['deny']['passdb']) %> -<% else -%> -# Example deny passdb using passwd-file. You can use any passdb though. -passdb { - driver = passwd-file - deny = yes - - # File contains a list of usernames, one per line - args = /etc/dovecot/deny-users -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-dict.conf.ext.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-dict.conf.ext.erb deleted file mode 100644 index f3acc1e24..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-dict.conf.ext.erb +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Chef - -# Authentication via dict backend. Included from 10-auth.conf. -# -# - -<% if DovecotCookbook::Auth.passdb?(@auth['dict']) -%> -<%= DovecotCookbook::Conf.authdb('dict', 'passdb', @auth['dict']['passdb']) %> -<% else -%> -passdb { - driver = dict - - # Path for dict configuration file, see - # example-config/dovecot-dict-auth.conf.ext - args = /etc/dovecot/dovecot-dict-auth.conf.ext -} -<% end -%> - -<% if DovecotCookbook::Auth.userdb?(@auth['dict']) -%> -<%= DovecotCookbook::Conf.authdb('dict', 'userdb', @auth['dict']['userdb']) %> -<% else -%> -userdb { - driver = dict - args = /etc/dovecot/dovecot-dict-auth.conf.ext -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-ldap.conf.ext.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-ldap.conf.ext.erb deleted file mode 100644 index d10225be1..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-ldap.conf.ext.erb +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Chef - -# Authentication for LDAP users. Included from 10-auth.conf. -# -# - -<% if DovecotCookbook::Auth.passdb?(@auth['ldap']) -%> -<%= DovecotCookbook::Conf.authdb('ldap', 'passdb', @auth['ldap']['passdb']) %> -<% else -%> -passdb { - driver = ldap - - # Path for LDAP configuration file, see example-config/dovecot-ldap.conf.ext - args = /etc/dovecot/dovecot-ldap.conf.ext -} -<% end -%> - -<% if DovecotCookbook::Auth.userdb?(@auth['ldap']) -%> -<%= DovecotCookbook::Conf.authdb('ldap', 'userdb', @auth['ldap']['userdb']) %> -<% else -%> -# "prefetch" user database means that the passdb already provided the -# needed information and there's no need to do a separate userdb lookup. -# -#userdb { -# driver = prefetch -#} - -userdb { - driver = ldap - args = /etc/dovecot/dovecot-ldap.conf.ext - - # Default fields can be used to specify defaults that LDAP may override - #default_fields = home=/home/virtual/%u -} - -# If you don't have any user-specific settings, you can avoid the userdb LDAP -# lookup by using userdb static instead of userdb ldap, for example: -# -#userdb { - #driver = static - #args = uid=vmail gid=vmail home=/var/vmail/%u -#} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-master.conf.ext.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-master.conf.ext.erb deleted file mode 100644 index 3aed0840f..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-master.conf.ext.erb +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Chef - -# Authentication for master users. Included from 10-auth.conf. - -# By adding master=yes setting inside a passdb you make the passdb a list -# of "master users", who can log in as anyone else. -# - -<% if DovecotCookbook::Auth.passdb?(@auth['master']) -%> -<%= DovecotCookbook::Conf.authdb('passwd-file', 'passdb', @auth['master']['passdb']) %> -<% else -%> -# Example master user passdb using passwd-file. You can use any passdb though. -passdb { - driver = passwd-file - master = yes - args = /etc/dovecot/master-users - - # Unless you're using PAM, you probably still want the destination user to - # be looked up from passdb that it really exists. pass=yes does that. - pass = yes -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-passwdfile.conf.ext.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-passwdfile.conf.ext.erb deleted file mode 100644 index c76d50d30..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-passwdfile.conf.ext.erb +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Chef - -# Authentication for passwd-file users. Included from 10-auth.conf. -# -# passwd-like file with specified location. -# - -<% if DovecotCookbook::Auth.passdb?(@auth['passwdfile']) -%> -<%= DovecotCookbook::Conf.authdb('passwd-file', 'passdb', @auth['passwdfile']['passdb']) %> -<% else -%> -passdb { - driver = passwd-file - args = scheme=CRYPT username_format=%u /etc/dovecot/users -} -<% end -%> - -<% if DovecotCookbook::Auth.userdb?(@auth['passwdfile']) -%> -<%= DovecotCookbook::Conf.authdb('passwd-file', 'userdb', @auth['passwdfile']['userdb']) %> -<% else -%> -userdb { - driver = passwd-file - args = username_format=%u /etc/dovecot/users - - # Default fields that can be overridden by passwd-file - #default_fields = quota_rule=*:storage=1G - - # Override fields from passwd-file - #override_fields = home=/home/virtual/%u -} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-sql.conf.ext.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-sql.conf.ext.erb deleted file mode 100644 index ae51bcd7a..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-sql.conf.ext.erb +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by Chef - -# Authentication for SQL users. Included from 10-auth.conf. -# -# - -<% if DovecotCookbook::Auth.passdb?(@auth['sql']) -%> -<%= DovecotCookbook::Conf.authdb('sql', 'passdb', @auth['sql']['passdb']) %> -<% else -%> -passdb { - driver = sql - - # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext - args = /etc/dovecot/dovecot-sql.conf.ext -} -<% end -%> - -<% if DovecotCookbook::Auth.userdb?(@auth['sql']) -%> -<%= DovecotCookbook::Conf.authdb('sql', 'userdb', @auth['sql']['userdb']) %> -<% else -%> -# "prefetch" user database means that the passdb already provided the -# needed information and there's no need to do a separate userdb lookup. -# -#userdb { -# driver = prefetch -#} - -userdb { - driver = sql - args = /etc/dovecot/dovecot-sql.conf.ext -} - -# If you don't have any user-specific settings, you can avoid the user_query -# by using userdb static instead of userdb sql, for example: -# -#userdb { - #driver = static - #args = uid=vmail gid=vmail home=/var/vmail/%u -#} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-static.conf.ext.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-static.conf.ext.erb deleted file mode 100644 index a2c36f27c..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-static.conf.ext.erb +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Chef - -# Static passdb. Included from 10-auth.conf. - -# This can be used for situations where Dovecot doesn't need to verify the -# username or the password, or if there is a single password for all users: -# -# - proxy frontend, where the backend verifies the password -# - proxy backend, where the frontend already verified the password -# - authentication with SSL certificates -# - simple testing - -<% if DovecotCookbook::Auth.passdb?(@auth['static']) -%> -<%= DovecotCookbook::Conf.authdb('static', 'passdb', @auth['static']['passdb']) %> -<% else -%> -#passdb { -# driver = static -# args = proxy=y host=%1Mu.example.com nopassword=y -#} - -#passdb { -# driver = static -# args = password=test -#} -<% end -%> - -<% if DovecotCookbook::Auth.userdb?(@auth['static']) -%> -<%= DovecotCookbook::Conf.authdb('static', 'userdb', @auth['static']['userdb']) %> -<% else -%> -#userdb { -# driver = static -# args = uid=vmail gid=vmail home=/home/%u -#} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-system.conf.ext.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-system.conf.ext.erb deleted file mode 100644 index 16394ee35..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-system.conf.ext.erb +++ /dev/null @@ -1,84 +0,0 @@ -# Generated by Chef - -# Authentication for system users. Included from 10-auth.conf. -# -# -# - -# PAM authentication. Preferred nowadays by most systems. -# PAM is typically used with either userdb passwd or userdb static. -# REMEMBER: You'll need /etc/pam.d/dovecot file created for PAM -# authentication to actually work. -<% if DovecotCookbook::Auth.passdb?(@auth['system']) -%> -<%= DovecotCookbook::Conf.authdb('pam', 'passdb', @auth['system']['passdb']) %> -<% else -%> -passdb { - driver = pam - # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=] - # [cache_key=] [] - #args = dovecot -} - -# System users (NSS, /etc/passwd, or similiar). -# In many systems nowadays this uses Name Service Switch, which is -# configured in /etc/nsswitch.conf. -#passdb { - #driver = passwd - # [blocking=no] - #args = -#} - -# Shadow passwords for system users (NSS, /etc/shadow or similiar). -# Deprecated by PAM nowadays. -# -#passdb { - #driver = shadow - # [blocking=no] - #args = -#} - -# PAM-like authentication for OpenBSD. -# -#passdb { - #driver = bsdauth - # [blocking=no] [cache_key=] - #args = -#} -<% end -%> - -## -## User databases -## - -# System users (NSS, /etc/passwd, or similiar). In many systems nowadays this -# uses Name Service Switch, which is configured in /etc/nsswitch.conf. -<% if DovecotCookbook::Auth.userdb?(@auth['system']) -%> -<%= DovecotCookbook::Conf.authdb('passwd', 'userdb', @auth['system']['userdb']) %> -<% else -%> -userdb { - # - driver = passwd - # [blocking=no] - #args = - - # Override fields from passwd - #override_fields = home=/home/virtual/%u -} - -# Static settings generated from template -#userdb { - #driver = static - # Can return anything a userdb could normally return. For example: - # - # args = uid=500 gid=500 home=/var/mail/%u - # - # LDA and LMTP needs to look up users only from the userdb. This of course - # doesn't work with static userdb because there is no list of users. - # Normally static userdb handles this by doing a passdb lookup. This works - # with most passdbs, with PAM being the most notable exception. If you do - # the user verification another way, you can add allow_all_users=yes to - # the args in which case the passdb lookup is skipped. - # - #args = -#} -<% end -%> diff --git a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-vpopmail.conf.ext.erb b/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-vpopmail.conf.ext.erb deleted file mode 100644 index ddaf63547..000000000 --- a/lc-gdn-chef/cookbooks/dovecot/templates/default/conf.d/auth-vpopmail.conf.ext.erb +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Chef - -# Authentication for vpopmail users. Included from 10-auth.conf. -# -# - -<% if DovecotCookbook::Auth.passdb?(@auth['vpopmail']) -%> -<%= DovecotCookbook::Conf.authdb('vpopmail', 'passdb', @auth['vpopmail']['passdb']) %> -<% else -%> -passdb { - driver = vpopmail - - # [cache_key=] [webmail=] - args = -} -<% end -%> - -<% if DovecotCookbook::Auth.userdb?(@auth['vpopmail']) -%> -<%= DovecotCookbook::Conf.authdb('vpopmail', 'userdb', @auth['vpopmail']['userdb']) %> -<% else -%> -userdb { - driver = vpopmail - - # [quota_template=