diff --git a/app/initializers/cluster-store.js b/app/initializers/cluster-store.js index 522be317fb..9bd2c32c98 100644 --- a/app/initializers/cluster-store.js +++ b/app/initializers/cluster-store.js @@ -1,4 +1,4 @@ -import initializer from '@rancher/ember-api-store/initializers/store'; +import initializer from 'ember-api-store/initializers/store'; export default { name: 'cluster-store', diff --git a/app/initializers/extend-resource.js b/app/initializers/extend-resource.js index b1b66e39f1..5fe13fdbc2 100644 --- a/app/initializers/extend-resource.js +++ b/app/initializers/extend-resource.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import CattleTransitioningResource from 'ui/mixins/cattle-transitioning-resource'; export function initialize(/* application */) { diff --git a/app/initializers/global-store.js b/app/initializers/global-store.js index fc687595ff..821c31f2d4 100644 --- a/app/initializers/global-store.js +++ b/app/initializers/global-store.js @@ -1,4 +1,4 @@ -import initializer from '@rancher/ember-api-store/initializers/store'; +import initializer from 'ember-api-store/initializers/store'; export default { name: 'global-store', diff --git a/app/initializers/session.js b/app/initializers/session.js index 20d0615418..e525415458 100644 --- a/app/initializers/session.js +++ b/app/initializers/session.js @@ -1,4 +1,4 @@ -import Serializable from '@rancher/ember-api-store/mixins/serializable'; +import Serializable from 'ember-api-store/mixins/serializable'; // Don't serialize the injected session Serializable.reopen({ reservedKeys: ['session'], }); diff --git a/app/initializers/webhook-store.js b/app/initializers/webhook-store.js index f9d49d7e84..2d25e7547b 100644 --- a/app/initializers/webhook-store.js +++ b/app/initializers/webhook-store.js @@ -1,4 +1,4 @@ -import initializer from '@rancher/ember-api-store/initializers/store'; +import initializer from 'ember-api-store/initializers/store'; export default { name: 'webhook-store', diff --git a/app/models/activedirectoryconfig.js b/app/models/activedirectoryconfig.js index dd9d09f324..17ef0f86db 100644 --- a/app/models/activedirectoryconfig.js +++ b/app/models/activedirectoryconfig.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; var ActiveDirectoryConfig = Resource.extend({ type: 'activeDirectoryConfig', }); diff --git a/app/models/app.js b/app/models/app.js index af2dbaa79f..a12a3c4b5b 100644 --- a/app/models/app.js +++ b/app/models/app.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { computed, get } from '@ember/object'; import { parseHelmExternalId } from 'ui/utils/parse-externalid'; import StateCounts from 'ui/mixins/state-counts'; diff --git a/app/models/azurekubernetesserviceconfig.js b/app/models/azurekubernetesserviceconfig.js index 87ec512e69..f99df2f3a6 100644 --- a/app/models/azurekubernetesserviceconfig.js +++ b/app/models/azurekubernetesserviceconfig.js @@ -1,3 +1,3 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend({ type: 'azureKubernetesServiceConfig', }); diff --git a/app/models/catalog.js b/app/models/catalog.js index 77d010cc89..af7fa88299 100644 --- a/app/models/catalog.js +++ b/app/models/catalog.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { inject as service } from '@ember/service'; import { computed, get, set } from '@ember/object'; import { ucFirst } from 'shared/utils/util'; diff --git a/app/models/catalogtemplate.js b/app/models/catalogtemplate.js index 01404e433a..60a16242db 100644 --- a/app/models/catalogtemplate.js +++ b/app/models/catalogtemplate.js @@ -1,5 +1,5 @@ import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { parseExternalId } from 'ui/utils/parse-externalid'; import C from 'ui/utils/constants'; import { computed } from '@ember/object'; diff --git a/app/models/certificate.js b/app/models/certificate.js index b40a61181a..35a2b91612 100644 --- a/app/models/certificate.js +++ b/app/models/certificate.js @@ -1,7 +1,7 @@ import { inject as service } from '@ember/service'; import { get } from '@ember/object'; import { computed } from '@ember/object' -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend({ router: service(), diff --git a/app/models/cloudcredential.js b/app/models/cloudcredential.js index dcb84b3564..4bd7dffc31 100644 --- a/app/models/cloudcredential.js +++ b/app/models/cloudcredential.js @@ -1,8 +1,8 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed } from '@ember/object'; import { notEmpty } from '@ember/object/computed'; import { inject as service } from '@ember/service'; -import { hasMany } from '@rancher/ember-api-store/utils/denormalize'; +import { hasMany } from 'ember-api-store/utils/denormalize'; const cloudCredential = Resource.extend({ modal: service(), diff --git a/app/models/cluster.js b/app/models/cluster.js index 93f9e983eb..4099c5c652 100644 --- a/app/models/cluster.js +++ b/app/models/cluster.js @@ -1,8 +1,8 @@ import { get, set, computed, observer } from '@ember/object'; import { on } from '@ember/object/evented'; import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; -import { hasMany, reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { hasMany, reference } from 'ember-api-store/utils/denormalize'; import ResourceUsage from 'shared/mixins/resource-usage'; import Grafana from 'shared/mixins/grafana'; import { equal, alias } from '@ember/object/computed'; diff --git a/app/models/clusteralertgroup.js b/app/models/clusteralertgroup.js index a5746bc60a..b02cf20d47 100644 --- a/app/models/clusteralertgroup.js +++ b/app/models/clusteralertgroup.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import Alert from 'ui/mixins/model-alert'; export default Resource.extend(Alert, { type: 'clusteralertgroup', }); diff --git a/app/models/clusteralertrule.js b/app/models/clusteralertrule.js index 9be8376043..e245910423 100644 --- a/app/models/clusteralertrule.js +++ b/app/models/clusteralertrule.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { get, computed } from '@ember/object'; import { inject as service } from '@ember/service'; import Alert from 'ui/mixins/model-alert'; diff --git a/app/models/clustercatalog.js b/app/models/clustercatalog.js index 4badba8087..9d0ccfaeca 100644 --- a/app/models/clustercatalog.js +++ b/app/models/clustercatalog.js @@ -1,5 +1,5 @@ import Catalog from 'ui/models/catalog'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; export default Catalog.extend({ level: 'cluster', diff --git a/app/models/clusterlogging.js b/app/models/clusterlogging.js index b64dae03de..da8fcbe5b8 100644 --- a/app/models/clusterlogging.js +++ b/app/models/clusterlogging.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import modelMixin from 'ui/mixins/logging-model'; export default Resource.extend(modelMixin, { type: 'clusterlogging', }); diff --git a/app/models/clusterroletemplatebinding.js b/app/models/clusterroletemplatebinding.js index c35cbb31f9..f4fb4e1dff 100644 --- a/app/models/clusterroletemplatebinding.js +++ b/app/models/clusterroletemplatebinding.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { get, computed } from '@ember/object'; import C from 'ui/utils/constants'; import PrincipalReference from 'ui/mixins/principal-reference'; diff --git a/app/models/clusterscan.js b/app/models/clusterscan.js index 99ff01c280..ff4f8963d4 100644 --- a/app/models/clusterscan.js +++ b/app/models/clusterscan.js @@ -1,5 +1,5 @@ import { alias, equal } from '@ember/object/computed'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed, get, set, observer } from '@ember/object'; import moment from 'moment'; import { downloadFile } from 'shared/utils/download-files'; diff --git a/app/models/clustertemplate.js b/app/models/clustertemplate.js index b9623736e9..25b5f984d6 100644 --- a/app/models/clustertemplate.js +++ b/app/models/clustertemplate.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { hasMany } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { hasMany } from 'ember-api-store/utils/denormalize'; import { computed, get } from '@ember/object'; import { inject as service } from '@ember/service'; diff --git a/app/models/clustertemplaterevision.js b/app/models/clustertemplaterevision.js index 845fd49e34..ee0e1f5527 100644 --- a/app/models/clustertemplaterevision.js +++ b/app/models/clustertemplaterevision.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { inject as service } from '@ember/service'; import { computed, get, set } from '@ember/object'; import { alias } from '@ember/object/computed'; diff --git a/app/models/configmap.js b/app/models/configmap.js index 03b7e2d0e6..facffc82e4 100644 --- a/app/models/configmap.js +++ b/app/models/configmap.js @@ -1,8 +1,8 @@ import { inject as service } from '@ember/service'; import { alias } from '@ember/object/computed'; import { computed, get } from '@ember/object'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; -import Resource from '@rancher/ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; import { isEmpty } from '@ember/utils'; export default Resource.extend({ diff --git a/app/models/container.js b/app/models/container.js index 64411137b7..055d798fff 100644 --- a/app/models/container.js +++ b/app/models/container.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import DisplayImage from 'shared/mixins/display-image'; import { get, computed } from '@ember/object'; import { inject as service } from '@ember/service'; diff --git a/app/models/credential.js b/app/models/credential.js index a5c83e6c34..8f5c70248e 100644 --- a/app/models/credential.js +++ b/app/models/credential.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { inject as service } from '@ember/service'; export default Resource.extend({ diff --git a/app/models/destinationrule.js b/app/models/destinationrule.js index a8b7129bfa..b6ef3b64e1 100644 --- a/app/models/destinationrule.js +++ b/app/models/destinationrule.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { inject as service } from '@ember/service'; import { computed } from '@ember/object'; diff --git a/app/models/dockercredential.js b/app/models/dockercredential.js index 5729ff1100..3d6d2bcce7 100644 --- a/app/models/dockercredential.js +++ b/app/models/dockercredential.js @@ -1,7 +1,7 @@ import { get, computed } from '@ember/object'; import { alias } from '@ember/object/computed' import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export const PRESETS = { 'index.docker.io': 'dockerhub', diff --git a/app/models/etcdbackup.js b/app/models/etcdbackup.js index 5ebec9807d..e69f49a0ba 100644 --- a/app/models/etcdbackup.js +++ b/app/models/etcdbackup.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed, get } from '@ember/object'; import { inject as service } from '@ember/service'; diff --git a/app/models/feature.js b/app/models/feature.js index 1614339ee0..58c980534e 100644 --- a/app/models/feature.js +++ b/app/models/feature.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed, set } from '@ember/object'; import { inject as service } from '@ember/service'; diff --git a/app/models/fluentServers.js b/app/models/fluentServers.js index 98dc4b51c5..242039637b 100644 --- a/app/models/fluentServers.js +++ b/app/models/fluentServers.js @@ -1,3 +1,3 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend({ type: 'fluentServer', }); diff --git a/app/models/gateway.js b/app/models/gateway.js index 2e7bd78df2..6497511375 100644 --- a/app/models/gateway.js +++ b/app/models/gateway.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { inject as service } from '@ember/service'; import { computed } from '@ember/object'; diff --git a/app/models/githubconfig.js b/app/models/githubconfig.js index fb86329659..0aa0b498a1 100644 --- a/app/models/githubconfig.js +++ b/app/models/githubconfig.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { inject as service } from '@ember/service'; var GithubConfig = Resource.extend({ diff --git a/app/models/globaldns.js b/app/models/globaldns.js index db74248321..1bc7edc30e 100644 --- a/app/models/globaldns.js +++ b/app/models/globaldns.js @@ -1,7 +1,7 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { get, set, computed, setProperties } from '@ember/object'; import { inject as service } from '@ember/service'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; import { next } from '@ember/runloop'; export default Resource.extend({ diff --git a/app/models/globaldnsprovider.js b/app/models/globaldnsprovider.js index d86e3b7a73..fead724e6f 100644 --- a/app/models/globaldnsprovider.js +++ b/app/models/globaldnsprovider.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { get, computed, setProperties } from '@ember/object'; import { inject as service } from '@ember/service'; import { alias } from '@ember/object/computed'; diff --git a/app/models/globalrole.js b/app/models/globalrole.js index a46fae8aae..b2e472c157 100644 --- a/app/models/globalrole.js +++ b/app/models/globalrole.js @@ -1,8 +1,8 @@ import { not } from '@ember/object/computed'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed } from '@ember/object'; import { inject as service } from '@ember/service'; -import { hasMany } from '@rancher/ember-api-store/utils/denormalize'; +import { hasMany } from 'ember-api-store/utils/denormalize'; const BASE = 'user-base'; const USER = 'user'; diff --git a/app/models/globalrolebinding.js b/app/models/globalrolebinding.js index bfdc744d0f..69a9ef970d 100644 --- a/app/models/globalrolebinding.js +++ b/app/models/globalrolebinding.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { computed } from '@ember/object'; import { isEmpty } from '@ember/utils'; import { inject as service } from '@ember/service'; diff --git a/app/models/googlekubernetesengineconfig.js b/app/models/googlekubernetesengineconfig.js index dcc29bcdc5..1625c28e02 100644 --- a/app/models/googlekubernetesengineconfig.js +++ b/app/models/googlekubernetesengineconfig.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend({ type: 'googleKubernetesEngineConfig', diff --git a/app/models/googleoauthconfig.js b/app/models/googleoauthconfig.js index 70a1fa163d..4a829038bb 100644 --- a/app/models/googleoauthconfig.js +++ b/app/models/googleoauthconfig.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; var GoogleOauthConfig = Resource.extend({ type: 'googleOauthConfig', }); diff --git a/app/models/groupglobalrolebindings.js b/app/models/groupglobalrolebindings.js index 8114fc925e..23f99cd6a2 100644 --- a/app/models/groupglobalrolebindings.js +++ b/app/models/groupglobalrolebindings.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed, set } from '@ember/object'; import { isEmpty } from '@ember/utils'; import { inject as service } from '@ember/service'; diff --git a/app/models/horizontalpodautoscaler.js b/app/models/horizontalpodautoscaler.js index 4b47a607ca..d7f6f81931 100644 --- a/app/models/horizontalpodautoscaler.js +++ b/app/models/horizontalpodautoscaler.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { inject as service } from '@ember/service'; import { get, computed } from '@ember/object'; const VALUE = 'Value'; diff --git a/app/models/httpingresspath.js b/app/models/httpingresspath.js index 0b95d329df..a064d377ca 100644 --- a/app/models/httpingresspath.js +++ b/app/models/httpingresspath.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; var HttpIngressPath = Resource.extend({ service: reference('serviceId'), }); diff --git a/app/models/image.js b/app/models/image.js index 8a616f6e76..73bc85dfd0 100644 --- a/app/models/image.js +++ b/app/models/image.js @@ -1,3 +1,3 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend({ type: 'image' }); diff --git a/app/models/ingress.js b/app/models/ingress.js index b9d428a6ff..f154e58540 100644 --- a/app/models/ingress.js +++ b/app/models/ingress.js @@ -1,6 +1,6 @@ import { computed, get } from '@ember/object'; -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { inject as service } from '@ember/service'; export default Resource.extend({ diff --git a/app/models/kontainerdriver.js b/app/models/kontainerdriver.js index 2269f6988d..32feb82520 100644 --- a/app/models/kontainerdriver.js +++ b/app/models/kontainerdriver.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed, get } from '@ember/object'; import { inject as service } from '@ember/service'; diff --git a/app/models/launchconfig.js b/app/models/launchconfig.js index 0caa31f9cf..cb6d1deec0 100644 --- a/app/models/launchconfig.js +++ b/app/models/launchconfig.js @@ -1,5 +1,5 @@ import { computed } from '@ember/object'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; var LaunchConfig = Resource.extend({ displayEnvironmentVars: computed('launchConfig.environment', function() { diff --git a/app/models/localauthconfig.js b/app/models/localauthconfig.js index 456c44ab2f..4b43885b86 100644 --- a/app/models/localauthconfig.js +++ b/app/models/localauthconfig.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; var LocalAuthConfig = Resource.extend({ type: 'localauthConfig', }); diff --git a/app/models/member.js b/app/models/member.js index 5d6f43189f..b382a31c73 100644 --- a/app/models/member.js +++ b/app/models/member.js @@ -1,7 +1,7 @@ import { inject as service } from '@ember/service'; import { get, computed } from '@ember/object'; -// import { reference } from '@rancher/ember-api-store/utils/denormalize'; -import Resource from '@rancher/ember-api-store/models/resource'; +// import { reference } from 'ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend({ globalStore: service(), diff --git a/app/models/mountentry.js b/app/models/mountentry.js index cccbcee821..bba213b7e6 100644 --- a/app/models/mountentry.js +++ b/app/models/mountentry.js @@ -1,8 +1,8 @@ import { computed } from '@ember/object'; import { equal } from '@ember/object/computed'; import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; export default Resource.extend({ intl: service(), diff --git a/app/models/multiclusterapp.js b/app/models/multiclusterapp.js index e0cf63c972..e0758da2d9 100644 --- a/app/models/multiclusterapp.js +++ b/app/models/multiclusterapp.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { computed, get } from '@ember/object'; import { parseHelmExternalId } from 'ui/utils/parse-externalid'; import { inject as service } from '@ember/service'; diff --git a/app/models/namespace.js b/app/models/namespace.js index f88548b2bf..5f82ac7987 100644 --- a/app/models/namespace.js +++ b/app/models/namespace.js @@ -1,11 +1,11 @@ import { computed, get, set } from '@ember/object'; import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { parseExternalId } from 'ui/utils/parse-externalid'; import { convertToMillis } from 'shared/utils/util'; import { parseSi } from 'shared/utils/parse-unit'; import C from 'ui/utils/constants'; -import { hasMany, reference } from '@rancher/ember-api-store/utils/denormalize'; +import { hasMany, reference } from 'ember-api-store/utils/denormalize'; import StateCounts from 'ui/mixins/state-counts'; const ISTIO_INJECTION = 'istio-injection' const ENABLED = 'enabled'; diff --git a/app/models/namespacedcertificate.js b/app/models/namespacedcertificate.js index 96c154a5e3..2de3ac5fad 100644 --- a/app/models/namespacedcertificate.js +++ b/app/models/namespacedcertificate.js @@ -1,5 +1,5 @@ import Certificate from './certificate'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; import { inject as service } from '@ember/service'; export default Certificate.extend({ diff --git a/app/models/namespaceddockercredential.js b/app/models/namespaceddockercredential.js index b1c1cc1321..76d5d87452 100644 --- a/app/models/namespaceddockercredential.js +++ b/app/models/namespaceddockercredential.js @@ -1,5 +1,5 @@ import DockerCredential from './dockercredential'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; import { inject as service } from '@ember/service'; export default DockerCredential.extend({ diff --git a/app/models/namespacedsecret.js b/app/models/namespacedsecret.js index 5aa15aac3f..7521d8c7a5 100644 --- a/app/models/namespacedsecret.js +++ b/app/models/namespacedsecret.js @@ -1,5 +1,5 @@ import Secret from './secret'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; import { inject as service } from '@ember/service'; export default Secret.extend({ diff --git a/app/models/node.js b/app/models/node.js index 4464e89aae..637645bc54 100644 --- a/app/models/node.js +++ b/app/models/node.js @@ -1,11 +1,11 @@ import { computed, get, set } from '@ember/object'; import { or, alias } from '@ember/object/computed'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { download } from 'shared/utils/util'; import C from 'ui/utils/constants'; import StateCounts from 'ui/mixins/state-counts'; import { inject as service } from '@ember/service'; -import { hasMany, reference } from '@rancher/ember-api-store/utils/denormalize'; +import { hasMany, reference } from 'ember-api-store/utils/denormalize'; import ResourceUsage from 'shared/mixins/resource-usage'; import Grafana from 'shared/mixins/grafana'; import { next } from '@ember/runloop'; diff --git a/app/models/nodedriver.js b/app/models/nodedriver.js index 68b9e88ea3..3c5d3a8732 100644 --- a/app/models/nodedriver.js +++ b/app/models/nodedriver.js @@ -1,6 +1,6 @@ import { get, computed } from '@ember/object'; import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import C from 'ui/utils/constants'; import { parseExternalId } from 'ui/utils/parse-externalid'; diff --git a/app/models/nodegroup.js b/app/models/nodegroup.js index daf71bdfbc..9986726dcd 100644 --- a/app/models/nodegroup.js +++ b/app/models/nodegroup.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { isEmpty } from '@ember/utils'; export default Resource.extend({ diff --git a/app/models/nodepool.js b/app/models/nodepool.js index f5bd02da3a..97596dc870 100644 --- a/app/models/nodepool.js +++ b/app/models/nodepool.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { cancel, later } from '@ember/runloop' import { set, computed } from '@ember/object'; import { ucFirst } from 'shared/utils/util'; diff --git a/app/models/nodetemplate.js b/app/models/nodetemplate.js index 693e837b52..55deb7b2b5 100644 --- a/app/models/nodetemplate.js +++ b/app/models/nodetemplate.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { get, set, computed, defineProperty } from '@ember/object'; import { inject as service } from '@ember/service'; import { ucFirst } from 'shared/utils/util'; diff --git a/app/models/notifier.js b/app/models/notifier.js index de9de2212e..4293ad1a6d 100644 --- a/app/models/notifier.js +++ b/app/models/notifier.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { inject as service } from '@ember/service'; import { setProperties, get, computed } from '@ember/object'; import { hash } from 'rsvp'; diff --git a/app/models/openldapconfig.js b/app/models/openldapconfig.js index 84e2c2a6c9..2e4cef215e 100644 --- a/app/models/openldapconfig.js +++ b/app/models/openldapconfig.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; var OpenLdapConfig = Resource.extend({ type: 'openLdapConfig', }); diff --git a/app/models/persistentvolume.js b/app/models/persistentvolume.js index 04b69917dd..3ced11452d 100644 --- a/app/models/persistentvolume.js +++ b/app/models/persistentvolume.js @@ -1,7 +1,7 @@ import Volume from './volume'; import { get, computed } from '@ember/object' import { inject as service } from '@ember/service'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; export default Volume.extend({ router: service(), diff --git a/app/models/persistentvolumeclaim.js b/app/models/persistentvolumeclaim.js index 31be29a01c..c562862270 100644 --- a/app/models/persistentvolumeclaim.js +++ b/app/models/persistentvolumeclaim.js @@ -1,6 +1,6 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { get, computed } from '@ember/object' -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; import { parseSi, formatSi } from 'shared/utils/parse-unit'; import { inject as service } from '@ember/service'; import { isEmpty } from '@ember/utils'; diff --git a/app/models/pipeline.js b/app/models/pipeline.js index eac8859df6..cf0a3a05d8 100644 --- a/app/models/pipeline.js +++ b/app/models/pipeline.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { inject as service } from '@ember/service'; import { computed } from '@ember/object'; import C from 'shared/utils/pipeline-constants'; diff --git a/app/models/pipelineexecution.js b/app/models/pipelineexecution.js index 8b6ce5b655..792f483fbe 100644 --- a/app/models/pipelineexecution.js +++ b/app/models/pipelineexecution.js @@ -1,9 +1,9 @@ import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { get, computed } from '@ember/object'; import { alias } from '@ember/object/computed'; import C from 'shared/utils/pipeline-constants'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; let PipelineExecution = Resource.extend({ router: service(), diff --git a/app/models/pod.js b/app/models/pod.js index 6a3bbcd0bc..defcf5d770 100644 --- a/app/models/pod.js +++ b/app/models/pod.js @@ -1,7 +1,7 @@ import C from 'ui/utils/constants'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { alias } from '@ember/object/computed'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; import { get, computed, set } from '@ember/object'; import { inject as service } from '@ember/service'; import { strPad } from 'ui/utils/util'; diff --git a/app/models/port.js b/app/models/port.js index 9b222c2587..a695dd7108 100644 --- a/app/models/port.js +++ b/app/models/port.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed } from '@ember/object'; var Port = Resource.extend({ diff --git a/app/models/preference.js b/app/models/preference.js index 6f4cbe7cec..93ba47ecc4 100644 --- a/app/models/preference.js +++ b/app/models/preference.js @@ -1,3 +1,3 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend(); diff --git a/app/models/principal.js b/app/models/principal.js index 30d4dc766f..cd1389e9fc 100644 --- a/app/models/principal.js +++ b/app/models/principal.js @@ -1,6 +1,6 @@ import { equal } from '@ember/object/computed'; import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import C from 'ui/utils/constants'; import { computed } from '@ember/object' import Identicon from 'identicon.js'; diff --git a/app/models/probe.js b/app/models/probe.js index 4632b9e860..464d0c8799 100644 --- a/app/models/probe.js +++ b/app/models/probe.js @@ -1,3 +1,3 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend({}); diff --git a/app/models/project.js b/app/models/project.js index d9a7c43717..a29e70637d 100644 --- a/app/models/project.js +++ b/app/models/project.js @@ -1,8 +1,8 @@ import { get, set, computed, observer } from '@ember/object'; import { on } from '@ember/object/evented'; import { inject as service } from '@ember/service'; -import { hasMany, reference } from '@rancher/ember-api-store/utils/denormalize'; -import Resource from '@rancher/ember-api-store/models/resource'; +import { hasMany, reference } from 'ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; import C from 'ui/utils/constants'; import { alias } from '@ember/object/computed'; diff --git a/app/models/projectalertgroup.js b/app/models/projectalertgroup.js index 7b46a63b27..d08974cb90 100644 --- a/app/models/projectalertgroup.js +++ b/app/models/projectalertgroup.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import Alert from 'ui/mixins/model-alert'; export default Resource.extend(Alert, { type: 'projectalertgroup', }); diff --git a/app/models/projectalertrule.js b/app/models/projectalertrule.js index 22c9fced21..26c69b4057 100644 --- a/app/models/projectalertrule.js +++ b/app/models/projectalertrule.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { get, computed } from '@ember/object'; import { inject as service } from '@ember/service'; import Alert from 'ui/mixins/model-alert'; diff --git a/app/models/projectcatalog.js b/app/models/projectcatalog.js index 508fbbdb33..33ffae20d8 100644 --- a/app/models/projectcatalog.js +++ b/app/models/projectcatalog.js @@ -1,5 +1,5 @@ import Catalog from 'ui/models/catalog'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; export default Catalog.extend({ level: 'project', diff --git a/app/models/projectlogging.js b/app/models/projectlogging.js index e26b680946..eaf1b9dd60 100644 --- a/app/models/projectlogging.js +++ b/app/models/projectlogging.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import modelMixin from 'ui/mixins/logging-model'; const ProjectLogging = Resource.extend(modelMixin, { type: 'projectlogging', }); diff --git a/app/models/projectroletemplatebinding.js b/app/models/projectroletemplatebinding.js index 2208d19773..016eb340ad 100644 --- a/app/models/projectroletemplatebinding.js +++ b/app/models/projectroletemplatebinding.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { get, computed } from '@ember/object'; import C from 'ui/utils/constants'; import PrincipalReference from 'ui/mixins/principal-reference'; diff --git a/app/models/publicendpoint.js b/app/models/publicendpoint.js index c004bc411a..70f544c11d 100644 --- a/app/models/publicendpoint.js +++ b/app/models/publicendpoint.js @@ -1,6 +1,6 @@ import { isArray } from '@ember/array'; import { get, computed } from '@ember/object'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { inject as service } from '@ember/service'; import C from 'shared/utils/constants'; diff --git a/app/models/rancherkubernetesengineconfig.js b/app/models/rancherkubernetesengineconfig.js index 8991196647..8d87aa106a 100644 --- a/app/models/rancherkubernetesengineconfig.js +++ b/app/models/rancherkubernetesengineconfig.js @@ -1,3 +1,3 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend({ type: 'rancherKubernetesEngineConfig', }); diff --git a/app/models/roletemplate.js b/app/models/roletemplate.js index dc17670371..8cbe378747 100644 --- a/app/models/roletemplate.js +++ b/app/models/roletemplate.js @@ -1,6 +1,6 @@ import { get, computed } from '@ember/object'; import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import C from 'ui/utils/constants'; export default Resource.extend({ diff --git a/app/models/scalehost.js b/app/models/scalehost.js index aced0393c8..296e690d4d 100644 --- a/app/models/scalehost.js +++ b/app/models/scalehost.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed } from '@ember/object'; export default Resource.extend({ diff --git a/app/models/secret.js b/app/models/secret.js index 8c74da2214..1697bab29a 100644 --- a/app/models/secret.js +++ b/app/models/secret.js @@ -1,7 +1,7 @@ import { inject as service } from '@ember/service'; import { alias } from '@ember/object/computed'; import { computed, get } from '@ember/object'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend({ router: service(), diff --git a/app/models/secretreference.js b/app/models/secretreference.js index 4632b9e860..464d0c8799 100644 --- a/app/models/secretreference.js +++ b/app/models/secretreference.js @@ -1,3 +1,3 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend({}); diff --git a/app/models/service.js b/app/models/service.js index 5e6365d197..9f64491dc4 100644 --- a/app/models/service.js +++ b/app/models/service.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference, arrayOfReferences } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference, arrayOfReferences } from 'ember-api-store/utils/denormalize'; import { computed, get, set } from '@ember/object'; import { equal } from '@ember/object/computed'; import { inject as service } from '@ember/service'; diff --git a/app/models/setting.js b/app/models/setting.js index b2d3e92857..b3f97d7372 100644 --- a/app/models/setting.js +++ b/app/models/setting.js @@ -1,5 +1,5 @@ import { later } from '@ember/runloop'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed, get, set } from '@ember/object'; import { inject as service } from '@ember/service'; import { isEmpty } from '@ember/utils'; diff --git a/app/models/sourcecodecredential.js b/app/models/sourcecodecredential.js index e1fa719a72..90018d7d18 100644 --- a/app/models/sourcecodecredential.js +++ b/app/models/sourcecodecredential.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed } from '@ember/object'; export default Resource.extend({ diff --git a/app/models/storageclass.js b/app/models/storageclass.js index 2e6aae25f6..f7118f2af2 100644 --- a/app/models/storageclass.js +++ b/app/models/storageclass.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { set, computed } from '@ember/object'; import { inject as service } from '@ember/service'; import { all } from 'rsvp'; diff --git a/app/models/target.js b/app/models/target.js index 8d8bd5fdb0..94f63e7f7f 100644 --- a/app/models/target.js +++ b/app/models/target.js @@ -1,6 +1,6 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { get, computed } from '@ember/object'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; export default Resource.extend({ project: reference('projectId'), diff --git a/app/models/template.js b/app/models/template.js index 42344056b6..0a88a72255 100644 --- a/app/models/template.js +++ b/app/models/template.js @@ -1,9 +1,9 @@ import { htmlSafe } from '@ember/string'; import { computed, get } from '@ember/object'; import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import C from 'ui/utils/constants'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import { reference } from 'ember-api-store/utils/denormalize'; import { compare as compareVersion } from 'ui/utils/parse-version'; const Template = Resource.extend({ diff --git a/app/models/templateversion.js b/app/models/templateversion.js index 7798eeea39..e23a37342e 100644 --- a/app/models/templateversion.js +++ b/app/models/templateversion.js @@ -1,6 +1,6 @@ import { inject as service } from '@ember/service'; -import { validateChars, validateLength } from '@rancher/ember-api-store/utils/validate'; -import Resource from '@rancher/ember-api-store/models/resource'; +import { validateChars, validateLength } from 'ember-api-store/utils/validate'; +import Resource from 'ember-api-store/models/resource'; import { get, computed } from '@ember/object'; import { evaluate } from 'shared/utils/evaluate'; import C from 'ui/utils/constants'; diff --git a/app/models/token.js b/app/models/token.js index 8608020328..278f5cc8fc 100644 --- a/app/models/token.js +++ b/app/models/token.js @@ -1,4 +1,4 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed, set } from '@ember/object'; import { next } from '@ember/runloop' import { inject as service } from '@ember/service'; diff --git a/app/models/typedocumentation.js b/app/models/typedocumentation.js index 116044c3c8..148bac7d62 100644 --- a/app/models/typedocumentation.js +++ b/app/models/typedocumentation.js @@ -1,5 +1,5 @@ -import { normalizeType } from '@rancher/ember-api-store/utils/normalize'; -import Resource from '@rancher/ember-api-store/models/resource'; +import { normalizeType } from 'ember-api-store/utils/normalize'; +import Resource from 'ember-api-store/models/resource'; var TypeDocumentation = Resource.extend(); diff --git a/app/models/user.js b/app/models/user.js index 85a6c1000f..0546ded62c 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -1,8 +1,8 @@ import { inject as service } from '@ember/service'; import { get, set, computed } from '@ember/object'; -import { hasMany } from '@rancher/ember-api-store/utils/denormalize'; +import { hasMany } from 'ember-api-store/utils/denormalize'; import { next } from '@ember/runloop' -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import Identicon from 'identicon.js'; export default Resource.extend({ diff --git a/app/models/virtualservice.js b/app/models/virtualservice.js index cc23bbf86c..306fbcbe5f 100644 --- a/app/models/virtualservice.js +++ b/app/models/virtualservice.js @@ -1,5 +1,5 @@ -import Resource from '@rancher/ember-api-store/models/resource'; -import { reference } from '@rancher/ember-api-store/utils/denormalize'; +import Resource from 'ember-api-store/models/resource'; +import { reference } from 'ember-api-store/utils/denormalize'; import { inject as service } from '@ember/service'; import { computed } from '@ember/object'; diff --git a/app/models/volume.js b/app/models/volume.js index e44e593cb9..7e789c1b13 100644 --- a/app/models/volume.js +++ b/app/models/volume.js @@ -1,6 +1,6 @@ import { get, set, computed } from '@ember/object'; import { inject as service } from '@ember/service'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import C from 'ui/utils/constants'; const SOURCES = []; diff --git a/app/models/workload.js b/app/models/workload.js index 2eb99baab6..85409ba767 100644 --- a/app/models/workload.js +++ b/app/models/workload.js @@ -2,10 +2,10 @@ import { later, cancel } from '@ember/runloop'; import { computed, get, set } from '@ember/object'; import Grafana from 'shared/mixins/grafana'; import { alias, gt, not } from '@ember/object/computed'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { sortableNumericSuffix } from 'shared/utils/util'; import { formatSi } from 'shared/utils/parse-unit'; -import { reference, hasMany } from '@rancher/ember-api-store/utils/denormalize'; +import { reference, hasMany } from 'ember-api-store/utils/denormalize'; import StateCounts from 'ui/mixins/state-counts'; import EndpointPorts from 'ui/mixins/endpoint-ports'; import { inject as service } from '@ember/service'; diff --git a/app/signup/controller.js b/app/signup/controller.js index 1fac5cc9fe..20c3d06fc5 100644 --- a/app/signup/controller.js +++ b/app/signup/controller.js @@ -1,7 +1,7 @@ import { observer } from '@ember/object'; import { inject as service } from '@ember/service'; import Controller from '@ember/controller'; -import fetch from '@rancher/ember-api-store/utils/fetch'; +import fetch from 'ember-api-store/utils/fetch'; export default Controller.extend({ settings: service(), diff --git a/app/verify-reset-password/controller.js b/app/verify-reset-password/controller.js index 46cde9c21e..dff026c433 100644 --- a/app/verify-reset-password/controller.js +++ b/app/verify-reset-password/controller.js @@ -1,5 +1,5 @@ import Controller from '@ember/controller'; -import fetch from '@rancher/ember-api-store/utils/fetch'; +import fetch from 'ember-api-store/utils/fetch'; export default Controller.extend({ passwordRest: false, diff --git a/app/verify-reset-password/route.js b/app/verify-reset-password/route.js index 95c07673c4..58848f7c75 100644 --- a/app/verify-reset-password/route.js +++ b/app/verify-reset-password/route.js @@ -1,6 +1,6 @@ import { reject } from 'rsvp'; import Route from '@ember/routing/route'; -import fetch from '@rancher/ember-api-store/utils/fetch'; +import fetch from 'ember-api-store/utils/fetch'; export default Route.extend({ model(params) { diff --git a/app/verify/controller.js b/app/verify/controller.js index 9ad8d9ba18..72260a801c 100644 --- a/app/verify/controller.js +++ b/app/verify/controller.js @@ -1,6 +1,6 @@ import { inject as service } from '@ember/service'; import Controller from '@ember/controller'; -import fetch from '@rancher/ember-api-store/utils/fetch'; +import fetch from 'ember-api-store/utils/fetch'; export default Controller.extend({ access: service(), diff --git a/blueprints/model/files/app/__path__/__name__.js b/blueprints/model/files/app/__path__/__name__.js index 6f4cbe7cec..93ba47ecc4 100644 --- a/blueprints/model/files/app/__path__/__name__.js +++ b/blueprints/model/files/app/__path__/__name__.js @@ -1,3 +1,3 @@ -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; export default Resource.extend(); diff --git a/lib/ember-api-store/README.md b/lib/ember-api-store/README.md new file mode 100644 index 0000000000..df0060cbbf --- /dev/null +++ b/lib/ember-api-store/README.md @@ -0,0 +1,100 @@ +Ember API Store +=============== + +Storage adapter for [Ember](http://emberjs.com) to [compatible APIs](http://github.com/rancher/api-spec). + +Note: This was previously maintained in a separate GitHub repository and published as an npm module. For ease +of maintenance, the code has been brought into the `rancher/ui` repository. The code in the `rancher/ember-api-store` repository +is no longer used. + +## Usage + +### Store + +The store performs all communication with the API service and maintains a single copy of all the resources that come back from it. This ensures that changes to a resource in one place propagate propertly to other parts of your application that use the same resource. + +A property named `store` is automatically injected into all routes, controllers, and models on initialization. + +Methods: +* `find(type [,id] [,options])`: Query API for records of `type`, optionally with `id` and other `options` like `filter`. Returns a promise. +* `getById(type, id)`: Get a record from the local cache by `type` and `id`. Returns a resource or undefined synchronously. +* `hasRecordFor(type, id)`: Returns true if a record for `type` and `id` exists in cache synchronously. +* `all(type)`: Returns a "live" array of all the records for [type] in the store. The array will be updated as records are added and removed from the store. +* `findAll(type)`: Calls `find(type)` if it hasn't been called before, then returns `all(type)` to give you back a live list of all the records in one call. Convenient for a model hook. +* `createRecord(data)`: Create a record given fields `data`. Returns a `Resource`. Does **not** add the record to the store, call `resource.save()` on the response or `\_add()` on the store. + +More methods, that you shouldn't need often: +* `_add(type, obj)`: Add a record to the store. This is normally done automatically when reading objects, but you might have created one with `createRecord` manually want it added without `resource.save()`. +* `_remove(type, obj)`: Remove a record from the store. This doesn't tell the server about it, so you probably want `resource.delete()`. + +Properties: +* `removeAfterDelete: true`: Set to false to disable automatically removing from the store after `record.delete()`. You might want this if your API has a 2 or more step deleting vs removed vs purged state. + +### Resource +A resource is a model object representing a single resource in the API. + +Methods: +* `.merge(data)`: Take the values in `data` and replace the corresponding values in this resource with them. Returns the resource so you can chain calls. +* `.replaceWith(data)`: Replace all the values in this resource with the ones in `newData`. Returns the resource so you can chain calls. +* `.clone()`: Returns a duplicate of this resource. Changes to the clone will not initially affect the original. If `.save()` is called on the clone, the response data will be merged into both the clone and original. +* `.hasLink(name)`: Returns a boolean for whether this resource has a link with the given `name` or not. +* `.followLink(name [,options])`: Retrieves the link with the given `name` and returns a promise that resolves with the response data. +* `.importLink(name [,options])`: Retrieves the link with the given `name` and assigns the response data as a property with the same `name` on the resource. Returns a promise that resolves with the resource. +* `.hasAction(name)`: Returns a boolean for whether this resource has an action with the given `name` or not. +* `.doAction(name [,data])`: Performs the action given by `name`, optionally sending `data` and returns a promise that resolves with the response data. +* `.save()`: Sends the resource to the API to persist it. On success, adds the resource to the store if it wasn't already in there. Returns a promise that resolves to the resource, and also updates the store record with the response data if it is provided. +* `.delete()`: Sends a delete request to the API to remove a resource. On success, the resource is removed from the store if it was in it (unless `store.removeAfterDelete`` is false) +* `.serialize()`: Returns a plain JavaScript object representation of the resource. + +Static Properties: +* `defaultSortBy: ''`: Default field to sort by when none was specified +* `mangleIn(data): A function to edit the data for a resource before it is turned into a model object for purposes of evil +* `mangleOut(data): A function to edit the data for a resource after it is serialized into a plain object for even more evil. + +### Collection +A collection is a model object representing an array of resources in the API. It is an ArrayProxy that proxies array requests to the `data` elements of the collection, but collections are themselves resources that may have links and actions themselves that you can use (as a resource, above). + +* `.serialize()`: Returns a plain JavaScript array representation of the collection. + +## Developing + +* `git clone` this repository +* `npm install` +* `bower install` + +### Running + +* `ember server` +* Visit your app at http://localhost:4200. + +### Running Tests + +* `ember test` +* `ember test --server` + +### Building + +* `ember build` + + +## Contact +For bugs, questions, comments, corrections, suggestions, etc., open an issue in + [rancher/rancher](//github.com/rancher/rancher/issues) with a title starting with `[ember-api-store] `. + +Or just [click here](//github.com/rancher/rancher/issues/new?title=%5Bember-api-store%5D%20) to create a new issue. + +License +======= +Copyright (c) 2014-2018 [Rancher Labs, Inc.](http://rancher.com) + +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](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/lib/ember-api-store/addon/index.js b/lib/ember-api-store/addon/index.js new file mode 100644 index 0000000000..19daec3176 --- /dev/null +++ b/lib/ember-api-store/addon/index.js @@ -0,0 +1,12 @@ +import Namespace from '@ember/application/namespace'; +import Ember from 'ember'; +import VERSION from 'ember-api-store/version'; + +const EmberApiStore = Namespace.create({ VERSION }); + +if (Ember.libraries) { + Ember.libraries.registerCoreLibrary('Ember API Store', EmberApiStore.VERSION); +} + +export default EmberApiStore; + diff --git a/lib/ember-api-store/addon/initializers/store.js b/lib/ember-api-store/addon/initializers/store.js new file mode 100644 index 0000000000..35dd9e9352 --- /dev/null +++ b/lib/ember-api-store/addon/initializers/store.js @@ -0,0 +1,26 @@ +import Store from '../services/store'; +import Resource from '../models/resource'; +import Collection from '../models/collection'; +import ApiError from '../models/error'; +import Schema from '../models/schema'; + +export default function(serviceName = 'store', injectAs = null) { + if (!injectAs) { + injectAs = serviceName; + } + + return function(app) { + app.register(`service:${ serviceName }`, Store); + + if ( !app.hasRegistration('model:resource') ) { + app.register('model:resource', Resource); + app.register('model:collection', Collection); + app.register('model:schema', Schema); + app.register('model:error', ApiError); + } + + app.inject('controller', injectAs, `service:${ serviceName }`); + app.inject('route', injectAs, `service:${ serviceName }`); + app.inject('component', injectAs, `service:${ serviceName }`); + }; +} diff --git a/lib/ember-api-store/addon/instance-initializers/initialize-store-service.js b/lib/ember-api-store/addon/instance-initializers/initialize-store-service.js new file mode 100644 index 0000000000..7308d253b5 --- /dev/null +++ b/lib/ember-api-store/addon/instance-initializers/initialize-store-service.js @@ -0,0 +1,5 @@ +export default function initializeStoreService(application) { + var container = application.lookup ? application : application.container; + + container.lookup('service:store'); +} diff --git a/lib/ember-api-store/addon/mixins/serializable.js b/lib/ember-api-store/addon/mixins/serializable.js new file mode 100644 index 0000000000..2708ae91b1 --- /dev/null +++ b/lib/ember-api-store/addon/mixins/serializable.js @@ -0,0 +1,80 @@ +import { get } from '@ember/object'; +import { typeOf } from '@ember/utils'; +import { isArray } from '@ember/array'; +import Mixin from '@ember/object/mixin'; + +var Serializable = Mixin.create({ + serialize(depth) { + depth = depth || 0; + var output; + + if ( depth > 20 ) { + return null; + } + + if ( isArray(this) ) { + output = this.map((item) => { + return recurse(item, depth + 1); + }); + } else { + output = {}; + this.eachKeys((v, k) => { + output[k] = recurse(v, depth + 1); + }); + } + + return output; + + function recurse(obj, depth) { + depth = depth || 0; + if ( depth > 20 ) { + return null; + } + + if ( isArray(obj) ) { + return obj.map((item) => { + return recurse(item, depth + 1); + }); + } else if ( Serializable.detect(obj) ) { + return obj.serialize(depth); + } else if ( obj && typeof obj === 'object' ) { + var out = {}; + var keys = Object.keys(obj); + + keys.forEach((k) => { + out[k] = recurse(obj[k], depth + 1); + }); + + return out; + } else { + return obj; + } + } + }, + + // Properties to ignore because they're built-in to ember, ember-debug, or the store + concatenatedProperties: ['reservedKeys'], + reservedKeys: ['reservedKeys', 'constructor', 'container', 'store', 'isInstance', 'isDestroyed', 'isDestroying', 'concatenatedProperties', 'cache', 'factoryCache', 'validationCache', 'store'], + + allKeys() { + var reserved = this.reservedKeys; + + var out = Object.keys(this).filter((k) => { + return k.charAt(0) !== '_' && + reserved.indexOf(k) === -1 && + typeOf(get(this, k)) !== 'function'; + }); + + return out; + }, + + eachKeys(fn) { + var self = this; + + this.allKeys().forEach((k) => { + fn.call(self, self.get(k), k); + }); + }, +}); + +export default Serializable; diff --git a/lib/ember-api-store/addon/mixins/type.js b/lib/ember-api-store/addon/mixins/type.js new file mode 100644 index 0000000000..fcd001827d --- /dev/null +++ b/lib/ember-api-store/addon/mixins/type.js @@ -0,0 +1,281 @@ +import { reject } from 'rsvp'; +import { isArray } from '@ember/array'; +import Mixin from '@ember/object/mixin'; +import Ember from 'ember'; +import { get, computed } from '@ember/object'; +import Serializable from './serializable'; +import { normalizeType } from '../utils/normalize'; +import { copyHeaders } from '../utils/apply-headers'; +import { urlOptions } from '../utils/url-options'; + +var Type = Mixin.create(Serializable, { + id: null, + type: null, + links: null, + + toString() { + return '(generic store type mixin)'; + }, + + // unionArrays=true will append the new values to the existing ones instead of overwriting. + merge(newData, unionArrays = false) { + var self = this; + + newData.eachKeys((v, k) => { + if ( newData.hasOwnProperty(k) ) { + var curVal = self.get(k); + + if ( unionArrays && isArray(curVal) && isArray(v) ) { + curVal.addObjects(v); + } else { + self.set(k, v); + } + } + }); + + return self; + }, + + replaceWith(newData) { + var self = this; + + // Add/replace values that are in newData + newData.eachKeys((v, k) => { + self.set(k, v); + }); + + // Remove values that are in current but not new. + var newKeys = newData.allKeys(); + + this.eachKeys(function(v, k) { + // If the key is a valid link name and + if ( newKeys.indexOf(k) === -1 && !this.hasLink(k) ) { + self.set(k, undefined); + } + }); + + return self; + }, + + clone() { + let store = this.store; + let output = store.createRecord(JSON.parse(JSON.stringify(this.serialize())), { updateStore: false }); + + // output.set('store', get(this, 'store')); + return output; + }, + + linkFor(name) { + var url = get(this, `links.${ name }`); + + return url; + }, + + pageFor(which) { + return get(this, `pagination.${ which }`); + }, + + hasLink(name) { + return !!this.linkFor(name); + }, + + headers: null, + request(opt) { + if ( !opt.headers ) { + opt.headers = {}; + } + + copyHeaders(this.constructor.headers, opt.headers); + copyHeaders(this.headers, opt.headers); + + return this.store.request(opt); + }, + + followPagination(which, opt) { + var url = this.pageFor(which); + + if (!url) { + throw new Error('Unknown link'); + } + + opt = opt || {}; + opt.url = url; + opt.depaginate = false; + + return this.request(opt); + }, + + followLink(name, opt) { + var url = this.linkFor(name); + + opt = opt || {}; + + if (!url) { + throw new Error('Unknown link'); + } + + opt.url = urlOptions(url, opt); + + return this.request(opt); + }, + + hasAction(name) { + var url = get(this, `actionLinks.${ name }`); + + return !!url; + }, + + computedHasAction(name) { + return computed(`actionLinks.${ name }`, function() { + return this.hasAction(name); + }); + }, + + doAction(name, data, opt) { + var url = get(this, `actionLinks.${ name }`); + + if (!url) { + return reject(new Error(`Unknown action: ${ name }`)); + } + + opt = opt || {}; + opt.method = 'POST'; + opt.url = opt.url || url; + if ( data ) { + opt.data = data; + } + + // Note: The response object may or may not be this same object, depending on what the action returns. + return this.request(opt); + }, + + save(opt) { + var self = this; + var store = this.store; + + opt = opt || {}; + + var id = this.id; + var type = normalizeType(this.type, store); + + if ( id ) { + // Update + opt.method = opt.method || 'PUT'; + opt.url = opt.url || this.linkFor('self'); + } else { + // Create + if ( !type ) { + return reject(new Error('Cannot create record without a type')); + } + + opt.method = opt.method || 'POST'; + opt.url = opt.url || type; + } + + if ( opt.qp ) { + for (var k in opt.qp ) { + opt.url += `${ (opt.url.indexOf('?') >= 0 ? '&' : '?') + encodeURIComponent(k) }=${ encodeURIComponent(opt.qp[k]) }`; + } + } + + var json = this.serialize(); + + delete json['links']; + delete json['actions']; + delete json['actionLinks']; + + if ( typeof opt.data === 'undefined' ) { + opt.data = json; + } + + return this.request(opt).then((newData) => { + if ( !newData || !Type.detect(newData) ) { + return newData; + } + + var newId = newData.get('id'); + var newType = normalizeType(newData.get('type'), store); + + if ( !id && newId && type === newType ) { + Ember.beginPropertyChanges(); + + // A new record was created. Typeify will have put it into the store, + // but it's not the same instance as this object. So we need to fix that. + self.merge(newData); + var existing = store.getById(type, newId); + + if ( existing ) { + store._remove(type, existing); + } + store._add(type, self); + + // And also for the base type + var baseType = self.get('baseType'); + + if ( baseType ) { + baseType = normalizeType(baseType, store); + if ( baseType !== type ) { + existing = store.getById(baseType, newId); + if ( existing ) { + store._remove(baseType, existing); + } + store._add(baseType, self); + } + } + + Ember.endPropertyChanges(); + } + + return self; + }); + }, + + delete(opt) { + var self = this; + var store = this.store; + var type = this.type; + + opt = opt || {}; + opt.method = 'DELETE'; + opt.url = opt.url || this.linkFor('self'); + + return this.request(opt).then((newData) => { + if ( store.get('removeAfterDelete') || opt.forceRemove || opt.responseStatus === 204 ) { + store._remove(type, self); + } + + return newData; + }); + }, + + reload(opt) { + if ( !this.hasLink('self') ) { + return reject('Resource has no self link'); + } + + var url = this.linkFor('self'); + + opt = opt || {}; + if ( typeof opt.method === 'undefined' ) { + opt.method = 'GET'; + } + + if ( typeof opt.url === 'undefined' ) { + opt.url = url; + } + + var self = this; + + return this.request(opt).then((/* newData*/) => { + return self; + }); + }, + + isInStore() { + var store = this.store; + + return store && this.id && this.type && store.hasRecord(this); + } +}); + +export default Type; diff --git a/lib/ember-api-store/addon/models/collection.js b/lib/ember-api-store/addon/models/collection.js new file mode 100644 index 0000000000..0e6c954758 --- /dev/null +++ b/lib/ember-api-store/addon/models/collection.js @@ -0,0 +1,93 @@ +import { Promise } from 'rsvp'; +import ArrayProxy from '@ember/array/proxy'; +import { getOwner } from '@ember/application'; +import TypeMixin from '../mixins/type'; +import { copyHeaders } from '../utils/apply-headers'; +import { normalizeType } from '../utils/normalize'; + +export default ArrayProxy.extend(TypeMixin, { + type: 'collection', + createDefaults: null, + createTypes: null, + filters: null, + pagination: null, + sort: null, + sortLinks: null, + + reservedKeys: ['content'], + + toString() { + return `collection:${ this.resourceType }[${ this.length }]`; + }, + + request(opt) { + const store = this.store; + + if ( !opt.headers ) { + opt.headers = {}; + } + + var cls = getOwner(store).lookup(`model:${ normalizeType(this.resourceType, store) }`); + + if ( cls && cls.constructor.headers ) { + copyHeaders(cls.constructor.headers, opt.headers); + } + + return store.request(opt); + }, + + depaginate(depth) { + var self = this; + + depth = depth || 1; + /* + if ( depth > 5 ) + { + console.log('Depaginate, max depth reached'); + return new Ember.RSVP.Promise(function(resolve,reject) { + resolve(); + }); + } + */ + + var promise = new Promise(((resolve, reject) => { + var next = self.get('pagination.next'); + + if ( next ) { + console.log('Depaginate, requesting', next); + self.request({ + method: 'GET', + url: next, + depaginate: false, + forPagination: true + }).then(gotPage, fail); + } else { + resolve(); + } + + function gotPage(body) { + // console.log('Depaginate, got page'); + self.set('pagination', body.get('pagination')); + body.forEach((obj) => { + self.pushObject(obj); + }); + + if ( self.get('pagination.next') ) { + // console.log('Depaginate, more pages'); + // 98 bottles of beer on the wall... + resolve( self.depaginate(depth + 1)); + } else { + // console.log('Depaginate, no more pages'); + resolve(); + } + } + + function fail(body) { + // console.log('Depaginate fail',body); + reject(body); + } + }), `Depaginate, depth ${ depth }`); + + return promise; + }, +}); diff --git a/lib/ember-api-store/addon/models/error.js b/lib/ember-api-store/addon/models/error.js new file mode 100644 index 0000000000..20c4f7c6d2 --- /dev/null +++ b/lib/ember-api-store/addon/models/error.js @@ -0,0 +1,9 @@ +import Resource from './resource'; + +export default Resource.extend({ + type: 'error', + + toString() { + return JSON.stringify(this); + } +}); diff --git a/lib/ember-api-store/addon/models/resource.js b/lib/ember-api-store/addon/models/resource.js new file mode 100644 index 0000000000..2aac93f7ea --- /dev/null +++ b/lib/ember-api-store/addon/models/resource.js @@ -0,0 +1,259 @@ +import Ember from 'ember'; +import TypeMixin from '../mixins/type'; +import EmberObject, { set, get, computed } from '@ember/object'; +import { isArray } from '@ember/array'; +import { + displayKeyFor, + validateLength, + validateChars, + validateHostname, + validateDnsLabel +} from '../utils/validate'; +import { normalizeType } from '../utils/normalize'; + +const STRING_LIKE_TYPES = [ + 'string', + 'date', + 'blob', + 'enum', + 'multiline', + 'masked', + 'password', + 'dnsLabel', + 'hostname', +]; + +var Actionable = EmberObject.extend(Ember.ActionHandler); +var Resource = Actionable.extend(TypeMixin, { + // You should probably override intl with a real translator... + intl: { + t(key) { + return key; + }, + }, + + schema: computed('store', 'type', function() { + const schema = this.store.getById('schema', this.type); + + return schema; + }), + + toString() { + let str = `resource:${ this.type }`; + const id = this.id; + + if ( id ) { + str += `:${ id }`; + } + + return str; + }, + + serialize() { + var data = this._super.apply(this, arguments); + + if ( this.constructor.mangleOut ) { + return this.constructor.mangleOut(data); + } + + return data; + }, + + validationErrors(ignoreFields) { + const intl = this.intl; + + const errors = []; + const originalType = this.type; + + if ( !originalType ) { + console.warn('No type found to validate', this); + + return []; + } + + const type = normalizeType(originalType, this.store); + const schema = this.store.getById('schema', type); + + if ( !schema ) { + console.warn('No schema found to validate', type, this); + + return []; + } + + // Trim all the values to start so that empty strings become nulls + this.trimValues(); + + const fields = schema.resourceFields || {}; + const keys = Object.keys(fields); + let field, key, val, displayKey, match; + + for ( let i = 0 ; i < keys.length ; i++ ) { + key = keys[i]; + field = fields[key]; + val = get(this, key); + displayKey = displayKeyFor(type, key, intl); + + if ( ignoreFields && ignoreFields.includes(key) ) { + continue; + } + + if ( val === undefined ) { + val = null; + } + + match = field.type.match(/^array\[(.*)\]$/); + if ( match && match.length && match[1].indexOf('[') === -1 && val && isArray(val) && val.length ) { + // Plain array + val.forEach((item) => { + if ( typeof item.validationErrors === 'function' ) { + errors.pushObjects(item.validationErrors(ignoreFields)); + } + }); + } else if ( field.type.indexOf('[') >= 0 ) { + // array, map, reference + // @TODO something... + } else if ( val && typeof val.validationErrors === 'function' ) { + // embedded schema type + errors.pushObjects(val.validationErrors(ignoreFields)); + } else if ( field.type === 'float' && typeof val === 'string' ) { + // Coerce strings to floats + val = parseFloat(val) || null; // NaN becomes null + set(this, key, val); + } else if ( field.type === 'int' && typeof val === 'string' ) { + // Coerce strings to ints + val = parseInt(val, 10); + + if ( isNaN(val) ) { + val = null; + } + + set(this, key, val); + } + + // Empty strings on nullable string fields -> null + if ( field.nullable && + typeof val === 'string' && + val.length === 0 && + STRING_LIKE_TYPES.includes(field.type) + ) { + val = null; + set(this, key, val); + } + + let len = 0; + + if ( val ) { + len = get(val, 'length'); + } + + if ( + !field.nullable && + field.required && + ( + val === null || + (typeof val === 'string' && len === 0) || + (isArray(val) && len === 0) + ) + ) { + errors.push(intl.t('validation.required', { key: displayKey })); + continue; + } + + validateLength(val, field, displayKey, intl, errors); + validateChars( val, field, displayKey, intl, errors); + + // IDs claim to be these but are lies... + if ( (key !== 'id') && len && (field.type === 'dnsLabel' || field.type === 'dnsLabelRestricted' || field.type === 'hostname') ) { + // DNS types should be lowercase + const tolower = (val || '').toLowerCase(); + + if ( tolower !== val ) { + val = tolower; + set(this, key, val); + } + + if ( field.type === 'dnsLabel' ) { + validateDnsLabel(val, displayKey, intl, { restricted: false }, errors); + } else if ( field.type === 'dnsLabelRestricted' ) { + validateDnsLabel(val, displayKey, intl, { restricted: true }, errors); + } else if ( field.type === 'hostname') { + validateHostname(val, displayKey, intl, { restricted: false }, errors); + } + } + } + + return errors; + }, +}); + +// trimValues uses the definition of Resource so it needs to be a separate step +Resource.reopen({ + trimValues(depth, seenObjs) { + if ( !depth ) { + depth = 0; + } + + if ( !seenObjs ) { + seenObjs = []; + } + + this.eachKeys((val, key) => { + set(this, key, recurse(val, depth)); + }, false); + + return this; + + function recurse(val, depth) { + if ( depth > 10 ) { + return val; + } else if ( typeof val === 'string' ) { + return val.trim(); + } else if ( isArray(val) ) { + val.beginPropertyChanges(); + val.forEach((v, idx) => { + var out = recurse(v, depth + 1); + + if ( val.objectAt(idx) !== out ) { + val.replace(idx, 1, [out]); + } + }); + val.endPropertyChanges(); + + return val; + } else if ( Resource.detectInstance(val) ) { + // Don't include a resource we've already seen in the chain + if ( seenObjs.indexOf(val) > 0 ) { + return null; + } + + seenObjs.pushObject(val); + + return val.trimValues(depth + 1, seenObjs); + } else if ( val && typeof val === 'object' ) { + Object.keys(val).forEach((key) => { + // Skip keys with dots in them, like container labels + if ( key.indexOf('.') === -1 ) { + set(val, key, recurse(val[key], depth + 1)); + } + }); + + return val; + } else { + return val; + } + } + }, +}); + +Resource.reopenClass({ + // Request a default sort if none is specified + defaultSortBy: '', + + // You can provide a function here to mangle data before it is passed to store.createRecord() for purposes of evil. + mangleIn: null, + + // You can provide a function here to mangle data after it is serialized for purposes of even more evil. + mangleOut: null, +}); + +export default Resource; diff --git a/lib/ember-api-store/addon/models/schema.js b/lib/ember-api-store/addon/models/schema.js new file mode 100644 index 0000000000..561a85dbc0 --- /dev/null +++ b/lib/ember-api-store/addon/models/schema.js @@ -0,0 +1,155 @@ +import Resource from './resource'; +import { normalizeType } from '../utils/normalize'; +import { get, set, computed } from '@ember/object'; + +export const SCHEMA = { + SIMPLE: ['string', 'password', 'masked', 'multiline', 'float', 'int', 'date', 'blob', 'boolean', 'enum', 'reference', 'json', 'dnsLabel', 'hostname', 'dnsLabelRestricted'], +// NESTED: ['array','map'], +}; + +function parseType(type) { + return type.replace(/]/g, '').split('['); +} + +var Schema = Resource.extend({ + typeifyFields: computed('id', 'resourceFields', function() { + // Schemas are special.. + if ( this.id === 'schema' ) { + return []; + } + + let fields = this.resourceFields || {}; + let keys = Object.keys(fields); + + let out = keys.filter((k) => { + let parts = parseType(fields[k].type); + + for ( let i = 0 ; i < parts.length ; i++ ) { + if ( SCHEMA.SIMPLE.includes(parts[i]) ) { + return false; + } + } + + return true; + }); + + return out; + }), + + getFieldNames() { + return Object.keys(this.resourceFields); + }, + + getLoadDefaults(record, forceOverwrite = false) { + var fields = this.resourceFields; + + Object.keys(fields).forEach( (key) => { + var field = fields[key]; + var def = field['default']; + + if ( field.create && def !== null && typeof def !== 'undefined' ) { + if (forceOverwrite) { + set(record, key, JSON.parse(JSON.stringify(def))); + } else { + if (!record[key]) { + set(record, key, JSON.parse(JSON.stringify(def))); + } + } + } + }); + + return record; + }, + + getCreateDefaults(more) { + var out = {}; + var fields = this.resourceFields; + + Object.keys(fields).forEach((key) => { + var field = fields[key]; + var def = field['default']; + + if ( field.create && def !== null ) { + if ( typeof def !== 'undefined' ) { + set(out, key, JSON.parse(JSON.stringify(def))); + } + } + }); + + if ( more ) { + Object.keys(more).forEach((key) => { + set(out, key, get(more, key)) + }); + } + + return out; + }, + + optionsFor(field) { + let obj = this.resourceFields[field]; + + if ( obj && obj.options ) { + return (obj.options || []).slice(); + } + + return []; + }, + + typesFor(fieldName) { + const field = this.resourceFields[fieldName]; + + if ( !field || !field.type ) { + return []; + } + + return field.type.replace(/\]/g, '').split('['); + }, + + primaryTypeFor(field) { + const types = this.typesFor(field); + + if ( types ) { + return types[0]; + } + }, + + subTypeFor(field) { + const types = this.typesFor(field); + + if ( types.length < 2 ) { + return null; + } else if ( types.length === 2 ) { + return types[1]; + } else { + let out = types[types.length - 1]; + + for ( let i = types.length - 2 ; i >= 1 ; i-- ) { + out = `${ types[i] }[${ out }]`; + } + + return out; + } + }, + + referencedTypeFor(field) { + const obj = this.resourceFields[field]; + const type = obj.type; + const match = type.match(/^reference\[([^\]]*)\]$/); + + if ( match ) { + return match[1]; + } + }, +}); + +Schema.reopenClass({ + mangleIn(data) { + // Pass IDs through the type normalizer so they will match the case in other places like store.find('schema',normalizeType('thing')) + data._id = data.id; + data.id = normalizeType(data.id); + + return data; + }, +}); + +export default Schema; diff --git a/lib/ember-api-store/addon/services/store.js b/lib/ember-api-store/addon/services/store.js new file mode 100644 index 0000000000..0de70ea7f7 --- /dev/null +++ b/lib/ember-api-store/addon/services/store.js @@ -0,0 +1,1022 @@ +import ArrayProxy from '@ember/array/proxy'; +import { getOwner, setOwner } from '@ember/application'; +import Ember from 'ember'; +import Serializable from '../mixins/serializable'; +import ApiError from '../models/error'; +import { normalizeType } from '../utils/normalize'; +import { applyHeaders } from '../utils/apply-headers'; +import { urlOptions } from '../utils/url-options'; +import { get, set, computed, getProperties } from '@ember/object'; +import { reject, resolve, defer } from 'rsvp'; +import Service, { inject as service } from '@ember/service'; +import { isArray } from '@ember/array'; +import fetch from 'ember-api-store/utils/fetch'; +import { parse as setCookieParser } from 'set-cookie-parser'; + +function getOwnerKey() { + const x = {}; + + setOwner(x); + + return Object.keys(x)[0]; +} +const ownerKey = getOwnerKey(); + +export const defaultMetaKeys = ['actionLinks', 'createDefaults', 'createTypes', 'filters', 'links', 'pagination', 'resourceType', 'sort', 'sortLinks', 'type']; + +var Store = Service.extend({ + cookies: service(), + + defaultTimeout: 30000, + defaultPageSize: 1000, + baseUrl: '/v1', + metaKeys: null, + replaceActions: 'actionLinks', + dropKeys: null, + headers: null, + + arrayProxyClass: ArrayProxy, + arrayProxyKey: 'content', + arrayProxyOptions: null, + + // true: automatically remove from store after a record.delete() succeeds. You might want to disable this if your API has a multi-step deleted vs purged state. + removeAfterDelete: true, + + + fastboot: computed(function() { + return getOwner(this).lookup('service:fastboot'); + }), + + init() { + this._super(); + + if (!this.metaKeys ) { + set(this, 'metaKeys', defaultMetaKeys.slice()); + } + + this._state = { + cache: null, + cacheMap: null, + shoebox: null, + classCache: null, + foundAll: null, + findQueue: null, + watchHasMany: null, + watchReference: null, + missingReference: null, + }; + + this.reset(); + }, + + // All the saved state goes in here + _state: null, + + // You can observe this to tell when a reset() happens + generation: 0, + + initFastBoot(name) { + let fastboot = this.fastboot; + + if ( fastboot ) { + if ( fastboot.get('isFastBoot') ) { + const shoebox = this._state.shoebox = {}; + + fastboot.get('shoebox').put(name, { + shoebox, + foundAll: this._state.foundAll, + }); + } else { + let box = fastboot.get('shoebox').retrieve(name); + + if ( box ) { + Object.keys(box.foundAll || {}).forEach((key) => { + this._state.foundAll[key] = box.foundAll[key]; + }); + + Object.keys(box.shoebox || {}).forEach((type) => { + let map = box.shoebox[type]; + + Object.values(map).forEach((pojo) => { + this._typeify(pojo); + }); + }); + } + } + } + }, + + // Synchronously get record from local cache by [type] and [id]. + // Returns undefined if the record is not in cache, does not talk to API. + getById(type, id) { + type = normalizeType(type, this); + var group = this._groupMap(type); + + if ( group ) { + return group[id]; + } + }, + + // Synchronously returns whether record for [type] and [id] is in the local cache. + hasRecordFor(type, id) { + return !!this.getById(type, id); + }, + + // Synchronously returns whether this exact record object is in the local cache + hasRecord(obj) { + if ( !obj ) { + return false; + } + + var type = normalizeType(obj.get('type'), this); + var group = this._groupMap(type); + + return group[obj.get('id')] === obj; + }, + + hasType(name) { + var type = normalizeType(name, this); + var group = this._groupMap(type, false); + + return !!group; + }, + + isCacheable(opt) { + return !opt || (opt.depaginate && !opt.filter && !opt.forceReload); + }, + + // Asynchronous, returns promise. + // find(type[,null, opt]): Query API for all records of [type] + // find(type,id[,opt]): Query API for record [id] of [type] + // opt: + // filter: Filter by fields, e.g. {field: value, anotherField: anotherValue} (default: none) + // forceReload: Ask the server even if the type+id is already in cache. (default: false) + // limit: Number of reqords to return per page (default: 1000) + // depaginate: If the response is paginated, retrieve all the pages. (default: true) + // headers: Headers to send in the request (default: none). Also includes ones specified in the model constructor. + // url: Use this specific URL instead of looking up the URL for the type/id. This should only be used for bootstraping schemas on startup. + find(type, id, opt) { + type = normalizeType(type, this); + opt = opt || {}; + opt.depaginate = opt.depaginate !== false; + + if ( !id && !opt.limit ) { + opt.limit = this.defaultPageSize; + } + + if ( !type ) { + return reject(ApiError.create({ detail: 'type not specified' })); + } + + // If this is a request for all of the items of [type], then we'll remember that and not ask again for a subsequent request + var isCacheable = this.isCacheable(opt); + + opt.isForAll = !id && isCacheable; + + // See if we already have this resource, unless forceReload is on. + if ( opt.forceReload !== true ) { + if ( opt.isForAll && this._state.foundAll[type] ) { + return resolve(this.all(type), `Cached find all ${ type }`); + } else if ( isCacheable && id ) { + var existing = this.getById(type, id); + + if ( existing ) { + return resolve(existing, `Cached find ${ type }:${ id }`); + } + } + } + + // If URL is explicitly given, go straight to making the request. Do not pass go, do not collect $200. + // This is used for bootstraping to load the schema initially, and shouldn't be used for much else. + if ( opt.url ) { + return this._findWithUrl(opt.url, type, opt); + } else { + // Otherwise lookup the schema for the type and generate the URL based on it. + return this.find('schema', type, { url: `schemas/${ encodeURIComponent(type) }` }).then((schema) => { + if ( schema ) { + var url = schema.linkFor('collection') + (id ? `/${ encodeURIComponent(id) }` : ''); + + if ( url ) { + return this._findWithUrl(url, type, opt); + } + } + + return reject(ApiError.create({ detail: `Unable to find schema for "${ type }"` })); + }); + } + }, + + // Returns a 'live' array of all records of [type] in the cache. + all(type) { + type = normalizeType(type, this); + var group = this._group(type); + + return this._createArrayProxy(group); + }, + + haveAll(type) { + type = normalizeType(type, this); + + return this._state.foundAll[type]; + }, + + // find(type) && return all(type) + findAll(type, opt) { + type = normalizeType(type, this); + opt = opt || {}; + + if ( this.haveAll(type) && this.isCacheable(opt) ) { + return resolve(this.all(type), `All ${ type } already cached`); + } else { + return this.find(type, undefined, opt).then(() => { + return this.all(type); + }); + } + }, + + normalizeUrl(url, includingAbsolute = false) { + let fastboot = this.fastboot; + let origin; + + if ( fastboot && fastboot.isFastBoot ) { + origin = `${ fastboot.request.protocol }//${ fastboot.request.host }`; + } else { + origin = window.location.origin; + } + + // Make absolute URLs to ourselves root-relative + if ( includingAbsolute && url.indexOf(origin) === 0 ) { + url = url.substr(origin.length); + } + + // Make relative URLs root-relative + if ( !url.match(/^https?:/) && url.indexOf('/') !== 0 ) { + url = `${ this.baseUrl.replace(/\/\+$/, '') }/${ url }`; + } + + // For fastboot everything has to be absolute + if ( fastboot && !url.match(/^https?:/) ) { + url = `${ origin }${ url }` + } + + return url; + }, + + // Makes an AJAX request and returns a promise that resolves to an object + // This is separate from request() so it can be mocked for tests, or if you just want a basic AJAX request. + rawRequest(opt) { + const cookieSvc = this.cookies; + + opt.url = this.normalizeUrl(opt.url); + opt.headers = this._headers(opt.headers); + + let fastboot = this.fastboot; + + if ( fastboot && fastboot.isFastBoot ) { + const cookies = cookieSvc.read(null, { raw: true }); + const ary = []; + + Object.keys(cookies).forEach((k) => { + ary.push(`${ k }=${ cookies[k] }`); + }); + + opt.headers['cookie'] = ary.join('; '); + } + + opt.processData = false; + if ( typeof opt.dataType === 'undefined' ) { + opt.dataType = 'text'; // Don't let jQuery JSON parse + } + + if ( opt.timeout !== null && !opt.timeout ) { + opt.timeout = this.defaultTimeout; + } + + if ( opt.data ) { + if ( !opt.contentType ) { + opt.contentType = 'application/json'; + } + + if ( Serializable.detect(opt.data) ) { + opt.data = JSON.stringify(opt.data.serialize()); + } else if ( typeof opt.data === 'object' ) { + opt.data = JSON.stringify(opt.data); + } + } + + const out = fetch(opt.url, opt); + + if ( fastboot && fastboot.isFastBoot ) { + const method = opt.method || 'GET'; + + return out.then((res) => { + copyCookies(res); + console.log('[Fastboot Fetch]', method, opt.url, res.status); + + return res; + }).catch((err) => { + copyCookies(err); + console.log('[Fastboot Fetch Error]', method, opt.url, err.status); + + return reject(err); + }); + } + + return out; + + // Copy cookies from the request's response to the fastboot response + function copyCookies(obj) { + if ( !obj || !obj.headers ) { + return; + } + + const headers = obj.headers.get('set-cookie'); + + if ( headers ) { + setCookieParser(headers).forEach((opts) => { + const name = opts.name; + const value = opts.value; + + delete opts.name; + delete opts.value + opts.raw = true; + + cookieSvc.write(name, value, opts); + }); + } + } + }, + + // Makes an AJAX request that resolves to a resource model + request(opt) { + opt.url = this.normalizeUrl(opt.url); + opt.depaginate = opt.depaginate !== false; + + if ( this.mungeRequest ) { + opt = this.mungeRequest(opt); + } + + return this.rawRequest(opt).then((xhr) => { + return this._requestSuccess(xhr, opt); + }).catch((xhr) => { + return this._requestFailed(xhr, opt); + }); + }, + + // Forget about all the resources that hae been previously remembered. + reset() { + const state = this._state; + + var cache = state.cache; + + if ( cache ) { + Object.keys(cache).forEach((key) => { + if ( cache[key] && cache[key].clear ) { + cache[key].clear(); + } + }); + } else { + state.cache = {}; + } + + var foundAll = state.foundAll; + + if ( foundAll ) { + Object.keys(foundAll).forEach((key) => { + foundAll[key] = false; + }); + } else { + state.foundAll = {}; + } + + if ( state.shoebox ) { + state.shoebox = {}; + } + + state.cacheMap = {}; + state.findQueue = {}; + state.classCache = []; + state.watchHasMany = {}; + state.watchReference = {}; + state.missingReference = {}; + this.incrementProperty('generation'); + }, + + resetType(type) { + type = normalizeType(type, this); + var group = this._group(type); + + this._state.foundAll[type] = false; + this._state.cacheMap[type] = {}; + + if ( this._state.shoebox ) { + this._state.shoebox[type] = {}; + } + + group.clear(); + }, + + // --------- + // Below here be dragons + // --------- + _createArrayProxy(content) { + let data = { [this.arrayProxyKey]: content }; + + let opt = this.arrayProxyOptions || {}; + + Object.keys(opt).forEach((key) => { + data[key] = opt[key]; + }); + + return this.arrayProxyClass.create(data); + }, + + _headers(perRequest) { + let out = { + 'accept': 'application/json', + 'content-type': 'application/json', + }; + + applyHeaders(this.headers, out); + applyHeaders(perRequest, out); + + return out; + }, + + _findWithUrl(url, type, opt) { + var queue = this._state.findQueue; + var cls = getOwner(this).lookup(`model:${ type }`); + + url = urlOptions(url, opt, cls); + + // Collect Headers + var newHeaders = {}; + + if ( cls && cls.constructor.headers ) { + applyHeaders(cls.constructor.headers, newHeaders, true); + } + applyHeaders(opt.headers, newHeaders, true); + // End: Collect headers + + var later; + var queueKey = JSON.stringify(newHeaders) + url; + + // check to see if the request is in the findQueue + if (queue[queueKey]) { + // get the filterd promise object + var filteredPromise = queue[queueKey]; + let deferr = defer(); + + filteredPromise.push(deferr); + later = deferr.promise; + } else { // request is not in the findQueue + opt.url = url; + opt.headers = newHeaders; + + later = this.request(opt).then((result) => { + if ( opt.isForAll ) { + this._state.foundAll[type] = true; + + if ( opt.removeMissing && result.type === 'collection') { + let all = this._group(type); + let toRemove = []; + + all.forEach((obj) => { + if ( !result.includes(obj) ) { + toRemove.push(obj); + } + }); + + toRemove.forEach((obj) => { + this._remove(type, obj); + }); + } + } + + this._finishFind(queueKey, result, 'resolve'); + + return result; + }, (reason) => { + this._finishFind(queueKey, reason, 'reject'); + + return reject(reason); + }); + + // set the queue array to empty indicating we've had 1 promise already + queue[queueKey] = []; + } + + return later; + }, + + _finishFind(key, result, action) { + var queue = this._state.findQueue; + var promises = queue[key]; + + if (promises) { + while (promises.length) { + if (action === 'resolve') { + promises.pop().resolve(result); + } else if (action === 'reject') { + promises.pop().reject(result); + } + } + } + + delete queue[key]; + }, + + _requestSuccess(xhr, opt) { + opt.responseStatus = xhr.status; + + if ( xhr.status === 204 ) { + return; + } + + if ( xhr.body && typeof xhr.body === 'object' ) { + Ember.beginPropertyChanges(); + let response = this._typeify(xhr.body); + + delete xhr.body; + Object.defineProperty(response, 'xhr', { + value: xhr, + configurable: true + }); + Ember.endPropertyChanges(); + + // Depaginate + if ( opt.depaginate && typeof response.depaginate === 'function' ) { + return response.depaginate().then(() => { + return response; + }).catch((xhr) => { + return this._requestFailed(xhr, opt); + }); + } else { + return response; + } + } else { + return xhr.body; + } + }, + + _requestFailed(xhr, opt) { + var body; + + if ( xhr.err ) { + if ( xhr.err === 'timeout' ) { + body = ApiError.create({ + code: 'Timeout', + status: xhr.status, + message: `API request timeout (${ opt.timeout / 1000 } sec)`, + detail: `${ opt.method || 'GET' } ${ opt.url }`, + }); + } else { + body = ApiError.create({ + code: 'Xhr', + status: xhr.status, + message: xhr.err + }); + } + + return finish(body); + } else if ( xhr.body && typeof xhr.body === 'object' ) { + Ember.beginPropertyChanges(); + let out = finish(this._typeify(xhr.body)); + + Ember.endPropertyChanges(); + + return out; + } else { + body = ApiError.create({ + status: xhr.status, + message: xhr.body || xhr.message, + }); + + return finish(body); + } + + function finish(body) { + if ( !ApiError.detectInstance(body) ) { + body = ApiError.create(body); + } + + delete xhr.body; + Object.defineProperty(body, 'xhr', { + value: xhr, + configurable: true + }); + + return reject(body); + } + }, + + // Get the cache array group for [type] + _group(type) { + type = normalizeType(type, this); + var cache = this._state.cache; + var group = cache[type]; + + if ( !group ) { + group = []; + cache[type] = group; + } + + return group; + }, + + // Get the cache map group for [type] + _groupMap(type, autoCreate = true) { + type = normalizeType(type, this); + var cache = this._state.cacheMap; + var group = cache[type]; + + if ( !group && autoCreate ) { + group = {}; + cache[type] = group; + } + + return group; + }, + + // Get the shoebox group for [type] + _shoebox(type) { + type = normalizeType(type, this); + var box = this._state.shoebox; + + if ( !box ) { + return null; + } + + var group = box[type]; + + if ( !group ) { + group = {}; + box[type] = group; + } + + return group; + }, + + // Add a record instance of [type] to cache + _add(type, obj) { + type = normalizeType(type, this); + const id = obj.id; + const group = this._group(type); + const groupMap = this._groupMap(type); + const shoebox = this._shoebox(type); + + group.pushObject(obj); + groupMap[obj.id] = obj; + + if ( shoebox ) { + shoebox[obj.id] = obj.serialize(); + } + + // Update hasMany relationships + const watches = this._state.watchHasMany[type] || []; + const notify = []; + + let watch, val; + + for ( let i = 0 ; i < watches.length ; i++ ) { + watch = watches[i]; + val = obj.get(watch.targetField); + notify.push({ + type: watch.thisType, + id: val, + field: watch.thisField, + sourceStore: watch.sourceStore + }); + } + + // Update references relationships that have been looking for this resource + const key = `${ type }:${ id }`; + const missings = this._state.missingReference[key]; + + if ( missings ) { + notify.pushObjects(missings); + delete this._state.missingReference[key]; + } + + this.notifyFieldsChanged(notify); + + if ( obj.wasAdded && typeof obj.wasAdded === 'function' ) { + obj.wasAdded(); + } + }, + + // Add a lot of instances of the same type quickly. + // - There must be a model for the type already defined. + // - Instances cannot contain any nested other types (e.g. subtypes), + // (they will not be deserialized into their correct type.) + // - wasAdded hooks are not called + // Basically this is just for loading schemas faster. + _bulkAdd(type, pojos) { + type = normalizeType(type, this); + const group = this._group(type); + const groupMap = this._groupMap(type); + const shoebox = this._shoebox(type); + const cls = getOwner(this).lookup(`model:${ type }`); + + group.pushObjects(pojos.map((input) => { + // actions is very unhappy property name for Ember... + if ( this.replaceActions && typeof input.actions !== 'undefined') { + input[this.replaceActions] = input.actions; + delete input.actions; + } + + // Schemas are special + if ( type === 'schema' ) { + input._id = input.id; + input.id = normalizeType(input.id, this); + } + + input.store = this; + let obj = cls.constructor.create(input); + + groupMap[obj.id] = obj; + + if ( shoebox ) { + shoebox[obj._id || obj.id] = obj.serialize(); + } + + return obj; + })); + }, + + // Remove a record of [type] from cache, given the id or the record instance. + _remove(type, obj) { + type = normalizeType(type, this); + const id = obj.id; + const group = this._group(type); + const groupMap = this._groupMap(type); + const shoebox = this._shoebox(type); + + group.removeObject(obj); + delete groupMap[id]; + + if ( shoebox ) { + delete shoebox[id]; + } + + // Update hasMany relationships that refer to this resource + const watches = this._state.watchHasMany[type] || []; + const notify = []; + let watch; + + for ( let i = 0 ; i < watches.length ; i++ ) { + watch = watches[i]; + notify.push({ + type: watch.thisType, + id: obj.get(watch.targetField), + field: watch.thisField + }); + } + + // Update references relationships that have used this resource + const key = `${ type }:${ id }`; + const existing = this._state.watchReference[key]; + + if ( existing ) { + notify.pushObjects(existing); + delete this._state.watchReference[key]; + } + + this.notifyFieldsChanged(notify); + + if ( obj.wasRemoved && typeof obj.wasRemoved === 'function' ) { + obj.wasRemoved(); + } + + // If there's a different baseType, remove that one too + const baseType = normalizeType(obj.baseType, this); + + if ( baseType && type !== baseType ) { + this._remove(baseType, obj); + } + }, + + // Turn a POJO into a Model: {updateStore: true} + _typeify(input, opt = null) { + if ( !input || typeof input !== 'object') { + // Simple values can just be returned + return input; + } + + if ( !opt ) { + opt = { applyDefaults: false }; + } + + let type = get(input, 'type'); + + if ( isArray(input) ) { + // Recurse over arrays + return input.map((x) => this._typeify(x, opt)); + } else if ( !type ) { + // If it doesn't have a type then there's no sub-fields to typeify + return input; + } + + type = normalizeType(type, this); + if ( type === 'collection') { + return this.createCollection(input, opt); + } else if ( !type ) { + return input; + } + + let rec = this.createRecord(input, opt); + + if ( !input.id || opt.updateStore === false ) { + return rec; + } + + // This must be after createRecord so that mangleIn() can change the baseType + let baseType = normalizeType(rec.get('baseType'), this); + + if ( baseType ) { + // Only use baseType if it's different from type + if ( baseType === type ) { + baseType = null; + } + } + + let out = rec; + const cacheEntry = this.getById(type, rec.id); + + if ( cacheEntry ) { + // Check for hasMany relationship changes + const watches = (this._state.watchHasMany[type] || []).slice(); + const notify = []; + + if ( baseType ) { + watches.addObjects(this._state.watchHasMany[baseType] || []); + } + + let watch, oldVal, newVal; + + for ( let i = 0 ; i < watches.length ; i++ ) { + watch = watches[i]; + oldVal = cacheEntry.get(watch.targetField); + newVal = rec.get(watch.targetField); + + // console.log('Compare', watch.targetField, oldVal, 'to', newVal); + if ( oldVal !== newVal ) { + notify.push({ + type: watch.thisType, + id: oldVal, + field: watch.thisField + }); + notify.push({ + type: watch.thisType, + id: newVal, + field: watch.thisField + }); + } + } + + cacheEntry.replaceWith(rec); + out = cacheEntry; + + // Update changed hasMany's + this.notifyFieldsChanged(notify); + } else { + this._add(type, rec); + + if ( baseType ) { + this._add(baseType, rec); + } + } + + return out; + }, + + notifyFieldsChanged(ary) { + let entry, tgt; + + for ( let i = 0 ; i < ary.length ; i++ ) { + entry = ary[i]; + if ( entry.sourceStore ) { + tgt = entry.sourceStore.getById(entry.type, entry.id); + } else { + tgt = this.getById(entry.type, entry.id); + } + + if ( tgt ) { + // console.log('Notify', entry.type, entry.id, 'that', entry.field,'changed'); + tgt.notifyPropertyChange(entry.field); + } + } + }, + + // Create a collection: {key: 'data'} + createCollection(input, opt) { + Ember.beginPropertyChanges(); + let key = (opt && opt.key ? opt.key : 'data'); + var cls = getOwner(this).lookup('model:collection'); + var content = input[key].map((x) => this._typeify(x, opt)); + var output = cls.constructor.create({ content }); + + Object.defineProperty(output, 'store', { + value: this, + configurable: true + }); + + output.setProperties(getProperties(input, this.metaKeys)); + Ember.endPropertyChanges(); + + return output; + }, + + getClassFor(type) { + let cls = this._state.classCache[type]; + + if ( cls ) { + return cls; + } + + let owner = getOwner(this); + + if ( type ) { + cls = owner.lookup(`model:${ type }`); + } + + if ( !cls ) { + cls = owner.lookup('model:resource'); + } + + this._state.classCache[type] = cls; + + return cls; + }, + + canCreate(type) { + let schema = this.getById('schema', type); + + return schema && schema.collectionMethods && schema.collectionMethods.indexOf('POST') > -1; + }, + + canList(type) { + let schema = this.getById('schema', type); + + return schema && schema.collectionMethods && schema.collectionMethods.indexOf('GET') > -1; + }, + + // Create a record: {applyDefaults: false} + createRecord(data, opt) { + opt = opt || {}; + let type = normalizeType(get(opt, 'type') || get(data, 'type') || '', this); + + let cls; + + if ( type ) { + cls = this.getClassFor(type); + } + + let schema = this.getById('schema', type); + let input = data; + + if ( opt.applyDefaults !== false && schema ) { + input = schema.getCreateDefaults(data); + } + + // actions is very unhappy property name for Ember... + if ( this.replaceActions && typeof input.actions !== 'undefined') { + input[this.replaceActions] = input.actions; + delete input.actions; + } + + let cons = cls.constructor; + + if ( cons.mangleIn && typeof cons.mangleIn === 'function' ) { + input = cons.mangleIn(input, this); + } + + if ( schema ) { + let fields = schema.get('typeifyFields'); + + for ( let i = fields.length - 1 ; i >= 0 ; i-- ) { + let k = fields[i]; + + if ( input[k] ) { + input[k] = this._typeify(input[k], opt); + } + } + } + var output = cons.create(input); + + Object.defineProperty(output, ownerKey, { + enumerable: false, + value: getOwner(this) + }) + + Object.defineProperty(output, 'store', { + enumerable: false, + value: this, + configurable: true + }); + + return output; + }, +}); + +export default Store; diff --git a/lib/ember-api-store/addon/utils/ajax-promise.js b/lib/ember-api-store/addon/utils/ajax-promise.js new file mode 100644 index 0000000000..3e29cf98b5 --- /dev/null +++ b/lib/ember-api-store/addon/utils/ajax-promise.js @@ -0,0 +1,31 @@ +import $ from 'jquery'; +import { Promise } from 'rsvp'; + +export function ajaxPromise(opt, justBody) { + var promise = new Promise(((resolve, reject) => { + $.ajax(opt).then(success, fail); + + function success(body, textStatus, xhr) { + if ( justBody === true ) { + resolve(body, `AJAX Response: ${ opt.url }(${ xhr.status })`); + } else { + resolve({ + xhr, + textStatus + }, `AJAX Response: ${ opt.url }(${ xhr.status })`); + } + } + + function fail(xhr, textStatus, err) { + reject({ + xhr, + textStatus, + err + }, `AJAX Error:${ opt.url }(${ xhr.status })`); + } + }), `Raw AJAX Request: ${ opt.url }`); + + return promise; +} + +export default ajaxPromise; diff --git a/lib/ember-api-store/addon/utils/apply-headers.js b/lib/ember-api-store/addon/utils/apply-headers.js new file mode 100644 index 0000000000..b023cd36db --- /dev/null +++ b/lib/ember-api-store/addon/utils/apply-headers.js @@ -0,0 +1,35 @@ +import { get } from '@ember/object'; + +// Copy the headers from `more` into the object `dest` +// including ones with a value of undefined, so they +// can be removed later by someone calling applyHeaders. +export function copyHeaders(more, dest) { + if ( !more || typeof more !== 'object' ) { + return; + } + + Object.keys(more).forEach((key) => { + var val = get(more, key); + var normalizedKey = key.toLowerCase(); + + dest[normalizedKey] = val; + }); +} + +// Apply the headers from `more` into the object `dest` +export function applyHeaders(more, dest, copyUndefined) { + if ( !more || typeof more !== 'object' ) { + return; + } + + Object.keys(more).forEach((key) => { + var val = get(more, key); + var normalizedKey = key.toLowerCase(); + + if ( val === undefined && copyUndefined !== true ) { + delete dest[normalizedKey]; + } else { + dest[normalizedKey] = val; + } + }); +} diff --git a/lib/ember-api-store/addon/utils/denormalize.js b/lib/ember-api-store/addon/utils/denormalize.js new file mode 100644 index 0000000000..75998d94b6 --- /dev/null +++ b/lib/ember-api-store/addon/utils/denormalize.js @@ -0,0 +1,143 @@ +import { computed } from '@ember/object'; +import { normalizeType } from '../utils/normalize'; + +function _getReference(store, referencedType, referencedId, thisType, thisId, computedKey, sourceStore) { + const watchKey = `${ referencedType }:${ referencedId }`; + + if ( !referencedId ) { + return null; + } + + const result = store.getById(referencedType, referencedId); + + // Register for watches for when the references resource is removed + let list = store._state.watchReference[watchKey]; + + if ( !list ) { + list = []; + store._state.watchReference[watchKey] = list; + } + + list.push({ + type: thisType, + id: thisId, + field: computedKey, + sourceStore + }); + + if ( result ) { + return result; + } + + // The referenced value isn't found, so note it so the computed property can be updated if it comes in later + list = store._state.missingReference[watchKey]; + if ( !list ) { + list = []; + store._state.missingReference[watchKey] = list; + } + + // console.log('Missing reference from', thisType, thisId, field, 'to', computedKey); + list.push({ + type: thisType, + id: thisId, + field: computedKey, + sourceStore + }); + + return null; +} + +export function reference(field, referencedType = null, storeName = 'store') { + if ( !field ) { + throw new Error('reference must specify the field that it refers to'); + } + + if (!referencedType ) { + referencedType = field.replace(/Id$/, ''); + } + + return computed(field, 'id', 'store', 'type', { + get(computedKey) { + const store = this.get(storeName); + const thisType = this.type; + const thisId = this.id; + const referencedId = this.get(field); + + return _getReference(store, referencedType, referencedId, thisType, thisId, computedKey, this.store); + } + }); +} + + +export function arrayOfReferences(field = null, referencedType = null, storeName = 'store') { + if (!referencedType ) { + referencedType = field.replace(/Id$/, ''); + } + + return computed(`${ field }.[]`, 'id', 'store', 'type', { + get(computedKey) { + const store = this.get(storeName); + const thisType = this.type; + const thisId = this.id; + const idArray = this.get(field) || []; + + const out = []; + let entry; + + for ( let i = 0 ; i < idArray.get('length') ; i++ ) { + entry = _getReference(store, referencedType, idArray.objectAt(i), thisType, thisId, computedKey, this.store); + if ( entry ) { + out.push(entry); + } + } + + return out; + } + }); +} + +// workload ... pods: hasMany('id', 'pod', 'workloadId') +export function hasMany(matchField, targetType, targetField, storeName = 'store', additionalFilter = null, sourceStoreName = null) { + targetType = normalizeType(targetType); + + return computed('type', { + get(computedKey) { + let store = this.get(storeName); + let sourceStore; + + if ( sourceStoreName ) { + sourceStore = this.get(sourceStoreName); + } + const thisType = normalizeType(this.type, store); + + let watch = store._state.watchHasMany[targetType]; + + if ( !watch ) { + watch = []; + store._state.watchHasMany[targetType] = watch; + } + + const key = `${ computedKey }/${ thisType }/${ matchField }/${ targetField }` + + if ( !watch.findBy('key', key) ) { + watch.push({ + key, + thisField: computedKey, + thisType, + matchField, + targetField, + sourceStore, + }); + } + + // console.log('get hasMany for', thisType, matchField, 'to', targetType, targetField, 'in', storeName); + let out = store.all(targetType).filterBy(targetField, this.get(matchField)); + + if ( additionalFilter ) { + out = out.filter(additionalFilter); + } + + return out; + } + }); +} diff --git a/lib/ember-api-store/addon/utils/fetch.js b/lib/ember-api-store/addon/utils/fetch.js new file mode 100644 index 0000000000..e0d437daad --- /dev/null +++ b/lib/ember-api-store/addon/utils/fetch.js @@ -0,0 +1,61 @@ +import _fetch from 'fetch'; +import { reject } from 'rsvp' + +export function fetch(url, opt) { + opt = opt || {}; + if (!opt.credentials) { + opt.credentials = 'same-origin'; + } + + if ( opt.data && !opt.body ) { + opt.body = opt.data; + delete opt.data; + } + + return _fetch(url, opt).then(done); +} + +function done(res) { + let ct = ''; + + if ( res && res.headers ) { + ct = res.headers.get('content-type'); + } + + if ( res.status === 204 ) { + return respond(res); + } else { + return res.text().then((body) => { + if (body.length) { + if (ct && ct.toLowerCase().indexOf('application/json') >= 0) { + // return res.json().then(function(body) { + return respond(res, JSON.parse(body)); + // }); + } else { + return respond(res, body); + } + } else { + // return res.text().then(function(body) { + return respond(res, null); + // }); + } + }); + } +} + +function respond(res, body) { + let out = { + body, + status: res.status, + statusText: res.statusText, + headers: res.headers + }; + + if (res.ok) { + return out; + } else { + return reject(out); + } +} + +export default fetch; diff --git a/lib/ember-api-store/addon/utils/normalize.js b/lib/ember-api-store/addon/utils/normalize.js new file mode 100644 index 0000000000..cc2365fa53 --- /dev/null +++ b/lib/ember-api-store/addon/utils/normalize.js @@ -0,0 +1,13 @@ +export function normalizeType(type, store) { + type = (type || '').toLowerCase(); + + if ( type.startsWith('/') && store ) { + const prefix = `${ store.baseUrl }/schemas/`; + + if ( type.startsWith(prefix) ) { + type = type.substr(prefix.length); + } + } + + return type; +} diff --git a/lib/ember-api-store/addon/utils/url-options.js b/lib/ember-api-store/addon/utils/url-options.js new file mode 100644 index 0000000000..9fc4f065b8 --- /dev/null +++ b/lib/ember-api-store/addon/utils/url-options.js @@ -0,0 +1,64 @@ +import { isArray } from '@ember/array'; + +export function urlOptions(url, opt, cls) { + opt = opt || {}; + + // Filter + // @TODO friendly support for modifiers + if ( opt.filter ) { + var keys = Object.keys(opt.filter); + + keys.forEach((key) => { + var vals = opt.filter[key]; + + if ( !isArray(vals) ) { + vals = [vals]; + } + + vals.forEach((val) => { + url += `${ (url.indexOf('?') >= 0 ? '&' : '?') + encodeURIComponent(key) }=${ encodeURIComponent(val) }`; + }); + }); + } + // End: Filter + + + // Limit + let limit = opt.limit; + + if ( !limit && cls ) { + limit = cls.constructor.defaultLimit; + } + + if ( limit ) { + url += `${ url.indexOf('?') >= 0 ? '&' : '?' }limit=${ limit }`; + } + // End: Limit + + + // Sort + var sortBy = opt.sortBy; + + if ( !sortBy && cls ) { + sortBy = cls.constructor.defaultSortBy; + } + + if ( sortBy ) { + url += `${ url.indexOf('?') >= 0 ? '&' : '?' }sort=${ encodeURIComponent(sortBy) }`; + } + + var orderBy = opt.sortOrder; + + if ( !orderBy && cls ) { + orderBy = cls.constructor.defaultSortOrder; + } + + if ( orderBy ) { + url += `${ url.indexOf('?') >= 0 ? '&' : '?' }order=${ encodeURIComponent(orderBy) }`; + } + // End: Sort + + return url; +} + +export default urlOptions; diff --git a/lib/ember-api-store/addon/utils/validate.js b/lib/ember-api-store/addon/utils/validate.js new file mode 100644 index 0000000000..ddb96d6e6d --- /dev/null +++ b/lib/ember-api-store/addon/utils/validate.js @@ -0,0 +1,262 @@ +import { get } from '@ember/object'; +import { isArray } from '@ember/array'; + +export function ucFirst(str) { + str = str || ''; + + return str.substr(0, 1).toUpperCase() + str.substr(1); +} + +export function camelToTitle(str) { + return (str || '').dasherize().split('-').map((str) => { + return ucFirst(str); + }).join(' '); +} + +export function displayKeyFor(type, key, intl) { + let intlPrefix = `model.${ type }.${ key }`; + + if ( intl.exists(`${ intlPrefix }.label`) ) { + return intl.t(`${ intlPrefix }.label`); + } + + if ( intl.exists(intlPrefix) ) { + return intl.t(intlPrefix); + } + + if ( key.match(/.Id$/) ) { + return camelToTitle(key.replace(/Id$/, '')); + } + + return camelToTitle(key); +} + +export function validateLength(val, field, displayKey, intl, errors = []) { + let len = 0; + + if ( val ) { + len = get(val, 'length'); + } + + if ( + !field.nullable && + field.required && + ( val === null || + (typeof val === 'string' && len === 0) || + (isArray(val) && len === 0) + ) + ) { + errors.push(intl.t('validation.required', { key: displayKey })); + + return errors; + } + + if ( val === null ) { + return errors; + } + + let min, max; + let lengthKey = (field.type.indexOf('array[') === 0 ? 'arrayLength' : 'stringLength'); + + // String and array length: + min = field.minLength; + max = field.maxLength; + if ( min && max ) { + if ( (len < min) || (len > max) ) { + if ( min === max ) { + errors.push(intl.t(`validation.${ lengthKey }.exactly`, { + key: displayKey, + count: min + })); + } else { + errors.push(intl.t(`validation.${ lengthKey }.between`, { + key: displayKey, + min, + max + })); + } + } + } else if ( min && (len < min) ) { + errors.push(intl.t(`validation.${ lengthKey }.min`, { + key: displayKey, + count: min + })); + } else if ( max && (len > max) ) { + errors.push(intl.t(`validation.${ lengthKey }.max`, { + key: displayKey, + count: max + })); + } + + // Number min/max + min = field.min; + max = field.max; + if ( val !== null && min && max ) { + if ( (val < min) || (val > max) ) { + if ( min === max ) { + errors.push(intl.t('validation.number.exactly', { + key: displayKey, + val: max + })); + } else { + errors.push(intl.t('validation.number.between', { + key: displayKey, + min, + max + })); + } + } + } else if ( min && (val < min) ) { + errors.push(intl.t('validation.number.min', { + key: displayKey, + val: min + })); + } else if ( max && (val > max) ) { + errors.push(intl.t('validation.number.max', { + key: displayKey, + val: max + })); + } + + return errors; +} + +export function validateChars(val, field, displayKey, intl, errors = []) { + const test = []; + + if ( field.validChars ) { + test.push(`[^${ field.validChars }]`); + } + + if ( field.invalidChars ) { + test.push(`[${ field.invalidChars }]`); + } + + if ( test.length ) { + var regex = new RegExp(`(${ test.join('|') })`, 'g'); + var match = val.match(regex); + + if ( match ) { + match = match.uniq().map((chr) => { + if ( chr === ' ' ) { + return '[space]'; + } else { + return chr; + } + }); + + errors.push(intl.t('validation.chars', { + key: displayKey, + count: match.length, + chars: match.join(' ') + })); + } + } + + return errors; +} + +export function validateHostname(val, displayKey, intl, opts, errors = []) { + opts = opts || {}; + + const max = opts.max || 253; + const restricted = opts.restricted || false; + + // Hostname can not start with a dot + if (val.slice(0, 1) === '.'){ + errors.push(intl.t('validation.dns.hostname.startDot', { key: displayKey })); + } + + // Hostname can not end with a dot in restricted mode + if ( restricted && val.length > 1 && val.slice(-1) === '.' ) { + errors.push(intl.t('validation.dns.hostname.endDot', { key: displayKey })); + } + + // Hostname can not be empty string + if (val.length === 0){ + errors.push(intl.t('validation.dns.hostname.empty', { key: displayKey })); + } + + // Total length of the hostname can be at most 253 characters + // (255 minus one for null-termination, and one for the trailing dot of a real FQDN) + if (val.length > max) { + errors.push(intl.t('validation.dns.hostname.tooLong', { + key: displayKey, + max + })); + } + + // Split the hostname with the dot and validate the element as label + let labels = val.split(/\./); + let label; + + for ( let i = 0 ; i < labels.length ; i++ ) { + label = labels[i]; + + // Already checked if Hostname starts with a dot + if ( i === 0 && label === '' ){ + continue; + } + + // Hostname can end with a dot (this makes it an explicitly fully qualified domain name) + // so the last element of the labels can be empty string. + if (i === labels.length - 1 && label === ''){ + continue; + } + + validateDnsLabel(label, displayKey, intl, { forHostname: true }, errors); + } + + return errors; +} + +export function validateDnsLabel(label, displayKey, intl, opts, errors = []) { + opts = opts || {}; + + const forHostname = opts.forHostname || false; + const errorKey = (forHostname ? 'hostname' : 'label'); + const restricted = opts.restricted || false; + + // [a-z]([-a-z0-9]*[a-z0-9])? + + // Label must consist of a-z, 0-9 and hyphen + validateChars(label, { validChars: 'A-Za-z0-9-' }, displayKey, intl, errors); + + // Restricted labels cannot begin with a number + if ( restricted && label.slice(0, 1).match(/[0-9]/) ) { + errors.push(intl.t(`validation.dns.${ errorKey }.startNumber`, { key: displayKey })); + } + + // Label cannot begin with a hyphen + if ( label.slice(0, 1) === '-' ) { + errors.push(intl.t(`validation.dns.${ errorKey }.startHyphen`, { key: displayKey })); + } + + // Label cannot end with a hyphen + if ( label.slice(-1) === '-' ) { + errors.push(intl.t(`validation.dns.${ errorKey }.endHyphen`, { key: displayKey })); + } + + // Label cannot contain two consecutive hyphens at the 3rd & 4th characters, unless an IDN string + if ( label.substr(2, 2) === '--' && label.substr(0, 2) !== 'xn' ) { + errors.push(intl.t(`validation.dns.doubleHyphen`, { key: displayKey })); + } + + // Label must be 1-63 characters + const min = 1; + const max = 63; + + if ( label.length < min ) { + errors.push(intl.t(`validation.dns.${ errorKey }.emptyLabel`, { + key: displayKey, + min + })); + } else if ( label.length > max ) { + errors.push(intl.t(`validation.dns.${ errorKey }.tooLongLabel`, { + key: displayKey, + max + })); + } + + return errors; +} diff --git a/lib/ember-api-store/app/initializers/ember-api-store.js b/lib/ember-api-store/app/initializers/ember-api-store.js new file mode 100644 index 0000000000..40ebc578ee --- /dev/null +++ b/lib/ember-api-store/app/initializers/ember-api-store.js @@ -0,0 +1,6 @@ +import initializer from 'ember-api-store/initializers/store'; + +export default { + name: 'ember-api-store', + initialize: initializer() +} diff --git a/lib/ember-api-store/app/utils/fetch.js b/lib/ember-api-store/app/utils/fetch.js new file mode 100644 index 0000000000..c0203d9012 --- /dev/null +++ b/lib/ember-api-store/app/utils/fetch.js @@ -0,0 +1 @@ +export default 'ember-api-store/utils/fetch'; diff --git a/lib/ember-api-store/config/ember-try.js b/lib/ember-api-store/config/ember-try.js new file mode 100644 index 0000000000..f14ac7f50b --- /dev/null +++ b/lib/ember-api-store/config/ember-try.js @@ -0,0 +1,79 @@ +'use strict'; + +const getChannelURL = require('ember-source-channel-url'); + +module.exports = async function () { + return { + useYarn: true, + scenarios: [ + { + name: 'ember-lts-3.16', + npm: { + devDependencies: { + 'ember-source': '~3.16.0', + }, + }, + }, + { + name: 'ember-lts-3.20', + npm: { + devDependencies: { + 'ember-source': '~3.20.5', + }, + }, + }, + { + name: 'ember-release', + npm: { + devDependencies: { + 'ember-source': await getChannelURL('release'), + }, + }, + }, + { + name: 'ember-beta', + npm: { + devDependencies: { + 'ember-source': await getChannelURL('beta'), + }, + }, + }, + { + name: 'ember-canary', + npm: { + devDependencies: { + 'ember-source': await getChannelURL('canary'), + }, + }, + }, + { + name: 'ember-default-with-jquery', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ + 'jquery-integration': true, + }), + }, + npm: { + devDependencies: { + '@ember/jquery': '^1.1.0', + }, + }, + }, + { + name: 'ember-classic', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ + 'application-template-wrapper': true, + 'default-async-observers': false, + 'template-only-glimmer-components': false, + }), + }, + npm: { + ember: { + edition: 'classic', + }, + }, + }, + ], + }; +}; diff --git a/lib/ember-api-store/config/environment.js b/lib/ember-api-store/config/environment.js new file mode 100644 index 0000000000..9b5d25d2f5 --- /dev/null +++ b/lib/ember-api-store/config/environment.js @@ -0,0 +1,6 @@ +/* eslint-env node */ +'use strict'; + +module.exports = function (/* environment, appConfig */) { + return {}; +}; diff --git a/lib/ember-api-store/index.js b/lib/ember-api-store/index.js new file mode 100644 index 0000000000..2c37d30129 --- /dev/null +++ b/lib/ember-api-store/index.js @@ -0,0 +1,15 @@ +/* eslint-disable */ +const webpack = require('webpack'); + +'use strict'; + +module.exports = { + name: 'ember-api-store', + + isDevelopingAddon() { + return true; + }, + options: { + babel: { plugins: [require('ember-auto-import/babel-plugin')] }, + } +}; diff --git a/lib/ember-api-store/package.json b/lib/ember-api-store/package.json new file mode 100644 index 0000000000..32045be654 --- /dev/null +++ b/lib/ember-api-store/package.json @@ -0,0 +1,32 @@ +{ + "name": "ember-api-store", + "keywords": [ + "ember-addon" + ], + "dependencies": { + "@ember/optional-features": "*", + "@ember/test-helpers": "*", + "@glimmer/component": "*", + "@glimmer/tracking": "*", + "ember-cli": "*", + "ember-cli-app-version": "*", + "ember-cli-dependency-checker": "*", + "ember-cli-fastboot": "*", + "ember-cli-htmlbars": "*", + "ember-cli-inject-live-reload": "*", + "ember-cli-terser": "*", + "ember-export-application-global": "*", + "ember-fetch": "*", + "ember-load-initializers": "*", + "ember-maybe-import-regenerator": "*", + "ember-page-title": "*", + "ember-resolver": "*", + "ember-source": "*", + "ember-template-lint": "*", + "ember-try": "*", + "ember-auto-import": "*", + "ember-cli-babel": "*", + "ember-cookies": "*", + "set-cookie-parser": "*" + } +} diff --git a/lib/nodes/addon/components/driver-exoscale/component.js b/lib/nodes/addon/components/driver-exoscale/component.js index 48e128395b..2d348e63cb 100644 --- a/lib/nodes/addon/components/driver-exoscale/component.js +++ b/lib/nodes/addon/components/driver-exoscale/component.js @@ -1,7 +1,7 @@ import { alias, equal } from '@ember/object/computed'; import Driver from 'shared/mixins/node-driver'; import { get, set } from '@ember/object'; -import { ajaxPromise } from '@rancher/ember-api-store/utils/ajax-promise'; +import { ajaxPromise } from 'ember-api-store/utils/ajax-promise'; import Component from '@ember/component'; import { on } from '@ember/object/evented'; import layout from './template'; diff --git a/lib/nodes/addon/components/driver-packet/component.js b/lib/nodes/addon/components/driver-packet/component.js index a49e03ceac..0c0ca3a20f 100644 --- a/lib/nodes/addon/components/driver-packet/component.js +++ b/lib/nodes/addon/components/driver-packet/component.js @@ -7,7 +7,7 @@ import { isEmpty } from '@ember/utils'; import { alias } from '@ember/object/computed'; import Component from '@ember/component'; import NodeDriver from 'shared/mixins/node-driver'; -import fetch from '@rancher/ember-api-store/utils/fetch'; +import fetch from 'ember-api-store/utils/fetch'; import layout from './template'; const OS_WHITELIST = ['centos_7', 'coreos_stable', 'ubuntu_14_04', 'ubuntu_16_04', 'rancher']; diff --git a/lib/shared/addon/components/api-field/component.js b/lib/shared/addon/components/api-field/component.js index 58bb557a82..9e598c9434 100644 --- a/lib/shared/addon/components/api-field/component.js +++ b/lib/shared/addon/components/api-field/component.js @@ -1,6 +1,6 @@ import Component from '@ember/component'; import layout from './template'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import { computed, get, observer } from '@ember/object' import { run } from '@ember/runloop'; diff --git a/lib/shared/addon/components/cluster-driver/driver-rke/component.js b/lib/shared/addon/components/cluster-driver/driver-rke/component.js index 04ec7782b8..71c4402d99 100644 --- a/lib/shared/addon/components/cluster-driver/driver-rke/component.js +++ b/lib/shared/addon/components/cluster-driver/driver-rke/component.js @@ -6,7 +6,7 @@ import { on } from '@ember/object/evented'; import { next, once, scheduleOnce } from '@ember/runloop'; import { inject as service } from '@ember/service'; import { isEmpty, typeOf } from '@ember/utils'; -import { validateHostname } from '@rancher/ember-api-store/utils/validate'; +import { validateHostname } from 'ember-api-store/utils/validate'; import deepSet from 'ember-deep-set'; import jsyaml from 'js-yaml'; import moment from 'moment'; diff --git a/lib/shared/addon/components/custom-command/component.js b/lib/shared/addon/components/custom-command/component.js index 3828acb5dd..7e8d1f4db1 100644 --- a/lib/shared/addon/components/custom-command/component.js +++ b/lib/shared/addon/components/custom-command/component.js @@ -3,7 +3,7 @@ import layout from './template'; import { computed } from '@ember/object'; import ManageLabels from 'shared/mixins/manage-labels'; import { get, set, setProperties } from '@ember/object'; -import { validateHostname } from '@rancher/ember-api-store/utils/validate'; +import { validateHostname } from 'ember-api-store/utils/validate'; import { validateEndpoint, } from 'shared/utils/util'; import { inject as service } from '@ember/service'; import { isEmpty } from '@ember/utils'; diff --git a/lib/shared/addon/digital-ocean/service.js b/lib/shared/addon/digital-ocean/service.js index c9a71de272..8bd8235e58 100644 --- a/lib/shared/addon/digital-ocean/service.js +++ b/lib/shared/addon/digital-ocean/service.js @@ -1,6 +1,6 @@ import Service from '@ember/service'; import { addQueryParam, addQueryParams } from 'shared/utils/util'; -import fetch from '@rancher/ember-api-store/utils/fetch'; +import fetch from 'ember-api-store/utils/fetch'; import { inject as service } from '@ember/service'; import { get, set } from '@ember/object'; import { reject } from 'rsvp'; diff --git a/lib/shared/addon/linode/service.js b/lib/shared/addon/linode/service.js index 0e7427f9c8..c13b2904b6 100644 --- a/lib/shared/addon/linode/service.js +++ b/lib/shared/addon/linode/service.js @@ -1,5 +1,5 @@ import Service from '@ember/service'; -import fetch from '@rancher/ember-api-store/utils/fetch'; +import fetch from 'ember-api-store/utils/fetch'; import { inject as service } from '@ember/service'; import { get, set } from '@ember/object'; import { reject } from 'rsvp'; diff --git a/lib/shared/addon/mixins/new-or-edit.js b/lib/shared/addon/mixins/new-or-edit.js index bae1df9b4b..2b4daca5a1 100644 --- a/lib/shared/addon/mixins/new-or-edit.js +++ b/lib/shared/addon/mixins/new-or-edit.js @@ -1,7 +1,7 @@ import { resolve } from 'rsvp'; import { alias } from '@ember/object/computed'; import Mixin from '@ember/object/mixin'; -import Resource from '@rancher/ember-api-store/models/resource'; +import Resource from 'ember-api-store/models/resource'; import Errors from 'ui/utils/errors'; import { get, set } from '@ember/object'; diff --git a/lib/shared/addon/user-language/service.js b/lib/shared/addon/user-language/service.js index b559e94e33..99fb07f0c5 100644 --- a/lib/shared/addon/user-language/service.js +++ b/lib/shared/addon/user-language/service.js @@ -2,7 +2,7 @@ import { resolve } from 'rsvp'; import { alias } from '@ember/object/computed'; import Service, { inject as service } from '@ember/service'; import C from 'shared/utils/constants'; -import { ajaxPromise } from '@rancher/ember-api-store/utils/ajax-promise'; +import { ajaxPromise } from 'ember-api-store/utils/ajax-promise'; // @@TODO@@ - 10-27-17 - move to addon import { loadScript } from 'ui/utils/load-script'; import { on } from '@ember/object/evented'; diff --git a/lib/shared/addon/utils/errors.js b/lib/shared/addon/utils/errors.js index 1226357eb4..31e8332ae7 100644 --- a/lib/shared/addon/utils/errors.js +++ b/lib/shared/addon/utils/errors.js @@ -1,4 +1,4 @@ -import ApiError from '@rancher/ember-api-store/models/error'; +import ApiError from 'ember-api-store/models/error'; import { get } from '@ember/object'; export default { diff --git a/lib/shared/addon/utils/fetch-yaml.js b/lib/shared/addon/utils/fetch-yaml.js index 179150be25..1086c1910d 100644 --- a/lib/shared/addon/utils/fetch-yaml.js +++ b/lib/shared/addon/utils/fetch-yaml.js @@ -1,4 +1,4 @@ -import { ajaxPromise } from '@rancher/ember-api-store/utils/ajax-promise'; +import { ajaxPromise } from 'ember-api-store/utils/ajax-promise'; export default function fetchYaml(yamlLink, yamlOnly = true){ const params = { diff --git a/lib/shared/addon/utils/parse-label.js b/lib/shared/addon/utils/parse-label.js index 4254da3220..2d23788fd6 100644 --- a/lib/shared/addon/utils/parse-label.js +++ b/lib/shared/addon/utils/parse-label.js @@ -1,4 +1,4 @@ -import { validateChars, validateHostname } from '@rancher/ember-api-store/utils/validate'; +import { validateChars, validateHostname } from 'ember-api-store/utils/validate'; export function parseKey(str) { str = str || ''; diff --git a/lib/shared/package.json b/lib/shared/package.json index ea5758921a..4ba1f6703d 100644 --- a/lib/shared/package.json +++ b/lib/shared/package.json @@ -8,7 +8,6 @@ "d3": "*", "dompurify": "*", "echarts": "*", - "@rancher/ember-api-store": "*", "ember-auto-import": "*", "ember-basic-dropdown": "*", "ember-cli-babel": "*", diff --git a/package.json b/package.json index 3a4d83a784..d4965f4d84 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "@ember/test-helpers": "^2.1.4", "@glimmer/component": "^1.0.3", "@glimmer/tracking": "^1.0.3", - "@rancher/ember-api-store": "~4.0.0", "ansi_up": "^5.0.0", "async": "3.2.0", "babel-eslint": "^10.1.0", @@ -59,6 +58,7 @@ "ember-cli-terser": "^4.0.1", "ember-cli-test-loader": "^3.0.0", "ember-concurrency": "^1.3.0", + "ember-cookies": "^0.5.2", "ember-copy": "^1.0.0", "ember-deep-set": "^0.2.0", "ember-engines": "~0.8.15", @@ -101,6 +101,7 @@ "qunit": "^2.13.0", "qunit-dom": "^1.6.0", "semver": "^7.3.2", + "set-cookie-parser": "^2.4.6", "shell-quote": "^1.7.3", "webpack": "^4.44.1", "xterm": "^4.9.0", @@ -130,6 +131,7 @@ "ember-addon": { "paths": [ "lib/alert", + "lib/ember-api-store", "lib/global-admin", "lib/logging", "lib/login", diff --git a/yarn.lock b/yarn.lock index 691a892d1e..35db19e472 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,6 +30,15 @@ dependencies: "@babel/highlight" "^7.14.5" +"@babel/code-frame@^7.25.9": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" @@ -49,6 +58,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.5.tgz#8ef4c18e58e801c5c95d3c1c0f2874a2680fadea" integrity sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e" + integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== + "@babel/core@^7.0.0", "@babel/core@^7.11.0", "@babel/core@^7.3.4": version "7.11.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" @@ -163,6 +177,17 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.25.9": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f" + integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw== + dependencies: + "@babel/parser" "^7.26.2" + "@babel/types" "^7.26.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -177,6 +202,13 @@ dependencies: "@babel/types" "^7.12.13" +"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== + dependencies: + "@babel/types" "^7.25.9" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" @@ -193,6 +225,14 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz#f41752fe772a578e67286e6779a68a5a92de1ee9" + integrity sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-compilation-targets@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" @@ -224,6 +264,17 @@ browserslist "^4.16.6" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== + dependencies: + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.10.5", "@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.8.3": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" @@ -247,6 +298,19 @@ "@babel/helper-replace-supers" "^7.13.0" "@babel/helper-split-export-declaration" "^7.12.13" +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83" + integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/traverse" "^7.25.9" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" @@ -264,6 +328,15 @@ "@babel/helper-annotate-as-pure" "^7.12.13" regexpu-core "^4.7.1" +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz#3e8999db94728ad2b2458d7a470e7770b7764e26" + integrity sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + regexpu-core "^6.1.1" + semver "^6.3.1" + "@babel/helper-define-map@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" @@ -287,6 +360,17 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-explode-assignable-expression@^7.10.4": version "7.11.4" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz#2d8e3470252cc17aba917ede7803d4a7a276a41b" @@ -392,6 +476,14 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-member-expression-to-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" + integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" @@ -413,6 +505,14 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" @@ -454,6 +554,15 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/helper-module-transforms@^7.25.9": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" @@ -475,6 +584,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-optimise-call-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" + integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== + dependencies: + "@babel/types" "^7.25.9" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" @@ -490,6 +606,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== +"@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + "@babel/helper-regex@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" @@ -516,6 +637,15 @@ "@babel/helper-wrap-function" "^7.13.0" "@babel/types" "^7.13.0" +"@babel/helper-remap-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" + integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-wrap-function" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/helper-replace-supers@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" @@ -546,6 +676,15 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/helper-replace-supers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz#ba447224798c3da3f8713fc272b145e33da6a5c5" + integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/helper-simple-access@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" @@ -568,6 +707,14 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-simple-access@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz#6d51783299884a2c74618d6ef0f86820ec2e7739" + integrity sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" @@ -582,6 +729,14 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" + integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" @@ -603,6 +758,11 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" @@ -618,6 +778,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" @@ -628,6 +793,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + "@babel/helper-wrap-function@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" @@ -648,6 +818,15 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" +"@babel/helper-wrap-function@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" + integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== + dependencies: + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helpers@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" @@ -717,11 +896,40 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.6.tgz#d85cc68ca3cac84eae384c06f032921f5227f4b2" integrity sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ== +"@babel/parser@^7.25.9", "@babel/parser@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" + integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== + dependencies: + "@babel/types" "^7.26.0" + "@babel/parser@^7.3.4": version "7.11.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.3.tgz#9e1eae46738bcd08e23e867bab43e7b95299a8f9" integrity sha512-REo8xv7+sDxkKvoxEywIdsNFiZLybwdI7hcT5uEPyQrSMB4YQ973BfC9OOrD/81MaIjh6UxdulIQXkjmiH3PcA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" + integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" + integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" + integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" @@ -731,6 +939,23 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-proposal-optional-chaining" "^7.13.12" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" + integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" + integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/plugin-proposal-async-generator-functions@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" @@ -765,6 +990,14 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-class-properties@^7.16.5": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-proposal-decorators@^7.10.5", "@babel/plugin-proposal-decorators@^7.3.0": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.5.tgz#42898bba478bc4b1ae242a703a953a7ad350ffb4" @@ -949,6 +1182,29 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-private-methods@^7.16.5": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-proposal-private-property-in-object@^7.16.5": + version "7.21.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" + integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" @@ -1014,6 +1270,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-import-assertions@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" + integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-import-attributes@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -1063,6 +1333,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-top-level-await@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" @@ -1091,6 +1368,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-arrow-functions@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" @@ -1105,6 +1390,22 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-transform-arrow-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" + integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-async-generator-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" + integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/plugin-transform-async-to-generator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" @@ -1123,6 +1424,15 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-remap-async-to-generator" "^7.13.0" +"@babel/plugin-transform-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" + integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/plugin-transform-block-scoped-functions@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" @@ -1137,6 +1447,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-block-scoped-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz#5700691dbd7abb93de300ca7be94203764fce458" + integrity sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-block-scoping@^7.10.4", "@babel/plugin-transform-block-scoping@^7.8.3": version "7.11.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" @@ -1151,6 +1468,29 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-block-scoping@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" + integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-class-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" + integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-class-static-block@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" + integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-classes@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" @@ -1178,6 +1518,18 @@ "@babel/helper-split-export-declaration" "^7.12.13" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" + integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/traverse" "^7.25.9" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" @@ -1192,6 +1544,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-transform-computed-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" + integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/plugin-transform-destructuring@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" @@ -1206,6 +1566,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-transform-destructuring@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" + integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" @@ -1222,6 +1589,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-dotall-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" + integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-duplicate-keys@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" @@ -1236,6 +1611,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-duplicate-keys@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" + integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" + integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-dynamic-import@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" + integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-exponentiation-operator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" @@ -1252,6 +1649,21 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-exponentiation-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz#ece47b70d236c1d99c263a1e22b62dc20a4c8b0f" + integrity sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-export-namespace-from@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" + integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-for-of@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" @@ -1266,6 +1678,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-transform-for-of@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz#4bdc7d42a213397905d89f02350c5267866d5755" + integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-function-name@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" @@ -1282,6 +1702,22 @@ "@babel/helper-function-name" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-function-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" + integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== + dependencies: + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/plugin-transform-json-strings@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" + integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-literals@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" @@ -1296,6 +1732,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" + integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-logical-assignment-operators@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" + integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-member-expression-literals@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" @@ -1310,6 +1760,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-member-expression-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" + integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-modules-amd@^7.0.0", "@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.10.5": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" @@ -1337,6 +1794,14 @@ "@babel/helper-plugin-utils" "^7.13.0" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-amd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" + integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== + dependencies: + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-modules-commonjs@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" @@ -1357,6 +1822,15 @@ "@babel/helper-simple-access" "^7.12.13" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz#d165c8c569a080baf5467bda88df6425fc060686" + integrity sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg== + dependencies: + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-simple-access" "^7.25.9" + "@babel/plugin-transform-modules-systemjs@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" @@ -1378,6 +1852,16 @@ "@babel/helper-validator-identifier" "^7.12.11" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-systemjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" + integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== + dependencies: + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/plugin-transform-modules-umd@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" @@ -1394,6 +1878,14 @@ "@babel/helper-module-transforms" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-transform-modules-umd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" + integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== + dependencies: + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" @@ -1408,6 +1900,14 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.12.13" +"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" + integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-new-target@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" @@ -1422,6 +1922,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-new-target@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" + integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949" + integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-numeric-separator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" + integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-object-assign@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.10.4.tgz#f7c8f54ce8052ccd8b9da9b3358848423221c338" @@ -1429,6 +1950,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-object-rest-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" + integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== + dependencies: + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/plugin-transform-object-super@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" @@ -1445,6 +1975,29 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/helper-replace-supers" "^7.12.13" +"@babel/plugin-transform-object-super@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" + integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + +"@babel/plugin-transform-optional-catch-binding@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" + integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" + integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-parameters@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" @@ -1460,6 +2013,30 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-transform-parameters@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" + integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-private-methods@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" + integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-private-property-in-object@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" + integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-property-literals@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" @@ -1474,6 +2051,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-property-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" + integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-regenerator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" @@ -1488,6 +2072,22 @@ dependencies: regenerator-transform "^0.14.2" +"@babel/plugin-transform-regenerator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" + integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-regexp-modifiers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" + integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-reserved-words@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" @@ -1502,6 +2102,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-reserved-words@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" + integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-runtime@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.0.tgz#e27f78eb36f19448636e05c33c90fd9ad9b8bccf" @@ -1548,6 +2155,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-shorthand-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" + integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-spread@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" @@ -1564,6 +2178,14 @@ "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" +"@babel/plugin-transform-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" + integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-sticky-regex@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" @@ -1579,6 +2201,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-sticky-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" + integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-template-literals@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" @@ -1594,6 +2223,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-transform-template-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" + integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-typeof-symbol@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" @@ -1608,6 +2244,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-typeof-symbol@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz#224ba48a92869ddbf81f9b4a5f1204bbf5a2bc4b" + integrity sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-typescript@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb" @@ -1666,6 +2309,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-unicode-escapes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" + integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-unicode-property-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" + integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-unicode-regex@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" @@ -1682,6 +2340,22 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-transform-unicode-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" + integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-unicode-sets-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" + integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/polyfill@^7.0.0", "@babel/polyfill@^7.10.4": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.11.5.tgz#df550b2ec53abbc2ed599367ec59e64c7a707bb5" @@ -1921,6 +2595,90 @@ core-js-compat "^3.9.0" semver "^6.3.0" +"@babel/preset-env@^7.16.5": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.0.tgz#30e5c6bc1bcc54865bff0c5a30f6d4ccdc7fa8b1" + integrity sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw== + dependencies: + "@babel/compat-data" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions" "^7.26.0" + "@babel/plugin-syntax-import-attributes" "^7.26.0" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.25.9" + "@babel/plugin-transform-async-generator-functions" "^7.25.9" + "@babel/plugin-transform-async-to-generator" "^7.25.9" + "@babel/plugin-transform-block-scoped-functions" "^7.25.9" + "@babel/plugin-transform-block-scoping" "^7.25.9" + "@babel/plugin-transform-class-properties" "^7.25.9" + "@babel/plugin-transform-class-static-block" "^7.26.0" + "@babel/plugin-transform-classes" "^7.25.9" + "@babel/plugin-transform-computed-properties" "^7.25.9" + "@babel/plugin-transform-destructuring" "^7.25.9" + "@babel/plugin-transform-dotall-regex" "^7.25.9" + "@babel/plugin-transform-duplicate-keys" "^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-dynamic-import" "^7.25.9" + "@babel/plugin-transform-exponentiation-operator" "^7.25.9" + "@babel/plugin-transform-export-namespace-from" "^7.25.9" + "@babel/plugin-transform-for-of" "^7.25.9" + "@babel/plugin-transform-function-name" "^7.25.9" + "@babel/plugin-transform-json-strings" "^7.25.9" + "@babel/plugin-transform-literals" "^7.25.9" + "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" + "@babel/plugin-transform-member-expression-literals" "^7.25.9" + "@babel/plugin-transform-modules-amd" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-modules-systemjs" "^7.25.9" + "@babel/plugin-transform-modules-umd" "^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-new-target" "^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9" + "@babel/plugin-transform-numeric-separator" "^7.25.9" + "@babel/plugin-transform-object-rest-spread" "^7.25.9" + "@babel/plugin-transform-object-super" "^7.25.9" + "@babel/plugin-transform-optional-catch-binding" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/plugin-transform-private-methods" "^7.25.9" + "@babel/plugin-transform-private-property-in-object" "^7.25.9" + "@babel/plugin-transform-property-literals" "^7.25.9" + "@babel/plugin-transform-regenerator" "^7.25.9" + "@babel/plugin-transform-regexp-modifiers" "^7.26.0" + "@babel/plugin-transform-reserved-words" "^7.25.9" + "@babel/plugin-transform-shorthand-properties" "^7.25.9" + "@babel/plugin-transform-spread" "^7.25.9" + "@babel/plugin-transform-sticky-regex" "^7.25.9" + "@babel/plugin-transform-template-literals" "^7.25.9" + "@babel/plugin-transform-typeof-symbol" "^7.25.9" + "@babel/plugin-transform-unicode-escapes" "^7.25.9" + "@babel/plugin-transform-unicode-property-regex" "^7.25.9" + "@babel/plugin-transform-unicode-regex" "^7.25.9" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.6" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.38.1" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + "@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" @@ -1980,6 +2738,15 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/template@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/traverse@^7.1.6", "@babel/traverse@^7.2.4", "@babel/traverse@^7.3.4": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" @@ -2040,6 +2807,19 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.1.6", "@babel/types@^7.3.2", "@babel/types@^7.3.4": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" @@ -2075,6 +2855,14 @@ "@babel/helper-validator-identifier" "^7.14.5" to-fast-properties "^2.0.0" +"@babel/types@^7.25.9", "@babel/types@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" + integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -2488,6 +3276,38 @@ resolved "https://registry.yarnpkg.com/@handlebars/parser/-/parser-1.1.0.tgz#d6dbc7574774b238114582410e8fee0dc3532bdf" integrity sha512-rR7tJoSwJ2eooOpYGxGGW95sLq6GXUaS1UtWvN7pei6n2/okYvCGld9vsUTvkl2migxbkszsycwtMf/GEc1k1A== +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -2509,20 +3329,6 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@rancher/ember-api-store@~4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@rancher/ember-api-store/-/ember-api-store-4.0.0.tgz#a629179a2f39647741fd116aa8fd39f97d8b136e" - integrity sha512-J+Yik49szqkIg4xlXg6mLp8+1POhFjwJMLNQOV+s/eeskbd396p6aOiDQDAQi7YqZ2/KpmVec6nXjqZXLz4uvQ== - dependencies: - babel-eslint "^10.1.0" - broccoli-file-creator "^2.1.1" - ember-auto-import "^1.11.3" - ember-cli-babel "^7.23.0" - ember-cookies "^0.5.2" - eslint "^7.17.0" - node-fetch "^2.3.0" - set-cookie-parser "^2.4.6" - "@simple-dom/interface@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@simple-dom/interface/-/interface-1.4.0.tgz#e8feea579232017f89b0138e2726facda6fbb71f" @@ -3755,13 +4561,6 @@ babel-plugin-ember-modules-api-polyfill@^2.12.0, babel-plugin-ember-modules-api- dependencies: ember-rfc176-data "^0.3.13" -babel-plugin-ember-modules-api-polyfill@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-2.8.0.tgz#70244800f750bf1c9f380910c1b2eed1db80ab4a" - integrity sha512-3dlBH92qx8so2pRoks73+gwnuX97d0ajirOr96GwTZMnZxFzVR02c/PQbKWBcxpPqoL8CJSE2onuWM8PWezhOQ== - dependencies: - ember-rfc176-data "^0.3.8" - babel-plugin-ember-modules-api-polyfill@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-3.1.1.tgz#c6e9ede43b64c4e36512f260e42e829b071d9b4f" @@ -3836,6 +4635,15 @@ babel-plugin-polyfill-corejs2@^0.1.4: "@babel/helper-define-polyfill-provider" "^0.1.5" semver "^6.1.1" +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.2" + semver "^6.3.1" + babel-plugin-polyfill-corejs3@^0.1.3: version "0.1.7" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0" @@ -3844,6 +4652,14 @@ babel-plugin-polyfill-corejs3@^0.1.3: "@babel/helper-define-polyfill-provider" "^0.1.5" core-js-compat "^3.8.1" +babel-plugin-polyfill-corejs3@^0.10.6: + version "0.10.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" + integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + core-js-compat "^3.38.0" + babel-plugin-polyfill-regenerator@^0.1.2: version "0.1.6" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz#0fe06a026fe0faa628ccc8ba3302da0a6ce02f3f" @@ -3851,6 +4667,13 @@ babel-plugin-polyfill-regenerator@^0.1.2: dependencies: "@babel/helper-define-polyfill-provider" "^0.1.5" +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" @@ -4442,7 +5265,7 @@ broccoli-babel-transpiler@^7.1.0: rsvp "^4.8.3" workerpool "^2.3.1" -broccoli-babel-transpiler@^7.1.2, broccoli-babel-transpiler@^7.2.0, broccoli-babel-transpiler@^7.3.0, broccoli-babel-transpiler@^7.7.0: +broccoli-babel-transpiler@^7.2.0, broccoli-babel-transpiler@^7.3.0, broccoli-babel-transpiler@^7.7.0: version "7.7.0" resolved "https://registry.yarnpkg.com/broccoli-babel-transpiler/-/broccoli-babel-transpiler-7.7.0.tgz#271d401e713bfd338d5ef0435d3c4c68f6eddd2a" integrity sha512-U8Cmnv0/AcQKehiIVi6UDzqq3jqhAEbY9CvOW5vdeNRmYhFpK6bXPmVczS/nUz5g4KsPc/FdnC3zbU6yVf4e7w== @@ -5214,7 +6037,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@>=4.16.5, browserslist@^3.2.6, browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.16.6, browserslist@^4.8.5: +browserslist@>=4.16.5, browserslist@^3.2.6, browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.16.6, browserslist@^4.24.0, browserslist@^4.24.2, browserslist@^4.8.5: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== @@ -5961,6 +6784,13 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +core-js-compat@^3.38.0, core-js-compat@^3.38.1: + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.39.0.tgz#b12dccb495f2601dc860bdbe7b4e3ffa8ba63f61" + integrity sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw== + dependencies: + browserslist "^4.24.2" + core-js-compat@^3.6.2: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" @@ -6512,7 +7342,7 @@ ember-assign-helper@^0.3.0: ember-cli-babel "^7.19.0" ember-cli-htmlbars "^4.3.1" -ember-auto-import@^1.10.1, ember-auto-import@^1.11.3: +ember-auto-import@^1.10.1: version "1.11.3" resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.11.3.tgz#6e3384a7fbb163384a34546f2e902cd297b0e683" integrity sha512-ekq/XCvsonESobFU30zjZ0I4XMy2E/2ZILCYWuQ1JdhcCSTYhnXDZcqRW8itUG7kbsPqAHT/XZ1LEZYm3seVwQ== @@ -6750,30 +7580,39 @@ ember-cli-babel@^7.0.0, ember-cli-babel@^7.23.0: semver "^5.5.0" ember-cli-babel@^7.1.0: - version "7.7.3" - resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.7.3.tgz#f94709f6727583d18685ca6773a995877b87b8a0" - integrity sha512-/LWwyKIoSlZQ7k52P+6agC7AhcOBqPJ5C2u27qXHVVxKvCtg6ahNuRk/KmfZmV4zkuw4EjTZxfJE1PzpFyHkXg== + version "7.26.11" + resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.26.11.tgz#50da0fe4dcd99aada499843940fec75076249a9f" + integrity sha512-JJYeYjiz/JTn34q7F5DSOjkkZqy8qwFOOxXfE6pe9yEJqWGu4qErKxlz8I22JoVEQ/aBUO+OcKTpmctvykM9YA== dependencies: - "@babel/core" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.3.4" - "@babel/plugin-proposal-decorators" "^7.3.0" - "@babel/plugin-transform-modules-amd" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.2.0" - "@babel/polyfill" "^7.0.0" - "@babel/preset-env" "^7.0.0" - "@babel/runtime" "^7.2.0" - amd-name-resolver "^1.2.1" - babel-plugin-debug-macros "^0.3.0" - babel-plugin-ember-modules-api-polyfill "^2.8.0" - babel-plugin-module-resolver "^3.1.1" - broccoli-babel-transpiler "^7.1.2" + "@babel/core" "^7.12.0" + "@babel/helper-compilation-targets" "^7.12.0" + "@babel/plugin-proposal-class-properties" "^7.16.5" + "@babel/plugin-proposal-decorators" "^7.13.5" + "@babel/plugin-proposal-private-methods" "^7.16.5" + "@babel/plugin-proposal-private-property-in-object" "^7.16.5" + "@babel/plugin-transform-modules-amd" "^7.13.0" + "@babel/plugin-transform-runtime" "^7.13.9" + "@babel/plugin-transform-typescript" "^7.13.0" + "@babel/polyfill" "^7.11.5" + "@babel/preset-env" "^7.16.5" + "@babel/runtime" "7.12.18" + amd-name-resolver "^1.3.1" + babel-plugin-debug-macros "^0.3.4" + babel-plugin-ember-data-packages-polyfill "^0.1.2" + babel-plugin-ember-modules-api-polyfill "^3.5.0" + babel-plugin-module-resolver "^3.2.0" + broccoli-babel-transpiler "^7.8.0" broccoli-debug "^0.6.4" - broccoli-funnel "^2.0.1" - broccoli-source "^1.1.0" + broccoli-funnel "^2.0.2" + broccoli-source "^2.1.2" + calculate-cache-key-for-tree "^2.0.0" clone "^2.1.2" - ember-cli-babel-plugin-helpers "^1.1.0" - ember-cli-version-checker "^2.1.2" + ember-cli-babel-plugin-helpers "^1.1.1" + ember-cli-version-checker "^4.1.0" ensure-posix-path "^1.0.2" + fixturify-project "^1.10.0" + resolve-package-path "^3.1.0" + rimraf "^3.0.1" semver "^5.5.0" ember-cli-babel@^7.1.2: @@ -7596,11 +8435,6 @@ ember-rfc176-data@^0.3.17: resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.17.tgz#d4fc6c33abd6ef7b3440c107a28e04417b49860a" integrity sha512-EVzTTKqxv9FZbEh6Ktw56YyWRAA0MijKvl7H8C06wVF+8f/cRRz3dXxa4nkwjzyVwx4rzKGuIGq77hxJAQhWWw== -ember-rfc176-data@^0.3.8: - version "0.3.8" - resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.8.tgz#d46bbef9a0d57c803217b258cfd2e90d8e191848" - integrity sha512-SQup3iG7SDLZNuf7nMMx5BC5truO8AYKRi80gApeQ07NsbuXV4LH75i5eOaxF0i8l9+H1tzv34kGe6rEh0C1NQ== - ember-router-generator@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ember-router-generator/-/ember-router-generator-2.0.0.tgz#d04abfed4ba8b42d166477bbce47fccc672dbde0" @@ -10297,6 +11131,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2, jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + jsesc@~0.3.x: version "0.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.3.0.tgz#1bf5ee63b4539fe2e26d0c1e99c240b97a457972" @@ -11412,7 +12251,7 @@ no-case@^3.0.3: lower-case "^2.0.1" tslib "^1.10.0" -node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1: +node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -12072,6 +12911,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" @@ -12501,6 +13345,13 @@ redeyed@~1.0.0: dependencies: esprima "~3.0.0" +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -12513,6 +13364,11 @@ regenerate@^1.2.1, regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" @@ -12549,6 +13405,13 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" @@ -12598,6 +13461,18 @@ regexpu-core@^4.7.0, regexpu-core@^4.7.1: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.1.1.tgz#b469b245594cb2d088ceebc6369dceb8c00becac" + integrity sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.11.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" @@ -12608,6 +13483,11 @@ regjsgen@^0.5.1: resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" @@ -12615,6 +13495,13 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.11.0: + version "0.11.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.11.2.tgz#7404ad42be00226d72bcf1f003f1f441861913d8" + integrity sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA== + dependencies: + jsesc "~3.0.2" + regjsparser@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" @@ -13074,6 +13961,11 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.2.1, semver@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" @@ -14298,6 +15190,11 @@ unicode-canonical-property-names-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" + integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== + unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -14306,16 +15203,34 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" + integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== + unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"