1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-18 07:52:23 +01:00

Merge branch 'dev' for release 4.6.3

This commit is contained in:
Sylvain 2020-10-28 13:39:09 +01:00
commit bdf5642c65
40 changed files with 412 additions and 181 deletions

View File

@ -10,7 +10,8 @@
"Application": true, "Application": true,
"angular": true, "angular": true,
"Fablab": true, "Fablab": true,
"moment": true "moment": true,
"_": true
}, },
"plugins": ["lint-erb"] "plugins": ["lint-erb"]
} }

View File

@ -1,5 +1,18 @@
# Changelog Fab-manager # Changelog Fab-manager
## v4.6.3 2020 October 28
- Enabled Typescript
- Enabled Hot module replacement
- Enlarged privacy policy display and edition zones
- Removed fab-manager email address from the seeds
- Initialize new plans with default prices for machines & spaces
- Display a message when no plans are available
- Fix a bug: in the settings area, boolean switches are always shown as false
- Fix a bug: public cards presenting the plans in the public area, have bogus style
- Fix a bug: theme primary color is ignored on links
- [TODO DEPLOY] `rails fablab:maintenance:rebuild_stylesheet`
## v4.6.2 2020 October 23 ## v4.6.2 2020 October 23
- Add intermediate step version for upgrades: v4.4.6. This will prevent issues with FootprintDebug if a regeneration is needed - Add intermediate step version for upgrades: v4.4.6. This will prevent issues with FootprintDebug if a regeneration is needed

View File

@ -87,7 +87,7 @@ GEM
cldr-plurals-runtime-rb (1.0.1) cldr-plurals-runtime-rb (1.0.1)
coercible (1.0.0) coercible (1.0.0)
descendants_tracker (~> 0.0.1) descendants_tracker (~> 0.0.1)
concurrent-ruby (1.1.6) concurrent-ruby (1.1.7)
connection_pool (2.2.3) connection_pool (2.2.3)
coveralls_reborn (0.18.0) coveralls_reborn (0.18.0)
simplecov (>= 0.18.1, < 0.20.0) simplecov (>= 0.18.1, < 0.20.0)

View File

@ -1,2 +1,4 @@
web: bundle exec rails server puma -p $PORT web: bundle exec rails server puma -p $PORT
worker: bundle exec sidekiq -C ./config/sidekiq.yml worker: bundle exec sidekiq -C ./config/sidekiq.yml
wp-client: bin/webpack-dev-server
wp-server: SERVER_BUNDLE_ONLY=yes bin/webpack --watch

View File

@ -0,0 +1,10 @@
import { IModule } from "angular";
export interface IApplication {
Components: IModule,
Services: IModule,
Controllers: IModule,
Filters: IModule,
Directives: IModule
}

View File

@ -1,22 +0,0 @@
// This is a demonstration of using react components inside an angular.js 1.x app
// TODO remove this
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { react2angular } from 'react2angular';
class MyComponent extends Component {
render () {
return <div>
<p>FooBar: {this.props.fooBar}</p>
<p>Baz: {this.props.baz}</p>
</div>;
}
}
MyComponent.propTypes = {
fooBar: PropTypes.number,
baz: PropTypes.string
};
Application.Components.component('myComponent', react2angular(MyComponent));

View File

@ -0,0 +1,24 @@
// This is a demonstration of using react components inside an angular.js 1.x app
// TODO remove this
import { IApplication } from "./application";
declare var Application: IApplication;
import React from 'react';
import { react2angular } from 'react2angular';
interface MyComponentProps {
fooBar: number,
baz: string
}
const MyComponent: React.FC<MyComponentProps> = ({ fooBar, baz }) => {
return (
<div>
<p>FooBar: {fooBar}</p>
<p>Baz: {baz}</p>
</div>
);
}
Application.Components.component('myComponent', react2angular(MyComponent, ['fooBar', 'baz']));

View File

@ -0,0 +1,4 @@
import Switch from 'react-switch';
import { react2angular } from 'react2angular';
Application.Components.component('switch', react2angular(Switch, ['checked', 'onChange', 'id', 'className']));

View File

@ -6,8 +6,6 @@ Application.Directives.directive('booleanSetting', ['Setting', 'growl', '_t',
name: '@', name: '@',
label: '@', label: '@',
settings: '=', settings: '=',
yesLabel: '@',
noLabel: '@',
classes: '@', classes: '@',
onBeforeSave: '=' onBeforeSave: '='
}, },
@ -19,9 +17,28 @@ Application.Directives.directive('booleanSetting', ['Setting', 'growl', '_t',
value: ($scope.settings[$scope.name] === 'true') value: ($scope.settings[$scope.name] === 'true')
}; };
// default values for the switch labels // ID of the html input
$scope.yesLabel = $scope.yesLabel || 'app.shared.buttons.yes'; $scope.id = `setting-${$scope.setting.name}`;
$scope.noLabel = $scope.noLabel || 'app.shared.buttons.no';
/**
* This will update the value when the user toggles the switch button
* @param checked {Boolean}
* @param event {string}
* @param id {string}
*/
$scope.toggleSetting = (checked, event, id) => {
setTimeout(() => {
$scope.setting.value = checked;
$scope.$apply();
}, 50);
};
/**
* This will force the component to update, and the child react component to re-render
*/
$scope.refreshComponent = () => {
$scope.$apply();
};
/** /**
* Callback to save the setting value to the database * Callback to save the setting value to the database
@ -75,14 +92,14 @@ Application.Directives.directive('booleanSetting', ['Setting', 'growl', '_t',
console.log(error); console.log(error);
} }
); );
} };
/** /**
* Reset the value of the setting to its original state (when the component loads) * Reset the value of the setting to its original state (when the component loads)
*/ */
const resetValue = function () { const resetValue = function () {
$scope.setting.value = $scope.settings[$scope.name] === 'true'; $scope.setting.value = $scope.settings[$scope.name] === 'true';
} };
} }
}); });
} }

View File

@ -297,12 +297,9 @@
display: inline-block; display: inline-block;
background: white; background: white;
@include border-radius(50%); @include border-radius(50%, 50%, 50%, 50%);
border: 3px solid; border: 3px solid;
// $yellow;
} }
.price { .price {
@ -313,7 +310,7 @@
width: 84px; width: 84px;
background-color: black; background-color: black;
@include border-radius(50%); @include border-radius(50%, 50%, 50%, 50%);
.amount { .amount {
padding-top: 16px; padding-top: 16px;
@ -343,18 +340,13 @@
background-color: white; background-color: white;
padding-left: 30px; padding-left: 30px;
padding-right: 30px; padding-right: 30px;
//&:hover { background-color: $yellow; }
} }
} }
} }
.well { .well {
&.well-warning { &.well-warning {
//border-color: #ffdc4e; @include border-radius(3px, 3px, 3px, 3px);
//background-color: #ffdc4e;
@include border-radius(3px);
padding: 5px 10px; padding: 5px 10px;
} }
@ -449,8 +441,6 @@
.block-link { .block-link {
cursor: pointer; cursor: pointer;
//&:hover { background-color: $yellow; }
} }
.form-control .ui-select-choices, .form-control .ui-select-match { .form-control .ui-select-choices, .form-control .ui-select-match {
@ -460,7 +450,7 @@
.about-link { .about-link {
.label { .label {
font-size: rem-calc(26); font-size: rem-calc(26);
padding: 0px 10px 0px 11px; padding: 0 10px 0 11px;
vertical-align: bottom; vertical-align: bottom;
&.label-icon { &.label-icon {

View File

@ -11,9 +11,7 @@
label="app.admin.invoices.payment.enable_online_payment" label="app.admin.invoices.payment.enable_online_payment"
classes="m-l" classes="m-l"
on-before-save="requireStripeKeys" on-before-save="requireStripeKeys"
fa-icon="fa-font" fa-icon="fa-font">
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no">
</boolean-setting> </boolean-setting>
</div> </div>
<div class="row m-t" ng-show="allSettings.online_payment_module === 'true'"> <div class="row m-t" ng-show="allSettings.online_payment_module === 'true'">

View File

@ -90,9 +90,7 @@
<boolean-setting name="openlab_default" <boolean-setting name="openlab_default"
settings="allSettings" settings="allSettings"
label="app.admin.projects.settings.default_to_openlab" label="app.admin.projects.settings.default_to_openlab"
classes="m-l" classes="m-l"></boolean-setting>
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no"></boolean-setting>
</div> </div>
</div> </div>
</div> </div>

View File

@ -28,7 +28,7 @@
</div> </div>
<div class="row"> <div class="row about-fablab">
<div class="col-md-4 col-md-offset-1"> <div class="col-md-4 col-md-offset-1">
<div class="text-justify" ng-model="aboutBodySetting.value" medium-editor options='{"placeholder": "{{ "app.admin.settings.input_the_main_content" | translate }}", <div class="text-justify" ng-model="aboutBodySetting.value" medium-editor options='{"placeholder": "{{ "app.admin.settings.input_the_main_content" | translate }}",
"buttons": ["bold", "italic", "anchor", "header1", "header2" ] "buttons": ["bold", "italic", "anchor", "header1", "header2" ]

View File

@ -1,12 +1,5 @@
<div class="form-group {{classes}}"> <div class="form-group {{classes}}">
<label for="setting-{{setting.name}}" class="control-label m-r" translate>{{ label }}</label> <label for="{{id}}" class="control-label m-r" translate ng-click="refreshComponent">{{ label }}</label>
<input bs-switch <switch checked="setting.value" id="id" on-change="toggleSetting" class-name="'v-middle'" ng-if="setting"></switch>
ng-model="setting.value"
id="setting-{{setting.name}}"
type="checkbox"
class="form-control"
switch-on-text="{{ yesLabel | translate }}"
switch-off-text="{{ noLabel | translate }}"
switch-animate="true"/>
<button name="button" class="btn btn-warning m-l" ng-click="save(setting)" translate>{{ 'app.shared.buttons.save' }}</button> <button name="button" class="btn btn-warning m-l" ng-click="save(setting)" translate>{{ 'app.shared.buttons.save' }}</button>
</div> </div>

View File

@ -396,9 +396,7 @@
<div class="col-md-10 col-md-offset-1"> <div class="col-md-10 col-md-offset-1">
<boolean-setting name="phone_required" <boolean-setting name="phone_required"
settings="allSettings" settings="allSettings"
label="app.admin.settings.phone_is_required" label="app.admin.settings.phone_is_required">
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no">
</boolean-setting> </boolean-setting>
</div> </div>
</div> </div>
@ -430,9 +428,7 @@
<div class="col-md-10 col-md-offset-1"> <div class="col-md-10 col-md-offset-1">
<boolean-setting name="confirmation_required" <boolean-setting name="confirmation_required"
settings="allSettings" settings="allSettings"
label="app.admin.settings.confirmation_is_required" label="app.admin.settings.confirmation_is_required">
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no">
</boolean-setting> </boolean-setting>
</div> </div>
</div> </div>
@ -451,9 +447,7 @@
<boolean-setting name="spaces_module" <boolean-setting name="spaces_module"
settings="allSettings" settings="allSettings"
label="app.admin.settings.enable_spaces" label="app.admin.settings.enable_spaces"
classes="m-l" classes="m-l"></boolean-setting>
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no"></boolean-setting>
</div> </div>
<div class="row"> <div class="row">
<h3 class="m-l" translate>{{ 'app.admin.settings.plans' }}</h3> <h3 class="m-l" translate>{{ 'app.admin.settings.plans' }}</h3>
@ -461,9 +455,7 @@
<boolean-setting name="plans_module" <boolean-setting name="plans_module"
settings="allSettings" settings="allSettings"
label="app.admin.settings.enable_plans" label="app.admin.settings.enable_plans"
classes="m-l" classes="m-l"></boolean-setting>
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no"></boolean-setting>
</div> </div>
<div class="row"> <div class="row">
<h3 class="m-l" translate>{{ 'app.admin.settings.invoicing' }}</h3> <h3 class="m-l" translate>{{ 'app.admin.settings.invoicing' }}</h3>
@ -471,9 +463,7 @@
<boolean-setting name="invoicing_module" <boolean-setting name="invoicing_module"
settings="allSettings" settings="allSettings"
label="app.admin.settings.enable_invoicing" label="app.admin.settings.enable_invoicing"
classes="m-l" classes="m-l"></boolean-setting>
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no"></boolean-setting>
</div> </div>
<div class="row"> <div class="row">
<h3 class="m-l" translate>{{ 'app.admin.settings.general.wallet' }}</h3> <h3 class="m-l" translate>{{ 'app.admin.settings.general.wallet' }}</h3>
@ -481,9 +471,7 @@
<boolean-setting name="wallet_module" <boolean-setting name="wallet_module"
settings="allSettings" settings="allSettings"
label="app.admin.settings.general.enable_wallet" label="app.admin.settings.general.enable_wallet"
classes="m-l" classes="m-l"></boolean-setting>
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no"></boolean-setting>
</div> </div>
<div class="row"> <div class="row">
<h3 class="m-l" translate>{{ 'app.admin.settings.general.statistics' }}</h3> <h3 class="m-l" translate>{{ 'app.admin.settings.general.statistics' }}</h3>
@ -491,9 +479,7 @@
<boolean-setting name="statistics_module" <boolean-setting name="statistics_module"
settings="allSettings" settings="allSettings"
label="app.admin.settings.general.enable_statistics" label="app.admin.settings.general.enable_statistics"
classes="m-l" classes="m-l"></boolean-setting>
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no"></boolean-setting>
</div> </div>
</div> </div>
</div> </div>

View File

@ -4,8 +4,8 @@
</div> </div>
<div class="panel-body"> <div class="panel-body">
<div class="row"> <div class="row about-fablab">
<div class="col-md-6 col-md-offset-1"> <div class="col-md-8">
<select class="form-control m-b history-select" ng-options="d.id as d.name for d in privacyDraftsHistory" ng-model="privacyPolicy.version" ng-change="handlePolicyRevisionChange()"> <select class="form-control m-b history-select" ng-options="d.id as d.name for d in privacyDraftsHistory" ng-model="privacyPolicy.version" ng-change="handlePolicyRevisionChange()">
<option value="" translate>{{ 'app.admin.settings.privacy.current_policy' }}</option> <option value="" translate>{{ 'app.admin.settings.privacy.current_policy' }}</option>
</select> </select>
@ -17,7 +17,7 @@
<span class="help-block text-info text-xs"><i class="fa fa-lightbulb-o"></i> {{ 'app.admin.settings.drag_and_drop_to_insert_images' | translate }}</span> <span class="help-block text-info text-xs"><i class="fa fa-lightbulb-o"></i> {{ 'app.admin.settings.drag_and_drop_to_insert_images' | translate }}</span>
<button name="button" class="btn btn-warning" ng-click="savePrivacyPolicy()" translate>{{ 'app.shared.buttons.save' }}</button> <button name="button" class="btn btn-warning" ng-click="savePrivacyPolicy()" translate>{{ 'app.shared.buttons.save' }}</button>
</div> </div>
<div class="col-md-3 col-md-offset-1"> <div class="col-md-3">
<div ng-model="privacyDpoSetting.value" medium-editor options='{"placeholder": "{{ "app.admin.settings.privacy.input_the_dpo" | translate }}", <div ng-model="privacyDpoSetting.value" medium-editor options='{"placeholder": "{{ "app.admin.settings.privacy.input_the_dpo" | translate }}",
"buttons": ["bold", "italic", "anchor", "header1", "header2" ] "buttons": ["bold", "italic", "anchor", "header1", "header2" ]
}'> }'>
@ -41,13 +41,11 @@
<boolean-setting <boolean-setting
name="fab_analytics" name="fab_analytics"
settings="allSettings" settings="allSettings"
label="app.admin.settings.fab_analytics" label="app.admin.settings.fab_analytics">
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no">
</boolean-setting> </boolean-setting>
<p> <p>
<span translate>{{ 'app.admin.settings.privacy.about_analytics' }}</span> <span translate>{{ 'app.admin.settings.privacy.about_analytics' }}</span>
<a ng-click="analyticsModal()" class="pointer" translate>{{ 'app.admin.settings.privacy.read_more' }}</a> <a ng-click="analyticsModal()" class="pointer collected-infos" translate>{{ 'app.admin.settings.privacy.read_more' }}</a>
</p> </p>
</div> </div>
</div> </div>

View File

@ -48,9 +48,7 @@
<boolean-setting name="booking_move_enable" <boolean-setting name="booking_move_enable"
settings="allSettings" settings="allSettings"
label="app.admin.settings.reservations_shifting" label="app.admin.settings.reservations_shifting"
classes="m-l" classes="m-l">
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no">
</boolean-setting> </boolean-setting>
</div> </div>
<div class="col-md-6" ng-show="allSettings.booking_move_enable === 'true'"> <div class="col-md-6" ng-show="allSettings.booking_move_enable === 'true'">
@ -70,9 +68,7 @@
<boolean-setting name="booking_cancel_enable" <boolean-setting name="booking_cancel_enable"
settings="allSettings" settings="allSettings"
label="app.admin.settings.reservations_cancelling" label="app.admin.settings.reservations_cancelling"
classes="m-l" classes="m-l">
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no">
</boolean-setting> </boolean-setting>
</div> </div>
<div class="col-md-6" ng-show="allSettings.booking_cancel_enable === 'true'"> <div class="col-md-6" ng-show="allSettings.booking_cancel_enable === 'true'">
@ -92,9 +88,7 @@
<boolean-setting name="book_overlapping_slots" <boolean-setting name="book_overlapping_slots"
settings="allSettings" settings="allSettings"
label="app.admin.settings.allow_booking" label="app.admin.settings.allow_booking"
classes="m-l" classes="m-l">
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no">
</boolean-setting> </boolean-setting>
</div> </div>
<div class="section-separator"></div> <div class="section-separator"></div>
@ -124,9 +118,7 @@
<boolean-setting name="reminder_enable" <boolean-setting name="reminder_enable"
settings="allSettings" settings="allSettings"
label="app.admin.settings.reservations_reminders" label="app.admin.settings.reservations_reminders"
classes="m-l" classes="m-l">
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no">
</boolean-setting> </boolean-setting>
</div> </div>
<div class="row" ng-show="allSettings.reminder_enable === 'true'"> <div class="row" ng-show="allSettings.reminder_enable === 'true'">
@ -154,9 +146,7 @@
<boolean-setting name="display_name_enable" <boolean-setting name="display_name_enable"
settings="allSettings" settings="allSettings"
label="app.admin.settings.display_name" label="app.admin.settings.display_name"
classes="m-l" classes="m-l">
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no">
</boolean-setting> </boolean-setting>
</div> </div>
<div class="row"> <div class="row">
@ -165,9 +155,7 @@
<boolean-setting name="events_in_calendar" <boolean-setting name="events_in_calendar"
settings="allSettings" settings="allSettings"
label="app.admin.settings.show_event" label="app.admin.settings.show_event"
classes="m-l" classes="m-l"></boolean-setting>
yes-label="app.shared.buttons.yes"
no-label="app.shared.buttons.no"></boolean-setting>
</div> </div>
</div> </div>
</div> </div>

View File

@ -17,8 +17,9 @@
<div class="row no-gutter"> <div class="row no-gutter">
<div class="col-sm-12 col-md-9 b-r"> <div class="col-sm-12 col-md-9 b-r">
<div class="row m-t m-b padder" ng-repeat="plansGroup in plansClassifiedByGroup | groupFilter:ctrl.member" ng-show="plansGroup.actives > 0"> <div class="row m-t m-b padder" ng-repeat="plansGroup in plansClassifiedByGroup | groupFilter:ctrl.member">
<div ng-show="plansGroup.actives > 0">
<div class="col-md-12 text-center"> <div class="col-md-12 text-center">
<h2 class="text-u-c">{{plansGroup.name}}</h2> <h2 class="text-u-c">{{plansGroup.name}}</h2>
</div> </div>
@ -62,7 +63,6 @@
<br ng-show="!plan.plan_file_url"> <!-- TODO Refacto with CSS --> <br ng-show="!plan.plan_file_url"> <!-- TODO Refacto with CSS -->
<a ng-href="{{ plan.plan_file_url }}" ng-show="plan.plan_file_url" target="_blank" translate>{{ 'app.public.plans.more_information' }}</a> <a ng-href="{{ plan.plan_file_url }}" ng-show="plan.plan_file_url" target="_blank" translate>{{ 'app.public.plans.more_information' }}</a>
</div> </div>
</div> </div>
@ -73,6 +73,10 @@
</div> </div>
</div> </div>
</div>
<div ng-show="plansGroup.actives === 0 && ctrl.member" class="m-lg" translate>
{{ 'app.public.plans.no_plans' }}
</div>
</div> </div>

View File

@ -23,7 +23,7 @@
<section class="m-lg"> <section class="m-lg">
<div class="row m-b-md"> <div class="row m-b-md">
<div class="col-md-12 m-b"> <div class="col-md-12 m-b">
<a href="javascript:void(0);" class="text-sm pull-right" name="button" ng-click="resetFiltersAndTriggerSearch()" ng-show="!openlab.searchOverWholeNetwork"><i class="fa fa-refresh"></i> {{ 'app.public.projects_list.reset_all_filters' | translate }}</a> <a href="javascript:void(0);" class="text-sm pull-right reinit-filters" name="button" ng-click="resetFiltersAndTriggerSearch()" ng-show="!openlab.searchOverWholeNetwork"><i class="fa fa-refresh"></i> {{ 'app.public.projects_list.reset_all_filters' | translate }}</a>
<span ng-if="openlab.projectsActive" uib-tooltip="{{ 'app.public.projects_list.tooltip_openlab_projects_switch' | translate }}" tooltip-trigger="mouseenter"> <span ng-if="openlab.projectsActive" uib-tooltip="{{ 'app.public.projects_list.tooltip_openlab_projects_switch' | translate }}" tooltip-trigger="mouseenter">
<label for="searchOverWholeNetwork" class="control-label m-r text-sm" translate>{{ 'app.public.projects_list.search_over_the_whole_network' }}</label> <label for="searchOverWholeNetwork" class="control-label m-r text-sm" translate>{{ 'app.public.projects_list.search_over_the_whole_network' }}</label>

View File

@ -77,7 +77,7 @@
<fab-user-avatar ng-model="project.author.user_avatar" avatar-class="thumb-50"></fab-user-avatar> <fab-user-avatar ng-model="project.author.user_avatar" avatar-class="thumb-50"></fab-user-avatar>
</div> </div>
<div> <div>
<a ng-show="project.author_id" class="text-sm font-sbold" ui-sref="app.logged.members_show({id: project.author.slug})"> <a ng-show="project.author_id" class="text-sm font-sbold project-author" ui-sref="app.logged.members_show({id: project.author.slug})">
<i> {{ 'app.public.projects_show.by_name' | translate:{NAME:project.author.first_name} }}</i> <i> {{ 'app.public.projects_show.by_name' | translate:{NAME:project.author.first_name} }}</i>
</a> </a>
<span ng-hide="project.author_id" class="text-sm font-sbold text-gray" translate>{{ 'app.public.projects_show.deleted_user' }}</span> <span ng-hide="project.author_id" class="text-sm font-sbold text-gray" translate>{{ 'app.public.projects_show.deleted_user' }}</span>

View File

@ -8,7 +8,7 @@
</div> </div>
<div class="row padder"> <div class="row padder">
<div class="col-sm-offset-1 col-md-offset-3 col-sm-7 col-md-5 col-lg-4 m-b-lg"> <div class="col-md-offset-1 col-md-8 m-b-lg">
<div class="last-update text-gray"> <div class="last-update text-gray">
<span translate>{{ 'app.public.privacy.last_update' }}</span> <span translate>{{ 'app.public.privacy.last_update' }}</span>
<span>{{ privacyBody.last_update | amDateFormat:'LL' }}</span> <span>{{ privacyBody.last_update | amDateFormat:'LL' }}</span>
@ -16,7 +16,7 @@
<span ng-bind-html="privacyBody.value"></span> <span ng-bind-html="privacyBody.value"></span>
</div> </div>
<div class="col-sm-offset-0 col-md-offset-0 col-lg-offset-1 col-sm-4 col-md-4" ng-show="privacyDpo.value"> <div class="col-md-3" ng-show="privacyDpo.value">
<h2 class="about-title-aside text-u-c" translate>{{ 'app.public.privacy.dpo' }}</h2> <h2 class="about-title-aside text-u-c" translate>{{ 'app.public.privacy.dpo' }}</h2>
<span ng-bind-html="privacyDpo.value"></span> <span ng-bind-html="privacyDpo.value"></span>
</div> </div>

View File

@ -56,13 +56,15 @@ class Plan < ApplicationRecord
def create_machines_prices def create_machines_prices
Machine.all.each do |machine| Machine.all.each do |machine|
Price.create(priceable: machine, plan: self, group_id: group_id, amount: 0) default_price = Price.find_by(priceable: machine, plan: nil, group_id: group_id)&.amount || 0
Price.create(priceable: machine, plan: self, group_id: group_id, amount: default_price)
end end
end end
def create_spaces_prices def create_spaces_prices
Space.all.each do |space| Space.all.each do |space|
Price.create(priceable: space, plan: self, group_id: group_id, amount: 0) default_price = Price.find_by(priceable: space, plan: nil, group_id: group_id)&.amount || 0
Price.create(priceable: space, plan: self, group_id: group_id, amount: default_price)
end end
end end

View File

@ -93,8 +93,16 @@ class Stylesheet < ApplicationRecord
.btn-link { color: #{Stylesheet.primary} !important; } .btn-link { color: #{Stylesheet.primary} !important; }
.btn-link:hover { color: #{Stylesheet.primary_dark} !important; } .btn-link:hover { color: #{Stylesheet.primary_dark} !important; }
a { color: #{Stylesheet.primary}; } a { color: #{Stylesheet.primary}; }
.about-page-link a.about-link, .user-profile-nav b.caret { color: #{Stylesheet.primary}; }
.app-generator a, .home-events h4 a, a.reinit-filters, .pricing-panel a, .calendar-url a, .article a, a.project-author, a.dsq-brlink, .alert a, .about-fablab a, a.collected-infos { color: #{Stylesheet.primary}; }
.app-generator a:hover, .home-events h4 a:hover, a.reinit-filters:hover, .pricing-panel a:hover, .calendar-url a:hover, .article a:hover, a.project-author:hover, a.dsq-brlink:hover, .widget .widget-content a:hover, .alert a:hover, .about-fablab a:hover, a.collected-infos:hover { color: #{Stylesheet.primary_dark}; }
.btn.btn-default.reserve-button, .btn.btn-default.show-button, .btn.btn-default.red { color: #{Stylesheet.primary} !important; }
.nav.nav-tabs .uib-tab.nav-item:not(.active) a { color: #{Stylesheet.primary}; }
.article h2, .article h3, .article h5 { color: #{Stylesheet.primary} !important; }
table.table thead tr th a, table.table tbody tr td a:not(.btn) { color: #{Stylesheet.primary}; }
table.table thead tr th a:hover, table.table tbody tr td a:not(.btn):hover { color: #{Stylesheet.primary_dark}; }
a:hover, a:focus { color: #{Stylesheet.primary_dark}; } a:hover, a:focus { color: #{Stylesheet.primary_dark}; }
h2, h3, h5 { color: #{Stylesheet.primary}; } h2, h3, h3.red, h5 { color: #{Stylesheet.primary} !important; }
h5:after { background-color: #{Stylesheet.primary}; } h5:after { background-color: #{Stylesheet.primary}; }
.bg-yellow { background-color: #{Stylesheet.secondary} !important; color: #{Stylesheet.secondary_text_color}; } .bg-yellow { background-color: #{Stylesheet.secondary} !important; color: #{Stylesheet.secondary_text_color}; }
.event:hover { background-color: #{Stylesheet.primary}; color: #{Stylesheet.secondary_text_color}; } .event:hover { background-color: #{Stylesheet.primary}; color: #{Stylesheet.secondary_text_color}; }

View File

@ -1,9 +1,10 @@
module.exports = function(api) { module.exports = function (api) {
var validEnv = ['development', 'test', 'production'] const validEnv = ['development', 'test', 'production'];
var currentEnv = api.env() const currentEnv = api.env();
var isDevelopmentEnv = api.env('development') const isDevelopmentEnv = api.env('development');
var isProductionEnv = api.env('production') const isProductionEnv = api.env('production');
var isTestEnv = api.env('test') const isTestEnv = api.env('test');
const isWebpackDevServer = process.env.WEBPACK_DEV_SERVER;
if (!validEnv.includes(currentEnv)) { if (!validEnv.includes(currentEnv)) {
throw new Error( throw new Error(
@ -12,7 +13,7 @@ module.exports = function(api) {
'"test", and "production". Instead, received: ' + '"test", and "production". Instead, received: ' +
JSON.stringify(currentEnv) + JSON.stringify(currentEnv) +
'.' '.'
) );
} }
return { return {
@ -43,9 +44,11 @@ module.exports = function(api) {
development: isDevelopmentEnv || isTestEnv, development: isDevelopmentEnv || isTestEnv,
useBuiltIns: true useBuiltIns: true
} }
] ],
['@babel/preset-typescript', { allExtensions: true, isTSX: true }]
].filter(Boolean), ].filter(Boolean),
plugins: [ plugins: [
isWebpackDevServer && 'react-refresh/babel',
'babel-plugin-macros', 'babel-plugin-macros',
'@babel/plugin-syntax-dynamic-import', '@babel/plugin-syntax-dynamic-import',
isTestEnv && 'babel-plugin-dynamic-import-node', isTestEnv && 'babel-plugin-dynamic-import-node',
@ -83,5 +86,5 @@ module.exports = function(api) {
} }
] ]
].filter(Boolean) ].filter(Boolean)
} };
} };

View File

@ -1161,7 +1161,7 @@ en:
privacy: privacy:
title: "Privacy" title: "Privacy"
privacy_policy: "Privacy policy" privacy_policy: "Privacy policy"
input_the_dpo: "Input the contact of the Data Protection Officer" input_the_dpo: "Data Protection Officer"
current_policy: "Current policy" current_policy: "Current policy"
draft_from_USER_DATE: "Draft, saved by {USER}, on {DATE}" draft_from_USER_DATE: "Draft, saved by {USER}, on {DATE}"
save_or_publish: "Save or publish?" save_or_publish: "Save or publish?"

View File

@ -1161,7 +1161,7 @@ es:
privacy: privacy:
title: "Privacidad" title: "Privacidad"
privacy_policy: "Política de privacidad" privacy_policy: "Política de privacidad"
input_the_dpo: "Input the contact of the Data Protection Officer" input_the_dpo: "Data Protection Officer"
current_policy: "Política de privacidad" current_policy: "Política de privacidad"
draft_from_USER_DATE: "Borrador, guardado por {USER}, el {DATE}" draft_from_USER_DATE: "Borrador, guardado por {USER}, el {DATE}"
save_or_publish: "Save or publish?" save_or_publish: "Save or publish?"

View File

@ -1161,7 +1161,7 @@ fr:
privacy: privacy:
title: "Confidentialité" title: "Confidentialité"
privacy_policy: "Politique de confidentialité" privacy_policy: "Politique de confidentialité"
input_the_dpo: "Saisir le contact du Délégué à la protection des données" input_the_dpo: "Délégué à la protection des données"
current_policy: "Politique courante" current_policy: "Politique courante"
draft_from_USER_DATE: "Brouillon, enregistré par {USER}, le {DATE}" draft_from_USER_DATE: "Brouillon, enregistré par {USER}, le {DATE}"
save_or_publish: "Enregistrer ou publier ?" save_or_publish: "Enregistrer ou publier ?"

View File

@ -1161,7 +1161,7 @@ pt:
privacy: privacy:
title: "Privacidade" title: "Privacidade"
privacy_policy: "Política de privacidade" privacy_policy: "Política de privacidade"
input_the_dpo: "Input the contact of the Data Protection Officer" input_the_dpo: "Data Protection Officer"
current_policy: "Current policy" current_policy: "Current policy"
draft_from_USER_DATE: "Draft, saved by {USER}, on {DATE}" draft_from_USER_DATE: "Draft, saved by {USER}, on {DATE}"
save_or_publish: "Save or publish?" save_or_publish: "Save or publish?"

View File

@ -1161,7 +1161,7 @@ zu:
privacy: privacy:
title: "crwdns20792:0crwdne20792:0" title: "crwdns20792:0crwdne20792:0"
privacy_policy: "crwdns20794:0crwdne20794:0" privacy_policy: "crwdns20794:0crwdne20794:0"
input_the_dpo: "crwdns8427:0crwdne8427:0" input_the_dpo: "crwdns20910:0crwdne20910:0"
current_policy: "crwdns8429:0crwdne8429:0" current_policy: "crwdns8429:0crwdne8429:0"
draft_from_USER_DATE: "crwdns8431:0{USER}crwdnd8431:0{DATE}crwdne8431:0" draft_from_USER_DATE: "crwdns8431:0{USER}crwdnd8431:0{DATE}crwdne8431:0"
save_or_publish: "crwdns8433:0crwdne8433:0" save_or_publish: "crwdns8433:0crwdne8433:0"

View File

@ -240,6 +240,7 @@ en:
i_already_subscribed: "I already subscribed" i_already_subscribed: "I already subscribed"
more_information: "More information" more_information: "More information"
your_subscription_expires_on_the_DATE: "Your subscription expires on the {DATE}" your_subscription_expires_on_the_DATE: "Your subscription expires on the {DATE}"
no_plans: "No plans are available for your group"
my_group: "My group" my_group: "My group"
his_group: "{GENDER, select, male{His} female{Her} other{Its}} group" his_group: "{GENDER, select, male{His} female{Her} other{Its}} group"
he_wants_to_change_group: "{ROLE, select, member{I want} other{The user wants}} to change group" he_wants_to_change_group: "{ROLE, select, member{I want} other{The user wants}} to change group"

View File

@ -240,6 +240,7 @@ es:
i_already_subscribed: "Ya me he suscrito" i_already_subscribed: "Ya me he suscrito"
more_information: "Más información" more_information: "Más información"
your_subscription_expires_on_the_DATE: "Su suscripción termina {DATE}" your_subscription_expires_on_the_DATE: "Su suscripción termina {DATE}"
no_plans: "No plans are available for your group"
my_group: "My grupo" my_group: "My grupo"
his_group: "{GENDER, select, male{His} female{Her} other{Its}} group" his_group: "{GENDER, select, male{His} female{Her} other{Its}} group"
he_wants_to_change_group: "{ROLE, select, member{Quiero} other{El usuario quiere}} cambiar el grupo" he_wants_to_change_group: "{ROLE, select, member{Quiero} other{El usuario quiere}} cambiar el grupo"

View File

@ -240,6 +240,7 @@ fr:
i_already_subscribed: "Je suis déjà abonné" i_already_subscribed: "Je suis déjà abonné"
more_information: "Plus d'infos" more_information: "Plus d'infos"
your_subscription_expires_on_the_DATE: "Votre abonnement expire au {DATE}" your_subscription_expires_on_the_DATE: "Votre abonnement expire au {DATE}"
no_plans: "Aucun abonnement n'est disponible pour votre groupe"
my_group: "Mon groupe" my_group: "Mon groupe"
his_group: "Son groupe" his_group: "Son groupe"
he_wants_to_change_group: "{ROLE, select, member{Je veux} other{L'utilisateur veut}} changer de groupe" he_wants_to_change_group: "{ROLE, select, member{Je veux} other{L'utilisateur veut}} changer de groupe"

View File

@ -240,6 +240,7 @@ pt:
i_already_subscribed: "Eu já estou inscrito" i_already_subscribed: "Eu já estou inscrito"
more_information: "Mais informação" more_information: "Mais informação"
your_subscription_expires_on_the_DATE: "Sua inscrição expira em {DATE}" your_subscription_expires_on_the_DATE: "Sua inscrição expira em {DATE}"
no_plans: "No plans are available for your group"
my_group: "Meu grupo" my_group: "Meu grupo"
his_group: "{GENDER, select, male{Ele} female{Ela} other{Esses}} grupo" his_group: "{GENDER, select, male{Ele} female{Ela} other{Esses}} grupo"
he_wants_to_change_group: "{ROLE, select, member{Eu quero} other{O usuário quer}} trocar de grupo" he_wants_to_change_group: "{ROLE, select, member{Eu quero} other{O usuário quer}} trocar de grupo"

View File

@ -240,6 +240,7 @@ zu:
i_already_subscribed: "crwdns9175:0crwdne9175:0" i_already_subscribed: "crwdns9175:0crwdne9175:0"
more_information: "crwdns9177:0crwdne9177:0" more_information: "crwdns9177:0crwdne9177:0"
your_subscription_expires_on_the_DATE: "crwdns9179:0{DATE}crwdne9179:0" your_subscription_expires_on_the_DATE: "crwdns9179:0{DATE}crwdne9179:0"
no_plans: "crwdns20912:0crwdne20912:0"
my_group: "crwdns9181:0crwdne9181:0" my_group: "crwdns9181:0crwdne9181:0"
his_group: "crwdns9183:0GENDER={GENDER}crwdne9183:0" his_group: "crwdns9183:0GENDER={GENDER}crwdne9183:0"
he_wants_to_change_group: "crwdns20396:0ROLE={ROLE}crwdne20396:0" he_wants_to_change_group: "crwdns20396:0ROLE={ROLE}crwdne20396:0"

View File

@ -1,5 +1,20 @@
process.env.NODE_ENV = process.env.NODE_ENV || 'development'; process.env.NODE_ENV = process.env.NODE_ENV || 'development';
const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
const environment = require('./environment'); const environment = require('./environment');
const isWebpackDevServer = process.env.WEBPACK_DEV_SERVER;
// plugins
if (isWebpackDevServer) {
environment.plugins.append(
'ReactRefreshWebpackPlugin',
new ReactRefreshWebpackPlugin({
overlay: {
sockPort: 3035
}
})
);
}
module.exports = environment.toWebpackConfig(); module.exports = environment.toWebpackConfig();

View File

@ -33,6 +33,8 @@ default: &default
- .woff2 - .woff2
extensions: extensions:
- .tsx
- .ts
- .erb - .erb
- .html - .html
- .mjs - .mjs
@ -53,6 +55,7 @@ default: &default
development: development:
<<: *default <<: *default
compile: true compile: true
extract_css: false
# Reference: https://webpack.js.org/configuration/dev-server/ # Reference: https://webpack.js.org/configuration/dev-server/
dev_server: dev_server:
@ -60,7 +63,7 @@ development:
host: localhost host: localhost
port: 3035 port: 3035
public: localhost:3035 public: localhost:3035
hmr: false hmr: true
# Inline should be set to true if using HMR # Inline should be set to true if using HMR
inline: true inline: true
overlay: true overlay: true

View File

@ -258,8 +258,6 @@ unless Setting.find_by(name: 'about_contacts').try(:value)
setting = Setting.find_or_initialize_by(name: 'about_contacts') setting = Setting.find_or_initialize_by(name: 'about_contacts')
setting.value = <<~HTML setting.value = <<~HTML
<dl> <dl>
<dt>Contact commercial :</dt>
<dd>contact@fab-manager.com</dd>
<dt>Support technique :</dt> <dt>Support technique :</dt>
<dd><a href="https://forum.fab-manager.com">Forum</a></dd> <dd><a href="https://forum.fab-manager.com">Forum</a></dd>
<dd><a href="https://feedback.fab-manager.com">Feedback</a></dd> <dd><a href="https://feedback.fab-manager.com">Feedback</a></dd>

View File

@ -1,6 +1,6 @@
{ {
"name": "fab-manager", "name": "fab-manager",
"version": "4.6.2", "version": "4.6.3",
"description": "Fab-manager is the FabLab management solution. It provides a comprehensive, web-based, open-source tool to simplify your administrative tasks and your marker's projects.", "description": "Fab-manager is the FabLab management solution. It provides a comprehensive, web-based, open-source tool to simplify your administrative tasks and your marker's projects.",
"keywords": [ "keywords": [
"fablab", "fablab",
@ -17,6 +17,7 @@
}, },
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"devDependencies": { "devDependencies": {
"@pmmmwh/react-refresh-webpack-plugin": "^0.4.2",
"auto-ngtemplate-loader": "^3.1.0", "auto-ngtemplate-loader": "^3.1.0",
"eslint": "~6.8.0", "eslint": "~6.8.0",
"eslint-config-standard": "~14.1.1", "eslint-config-standard": "~14.1.1",
@ -29,15 +30,19 @@
"html-loader": "^1.3.0", "html-loader": "^1.3.0",
"ngtemplate-loader": "^2.1.0", "ngtemplate-loader": "^2.1.0",
"rails-erb-loader": "^5.5.2", "rails-erb-loader": "^5.5.2",
"react-refresh": "^0.9.0",
"resolve-url-loader": "^3.1.2", "resolve-url-loader": "^3.1.2",
"webpack": "^4.44.1", "webpack": "^4.44.1",
"webpack-dev-server": "^3.11.0" "webpack-dev-server": "^3.11.0"
}, },
"dependencies": { "dependencies": {
"@babel/preset-react": "^7.12.1", "@babel/preset-react": "^7.12.1",
"@babel/preset-typescript": "^7.12.1",
"@claviska/jquery-minicolors": "^2.3.5", "@claviska/jquery-minicolors": "^2.3.5",
"@fortawesome/fontawesome-free": "5.14.0", "@fortawesome/fontawesome-free": "5.14.0",
"@rails/webpacker": "5.2.1", "@rails/webpacker": "5.2.1",
"@types/react": "^16.9.53",
"@types/react-dom": "^16.9.8",
"@uirouter/angularjs": "0.4", "@uirouter/angularjs": "0.4",
"AngularDevise": "https://github.com/cloudspace/angular_devise.git#1.0.2", "AngularDevise": "https://github.com/cloudspace/angular_devise.git#1.0.2",
"angular": "1.8", "angular": "1.8",
@ -89,10 +94,17 @@
"prop-types": "^15.7.2", "prop-types": "^15.7.2",
"react": "^17.0.0", "react": "^17.0.0",
"react-dom": "^17.0.0", "react-dom": "^17.0.0",
"react-switch": "^5.0.1",
"react2angular": "^4.0.6", "react2angular": "^4.0.6",
"summernote": "0.8.18", "summernote": "0.8.18",
"twitter-fetcher": "^18.0.2", "twitter-fetcher": "^18.0.2",
"typescript": "^4.0.5",
"ui-select": "0.19", "ui-select": "0.19",
"underscore": "1.7" "underscore": "1.7"
},
"peerDependencies": {
"@babel/core": "^7.0.0-0",
"@types/angular": "^1.7.3",
"@types/prop-types": "^15.7.2"
} }
} }

22
tsconfig.json Normal file
View File

@ -0,0 +1,22 @@
{
"compilerOptions": {
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es6", "dom"],
"module": "es6",
"moduleResolution": "node",
"sourceMap": true,
"target": "es5",
"jsx": "react",
"noEmit": true,
"allowSyntheticDefaultImports": true
},
"exclude": [
"**/*.spec.ts",
"node_modules",
"vendor",
"public"
],
"compileOnSave": false
}

167
yarn.lock
View File

@ -56,6 +56,15 @@
jsesc "^2.5.1" jsesc "^2.5.1"
source-map "^0.5.0" source-map "^0.5.0"
"@babel/generator@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468"
integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==
dependencies:
"@babel/types" "^7.12.1"
jsesc "^2.5.1"
source-map "^0.5.0"
"@babel/helper-annotate-as-pure@^7.10.4": "@babel/helper-annotate-as-pure@^7.10.4":
version "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" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
@ -111,6 +120,17 @@
"@babel/helper-replace-supers" "^7.10.4" "@babel/helper-replace-supers" "^7.10.4"
"@babel/helper-split-export-declaration" "^7.10.4" "@babel/helper-split-export-declaration" "^7.10.4"
"@babel/helper-create-class-features-plugin@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e"
integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==
dependencies:
"@babel/helper-function-name" "^7.10.4"
"@babel/helper-member-expression-to-functions" "^7.12.1"
"@babel/helper-optimise-call-expression" "^7.10.4"
"@babel/helper-replace-supers" "^7.12.1"
"@babel/helper-split-export-declaration" "^7.10.4"
"@babel/helper-create-regexp-features-plugin@^7.10.4": "@babel/helper-create-regexp-features-plugin@^7.10.4":
version "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" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8"
@ -166,6 +186,13 @@
dependencies: dependencies:
"@babel/types" "^7.11.0" "@babel/types" "^7.11.0"
"@babel/helper-member-expression-to-functions@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c"
integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==
dependencies:
"@babel/types" "^7.12.1"
"@babel/helper-module-imports@^7.10.4": "@babel/helper-module-imports@^7.10.4":
version "7.10.4" version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620"
@ -232,6 +259,16 @@
"@babel/traverse" "^7.10.4" "@babel/traverse" "^7.10.4"
"@babel/types" "^7.10.4" "@babel/types" "^7.10.4"
"@babel/helper-replace-supers@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9"
integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw==
dependencies:
"@babel/helper-member-expression-to-functions" "^7.12.1"
"@babel/helper-optimise-call-expression" "^7.10.4"
"@babel/traverse" "^7.12.1"
"@babel/types" "^7.12.1"
"@babel/helper-simple-access@^7.10.4": "@babel/helper-simple-access@^7.10.4":
version "7.10.4" version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461"
@ -301,6 +338,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037"
integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==
"@babel/parser@^7.12.1":
version "7.12.3"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd"
integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==
"@babel/plugin-proposal-async-generator-functions@^7.10.4": "@babel/plugin-proposal-async-generator-functions@^7.10.4":
version "7.10.5" 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" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558"
@ -499,6 +541,13 @@
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-syntax-typescript@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5"
integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-transform-arrow-functions@^7.10.4": "@babel/plugin-transform-arrow-functions@^7.10.4":
version "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" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd"
@ -793,6 +842,15 @@
dependencies: dependencies:
"@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-transform-typescript@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4"
integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.12.1"
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-syntax-typescript" "^7.12.1"
"@babel/plugin-transform-unicode-escapes@^7.10.4": "@babel/plugin-transform-unicode-escapes@^7.10.4":
version "7.10.4" version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007"
@ -906,6 +964,14 @@
"@babel/plugin-transform-react-jsx-source" "^7.12.1" "@babel/plugin-transform-react-jsx-source" "^7.12.1"
"@babel/plugin-transform-react-pure-annotations" "^7.12.1" "@babel/plugin-transform-react-pure-annotations" "^7.12.1"
"@babel/preset-typescript@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b"
integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-transform-typescript" "^7.12.1"
"@babel/runtime@^7.11.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": "@babel/runtime@^7.11.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
version "7.11.2" version "7.11.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
@ -937,6 +1003,21 @@
globals "^11.1.0" globals "^11.1.0"
lodash "^4.17.19" lodash "^4.17.19"
"@babel/traverse@^7.12.1":
version "7.12.1"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e"
integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/generator" "^7.12.1"
"@babel/helper-function-name" "^7.10.4"
"@babel/helper-split-export-declaration" "^7.11.0"
"@babel/parser" "^7.12.1"
"@babel/types" "^7.12.1"
debug "^4.1.0"
globals "^11.1.0"
lodash "^4.17.19"
"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.4.4": "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.4.4":
version "7.11.5" version "7.11.5"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d"
@ -977,6 +1058,18 @@
dependencies: dependencies:
mkdirp "^1.0.4" mkdirp "^1.0.4"
"@pmmmwh/react-refresh-webpack-plugin@^0.4.2":
version "0.4.2"
resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.2.tgz#1f9741e0bde9790a0e13272082ed7272a083620d"
integrity sha512-Loc4UDGutcZ+Bd56hBInkm6JyjyCwWy4t2wcDXzN8EDPANgVRj0VP8Nxn0Zq2pc+WKauZwEivQgbDGg4xZO20A==
dependencies:
ansi-html "^0.0.7"
error-stack-parser "^2.0.6"
html-entities "^1.2.1"
native-url "^0.2.6"
schema-utils "^2.6.5"
source-map "^0.7.3"
"@rails/webpacker@5.2.1": "@rails/webpacker@5.2.1":
version "5.2.1" version "5.2.1"
resolved "https://registry.yarnpkg.com/@rails/webpacker/-/webpacker-5.2.1.tgz#87cdbd4af2090ae2d74bdc51f6f04717d907c5b3" resolved "https://registry.yarnpkg.com/@rails/webpacker/-/webpacker-5.2.1.tgz#87cdbd4af2090ae2d74bdc51f6f04717d907c5b3"
@ -1071,11 +1164,31 @@
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
"@types/prop-types@*":
version "15.7.3"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
"@types/q@^1.5.1": "@types/q@^1.5.1":
version "1.5.4" version "1.5.4"
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
"@types/react-dom@^16.9.8":
version "16.9.8"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423"
integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@^16.9.53":
version "16.9.53"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.53.tgz#40cd4f8b8d6b9528aedd1fff8fcffe7a112a3d23"
integrity sha512-4nW60Sd4L7+WMXH1D6jCdVftuW7j4Za6zdp6tJ33Rqv0nk1ZAmQKML9ZLD4H0dehA3FZxXR/GM8gXplf82oNGw==
dependencies:
"@types/prop-types" "*"
csstype "^3.0.2"
"@uirouter/angularjs@0.4": "@uirouter/angularjs@0.4":
version "0.4.3" version "0.4.3"
resolved "https://registry.yarnpkg.com/@uirouter/angularjs/-/angularjs-0.4.3.tgz#7e2630c59b2bd69ca485ff124f53b0169edddf39" resolved "https://registry.yarnpkg.com/@uirouter/angularjs/-/angularjs-0.4.3.tgz#7e2630c59b2bd69ca485ff124f53b0169edddf39"
@ -1520,7 +1633,7 @@ ansi-escapes@^4.2.1:
dependencies: dependencies:
type-fest "^0.11.0" type-fest "^0.11.0"
ansi-html@0.0.7: ansi-html@0.0.7, ansi-html@^0.0.7:
version "0.0.7" version "0.0.7"
resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
@ -2906,6 +3019,11 @@ csso@^4.0.2:
dependencies: dependencies:
css-tree "1.0.0-alpha.39" css-tree "1.0.0-alpha.39"
csstype@^3.0.2:
version "3.0.4"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.4.tgz#b156d7be03b84ff425c9a0a4b1e5f4da9c5ca888"
integrity sha512-xc8DUsCLmjvCfoD7LTGE0ou2MIWLx0K9RCZwSHMOdynqRsP4MtUcLeqh1HcQ2dInwDTqn+3CE0/FZh1et+p4jA==
currently-unhandled@^0.4.1: currently-unhandled@^0.4.1:
version "0.4.1" version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@ -3309,6 +3427,13 @@ error-ex@^1.2.0, error-ex@^1.3.1:
dependencies: dependencies:
is-arrayish "^0.2.1" is-arrayish "^0.2.1"
error-stack-parser@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8"
integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==
dependencies:
stackframe "^1.1.1"
es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: es-abstract@^1.17.0, es-abstract@^1.17.0-next.1:
version "1.17.5" version "1.17.5"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9"
@ -4404,7 +4529,7 @@ html-comment-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
html-entities@^1.3.1: html-entities@^1.2.1, html-entities@^1.3.1:
version "1.3.1" version "1.3.1"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44"
integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==
@ -5820,6 +5945,13 @@ nanomatch@^1.2.9:
snapdragon "^0.8.1" snapdragon "^0.8.1"
to-regex "^3.0.1" to-regex "^3.0.1"
native-url@^0.2.6:
version "0.2.6"
resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae"
integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==
dependencies:
querystring "^0.2.0"
natural-compare@^1.4.0: natural-compare@^1.4.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@ -7273,7 +7405,7 @@ promise-inflight@^1.0.1:
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
prop-types@^15.7.2: prop-types@^15.6.2, prop-types@^15.7.2:
version "15.7.2" version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
@ -7385,7 +7517,7 @@ querystring-es3@^0.2.0:
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
querystring@0.2.0: querystring@0.2.0, querystring@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
@ -7447,6 +7579,18 @@ react-is@^16.8.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-refresh@^0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf"
integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==
react-switch@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/react-switch/-/react-switch-5.0.1.tgz#449277f4c3aed5286fffd0f50d5cbc2a23330406"
integrity sha512-Pa5kvqRfX85QUCK1Jv0rxyeElbC3aNpCP5hV0LoJpU/Y6kydf0t4kRriQ6ZYA4kxWwAYk/cH51T4/sPzV9mCgQ==
dependencies:
prop-types "^15.6.2"
react2angular@^4.0.6: react2angular@^4.0.6:
version "4.0.6" version "4.0.6"
resolved "https://registry.yarnpkg.com/react2angular/-/react2angular-4.0.6.tgz#ec49ef834d101c9a320e25229fc5afa5b29edc4f" resolved "https://registry.yarnpkg.com/react2angular/-/react2angular-4.0.6.tgz#ec49ef834d101c9a320e25229fc5afa5b29edc4f"
@ -8226,6 +8370,11 @@ source-map@^0.5.0, source-map@^0.5.6:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
source-map@^0.7.3:
version "0.7.3"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
spdx-correct@^3.0.0: spdx-correct@^3.0.0:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e"
@ -8321,6 +8470,11 @@ stable@^0.1.8:
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
stackframe@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==
static-extend@^0.1.1: static-extend@^0.1.1:
version "0.1.2" version "0.1.2"
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@ -8877,6 +9031,11 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389"
integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==
ui-select@0.19: ui-select@0.19:
version "0.19.8" version "0.19.8"
resolved "https://registry.yarnpkg.com/ui-select/-/ui-select-0.19.8.tgz#74860848a7fd8bc494d9856d2f62776ea98637c1" resolved "https://registry.yarnpkg.com/ui-select/-/ui-select-0.19.8.tgz#74860848a7fd8bc494d9856d2f62776ea98637c1"