gitextract_jp6y57tz/ ├── .circleci/ │ └── config.yml ├── .docker/ │ ├── Dockerfile │ ├── entry.sh │ ├── nginx.conf │ ├── openssl.cnf │ ├── settings.cfg.docker │ ├── supervisord.conf │ ├── uwsgi-commandment.ini │ └── uwsgi.ini ├── .dockerignore ├── .gitignore ├── .gitlab-ci.yml ├── LICENSE.txt ├── Pipfile ├── README.rst ├── alembic.ini ├── assets/ │ └── logo.afdesign ├── commandment/ │ ├── __init__.py │ ├── ac2/ │ │ ├── __init__.py │ │ └── ac2_app.py │ ├── alembic/ │ │ ├── __init__.py │ │ ├── disabled_versions/ │ │ │ ├── 072fba4a2256_create_ad_payload_table.py │ │ │ ├── 18412434fb57_create_energy_saver_payload_table.py │ │ │ ├── 323a90039a6a_create_email_payload_table.py │ │ │ ├── 4eddbcb30464_create_mdm_payload_table.py │ │ │ ├── 8186b8ecf0fc_create_ad_cert_payload_table.py │ │ │ ├── 9dd4e48235e3_create_vpn_payload_table.py │ │ │ ├── d65049bf4b91_create_wifi_payload_table.py │ │ │ ├── da52b64b865f_create_apps_table.py │ │ │ ├── e47e29a9537c_create_certificate_payload_table.py │ │ │ └── fc0c134cbb2e_create_password_policy_payload_table.py │ │ ├── env.py │ │ ├── script.py.mako │ │ └── versions/ │ │ ├── 0201b96ab856_add_ios_available_os_updates_fields.py │ │ ├── 0ab46b2f6d8c_create_users_table.py │ │ ├── 0c4c448f4daf_create_device_users_table.py │ │ ├── 0e5babc5b9ee_create_vpp_licenses.py │ │ ├── 1005dc7dea01_os_update_settings.py │ │ ├── 13358fb3846b_create_subject_alternative_names_table.py │ │ ├── 1532dff16984_drop_device_groups.py │ │ ├── 2808deb9fc62_create_dep_configurations.py │ │ ├── 2f1507bf6dc1_create_application_manifests_table.py │ │ ├── 3061e56045eb_create_certificate_authority.py │ │ ├── 3dbf6db7f9eb_application_tags.py │ │ ├── 3fb4a904979c_general_cleanup.py │ │ ├── 50188ffaf0cd_create_devices_table.py │ │ ├── 5b98cc4af6c9_create_profiles_table.py │ │ ├── 6675e981817e_create_available_os_updates_table.py │ │ ├── 70ff84113e8f_create_tags.py │ │ ├── 71818e983100_create_application_sources_table.py │ │ ├── 71ecf957301a_create_commands_table.py │ │ ├── 7ab500f58a76_create_installed_payloads.py │ │ ├── 7cf5787a089e_add_dep_profile_relationships.py │ │ ├── 7d578eb75092_create_device_groups_table.py │ │ ├── 80fa1767c7e2_create_oauth_server_models.py │ │ ├── 875dcce0bf8b_create_vpp_users.py │ │ ├── 8c866896f76e_create_dep_join_tables.py │ │ ├── __init__.py │ │ ├── a1d5ffaa2092_create_installed_applications_table.py │ │ ├── a2e0af380181_create_dep_profiles.py │ │ ├── a35eeb5a216e_create_installed_profiles_table.py │ │ ├── a3ddaad5c358_add_dep_device_columns.py │ │ ├── af4ba256efde_create_certificates_table.py │ │ ├── b231394ab475_add_scep_config_source_types.py │ │ ├── b74ca08cfd9a_create_applications_tables.py │ │ ├── ba4849d8c8ad_create_device_group_devices_table.py │ │ ├── d5b32b5cc74e_add_dep_profile_id_to_device.py │ │ ├── dd74229d17b9_create_payload_dependencies_table.py │ │ ├── e16577adc4fd_create_installed_certificates_table.py │ │ ├── e5840df9a88a_create_scep_payload_table.py │ │ ├── e58afdc17baa_create_rsa_private_keys_table.py │ │ ├── e78274be170e_create_organizations_table.py │ │ ├── e947cdf82307_add_ios_installed_application_fields.py │ │ ├── e9b0a4f7b595_create_payloads_table.py │ │ ├── ea34ae3f1e7e_create_profile_payloads_table.py │ │ ├── f029ac1af3f0_create_vpp_accounts.py │ │ ├── f5237c7e2374_create_scep_config_table.py │ │ ├── f8eb70b3aa2b_create_application_manifests.py │ │ └── fa4d91c6aacf_create_managed_applications_table.py │ ├── api/ │ │ ├── __init__.py │ │ ├── app_json.py │ │ ├── app_jsonapi.py │ │ ├── configuration.py │ │ ├── resources.py │ │ └── schema.py │ ├── apns/ │ │ ├── __init__.py │ │ ├── app.py │ │ ├── mdmcert.py │ │ ├── push.py │ │ ├── schema.py │ │ └── threads.py │ ├── app.py │ ├── apps/ │ │ ├── __init__.py │ │ ├── app_jsonapi.py │ │ ├── models.py │ │ ├── resources.py │ │ └── schema.py │ ├── auth/ │ │ ├── __init__.py │ │ ├── app.py │ │ ├── models.py │ │ └── oauth2.py │ ├── cli.py │ ├── cms/ │ │ ├── __init__.py │ │ └── decorators.py │ ├── dbtypes.py │ ├── decorators.py │ ├── default_settings.py │ ├── dep/ │ │ ├── __init__.py │ │ ├── app.py │ │ ├── apple_schema.py │ │ ├── cli.py │ │ ├── dep.py │ │ ├── errors.py │ │ ├── models.py │ │ ├── resources.py │ │ ├── schema.py │ │ ├── smime.py │ │ └── threads.py │ ├── deprecated/ │ │ ├── models.py │ │ └── schema.py │ ├── enroll/ │ │ ├── __init__.py │ │ ├── app.py │ │ ├── profiles.py │ │ └── util.py │ ├── errors.py │ ├── inventory/ │ │ ├── __init__.py │ │ ├── api.py │ │ ├── models.py │ │ ├── resources.py │ │ └── schema.py │ ├── mdm/ │ │ ├── __init__.py │ │ ├── api.py │ │ ├── app.py │ │ ├── commands.py │ │ ├── decorators.py │ │ ├── handlers.py │ │ ├── models.py │ │ ├── resources.py │ │ ├── response_schema.py │ │ ├── routers.py │ │ ├── schema.py │ │ └── util.py │ ├── models.py │ ├── mutablelist.py │ ├── omdm/ │ │ ├── __init__.py │ │ └── models.py │ ├── pkg/ │ │ ├── __init__.py │ │ ├── appmanifest.py │ │ ├── manifest.py │ │ ├── old_app_manifest.py │ │ └── schema.py │ ├── pki/ │ │ ├── ca.py │ │ ├── models.py │ │ ├── openssl.py │ │ ├── ormutils.py │ │ ├── serialization.py │ │ └── ssl.py │ ├── plistutil/ │ │ ├── __init__.py │ │ └── nonewriter.py │ ├── profiles/ │ │ ├── __init__.py │ │ ├── ad.py │ │ ├── api.py │ │ ├── certificates.py │ │ ├── eap.py │ │ ├── email.py │ │ ├── energy.py │ │ ├── models.py │ │ ├── plist_schema.py │ │ ├── resources.py │ │ ├── schema.py │ │ ├── vpn.py │ │ └── wifi.py │ ├── signals.py │ ├── static/ │ │ ├── .gitignore │ │ ├── index.dev.html │ │ └── index.html │ ├── storage/ │ │ └── .gitignore │ ├── templates/ │ │ └── index.html │ ├── threads/ │ │ ├── __init__.py │ │ ├── startup_thread.py │ │ └── vpp_thread.py │ ├── utils.py │ └── vpp/ │ ├── __init__.py │ ├── app.py │ ├── cli.py │ ├── decorators.py │ ├── enum.py │ ├── errors.py │ ├── models.py │ ├── schema.py │ └── vpp.py ├── doc/ │ ├── .gitignore │ ├── Makefile │ ├── _static/ │ │ ├── config/ │ │ │ ├── nginx-commandment.conf │ │ │ └── uwsgi-commandment.ini │ │ └── uml/ │ │ ├── checkin.puml │ │ ├── commandqueue.puml │ │ └── models/ │ │ ├── Certificate.plantuml │ │ ├── Command.plantuml │ │ ├── InstalledApplication.plantuml │ │ ├── InstalledCertificate.plantuml │ │ └── InstalledProfile.plantuml │ ├── about-mdm.rst │ ├── api/ │ │ ├── certificates.rst │ │ ├── commands.rst │ │ ├── dep.rst │ │ ├── devices.rst │ │ ├── index.rst │ │ └── organization.rst │ ├── conf.py │ ├── dev/ │ │ └── MUSINGS.rst │ ├── developer/ │ │ ├── guide/ │ │ │ ├── architecture.rst │ │ │ ├── building.rst │ │ │ ├── index.rst │ │ │ └── running.rst │ │ ├── index.rst │ │ └── microservices.rst │ ├── guides/ │ │ ├── INSTALL.md │ │ ├── nginx.rst │ │ └── scep.rst │ ├── index.rst │ ├── installing/ │ │ ├── index.rst │ │ ├── install.rst │ │ ├── macos.rst │ │ └── ubuntu-server.rst │ ├── internal/ │ │ ├── api/ │ │ │ ├── api.rst │ │ │ ├── index.rst │ │ │ └── json-api.rst │ │ ├── cms/ │ │ │ ├── decorators.rst │ │ │ └── index.rst │ │ ├── core/ │ │ │ ├── index.rst │ │ │ ├── models/ │ │ │ │ ├── certificate.rst │ │ │ │ ├── certificate_request.rst │ │ │ │ ├── command.rst │ │ │ │ ├── device.rst │ │ │ │ ├── index.rst │ │ │ │ ├── installed_application.rst │ │ │ │ ├── installed_certificate.rst │ │ │ │ ├── installed_profile.rst │ │ │ │ ├── organization.rst │ │ │ │ ├── profile.rst │ │ │ │ └── rsa_private_key.rst │ │ │ └── signals.rst │ │ ├── decorators.rst │ │ ├── dep/ │ │ │ ├── dep.rst │ │ │ ├── index.rst │ │ │ ├── models.rst │ │ │ └── types.rst │ │ ├── enroll/ │ │ │ ├── app.rst │ │ │ └── index.rst │ │ ├── flask/ │ │ │ ├── configuration.rst │ │ │ └── index.rst │ │ ├── index.rst │ │ ├── mdm/ │ │ │ ├── app.rst │ │ │ ├── handlers.rst │ │ │ ├── index.rst │ │ │ └── types.rst │ │ ├── push.rst │ │ ├── vpp/ │ │ │ ├── decorators.rst │ │ │ ├── enum.rst │ │ │ ├── errors.rst │ │ │ ├── index.rst │ │ │ ├── operations.rst │ │ │ └── vpp.rst │ │ └── workers/ │ │ ├── index.rst │ │ └── runner.rst │ ├── make.bat │ ├── sadisplay/ │ │ └── models.py │ └── user/ │ ├── configuration.rst │ ├── dep.rst │ └── index.rst ├── docker-compose.yml ├── mypy.ini ├── pytest.ini ├── settings.cfg.example ├── setup.cfg ├── setup.py ├── testdata/ │ ├── Authenticate/ │ │ ├── 10.11.x.xml │ │ ├── 10.12.2.xml │ │ ├── IOS-11.3.1.xml │ │ ├── IOS-9.x.xml │ │ └── iOS-11.3.1-cell.xml │ ├── AvailableOSUpdates/ │ │ ├── 10.12.5.xml │ │ ├── iOS-11.3.1.xml │ │ └── macOS-10.13.1.xml │ ├── CertificateList/ │ │ ├── 10.11.x.xml │ │ └── iOS-11.3.1.xml │ ├── CheckOut/ │ │ ├── 10.11.x.xml │ │ └── iOS-11.3.1.xml │ ├── DeviceInformation/ │ │ ├── 10.11.x.xml │ │ ├── iOS-11.3.1.xml │ │ └── macOS-10.13.1.xml │ ├── DeviceLock/ │ │ └── iOS-11.3.1.xml │ ├── Errors/ │ │ ├── 10.12.5-invalid-command.xml │ │ ├── 10.13.6-invalid-command.xml │ │ ├── error_invalid_request_type.plist │ │ ├── iOS-11.3.1-AvailableOSUpdatesFailure.xml │ │ ├── iOS-11.3.1-CommandFormatError.xml │ │ └── iOS-11.3.1-RemoveProfile-Unmanaged.xml │ ├── InstallApplication/ │ │ ├── iOS-11.3.1-alreadyprompting.xml │ │ ├── iOS-12.1-prompting.xml │ │ └── manifests/ │ │ ├── Microsoft_AutoUpdate-3.11.17101000.plist │ │ ├── OneDrive-17.3.7078.1101.plist │ │ ├── SkypeForBusinessInstaller-16.12.0.77.plist │ │ ├── dotnet-sdk-2.0.2-osx-x64.plist │ │ └── munkitools-3.1.0.3430.plist │ ├── InstalledApplicationList/ │ │ ├── 10.11.x.xml │ │ ├── iOS-11.3.1.xml │ │ └── iOS-12.1.xml │ ├── ManagedApplicationList/ │ │ ├── iOS-11.3.1-Failed.xml │ │ ├── iOS-12.1-Failed.xml │ │ ├── iOS-12.1-Installing.xml │ │ ├── iOS-12.1-Managed.xml │ │ └── iOS-12.1-RejectedPrompting.xml │ ├── NotNow/ │ │ └── iOS-11.3.1.xml │ ├── ProfileList/ │ │ ├── 10.11.x.xml │ │ └── iOS-11.3.1.xml │ ├── README.rst │ ├── SecurityInfo/ │ │ ├── 10.11.x.xml │ │ ├── IOS-9.x.xml │ │ ├── iOS-11.3.1.xml │ │ └── macOS-10.13.1.xml │ ├── TokenUpdate/ │ │ ├── 10.11.x-user.plist │ │ ├── 10.11.x.plist │ │ ├── 10.12.2-user.xml │ │ ├── 10.12.2.xml │ │ └── iOS-11.3.1.xml │ ├── decrypt_dep_token.sh │ ├── dep/ │ │ └── profile.xml │ ├── itunes/ │ │ ├── ios-search-slack.json │ │ └── mas-search-slack.json │ └── mdmclient-PKIOperation.der ├── tests/ │ ├── __init__.py │ ├── alembic_test.ini │ ├── api/ │ │ ├── __init__.py │ │ ├── conftest.py │ │ └── test_devices.py │ ├── client.py │ ├── conftest.py │ ├── dep/ │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── test_dep.py │ │ ├── test_dep_app.py │ │ ├── test_dep_failures.py │ │ ├── test_dep_live.py │ │ └── test_smime.py │ ├── mdm/ │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── test_available_os_updates.py │ │ ├── test_certificate_list.py │ │ ├── test_checkin.py │ │ ├── test_device_information.py │ │ ├── test_installed_application_list.py │ │ ├── test_profile_list.py │ │ └── test_security_info.py │ ├── pkg/ │ │ └── __init__.py │ ├── pki/ │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── test_ca.py │ │ ├── test_models.py │ │ ├── test_openssl.py │ │ └── test_ormutils.py │ ├── test_api_flat.py │ ├── test_mdmcert.py │ ├── threads/ │ │ ├── __init__.py │ │ └── test_startup_thread.py │ └── vpp/ │ ├── __init__.py │ ├── conftest.py │ └── vpp_test.py ├── travis-ci-settings.cfg └── ui/ ├── .eslintrc.js ├── .gitignore ├── .storybook/ │ ├── config.js │ ├── preview-head.html │ └── webpack.config.js ├── _deprecated/ │ ├── AssistantPage.tsx │ ├── DeviceGroupPage.tsx │ ├── DeviceGroupsPage.tsx │ ├── InternalCAPage.tsx │ ├── MDMPage.tsx │ ├── SCEPConfigurationForm.tsx │ ├── SSLPage.tsx │ └── assistant/ │ ├── APNSConfiguration.tsx │ ├── FinalStep.tsx │ ├── SCEPConfiguration.tsx │ └── SSLConfiguration.tsx ├── babel.config.js ├── package.json ├── sass/ │ ├── _dropzone.scss │ ├── _helper.scss │ ├── _nav.scss │ ├── _settings.scss │ ├── _upload.scss │ └── app.scss ├── src/ │ ├── @types/ │ │ ├── byte-size/ │ │ │ └── index.d.ts │ │ └── redux-api-middleware/ │ │ └── index.d.ts │ ├── components/ │ │ ├── ActionMenu.tsx │ │ ├── App.tsx │ │ ├── BareLayout.tsx │ │ ├── CertificateTypeIcon.tsx │ │ ├── CheckListItem.tsx │ │ ├── DeviceActions.tsx │ │ ├── Navigation.scss │ │ ├── Navigation.tsx │ │ ├── NavigationLayout.tsx │ │ ├── NavigationVertical.tsx │ │ ├── ProtectedRoute.tsx │ │ ├── RSAAApiErrorMessage.tsx │ │ ├── SearchInput.tsx │ │ ├── TagDropdown.tsx │ │ ├── devices/ │ │ │ ├── DEPDeviceDetail.tsx │ │ │ ├── IOSDeviceDetail.tsx │ │ │ ├── MacOSDeviceDetail.scss │ │ │ ├── MacOSDeviceDetail.tsx │ │ │ └── ModelIcon.tsx │ │ ├── errors/ │ │ │ └── ApiError.tsx │ │ ├── formik/ │ │ │ └── FormikCheckbox.tsx │ │ ├── forms/ │ │ │ ├── DEPAccountForm.tsx │ │ │ ├── DEPProfileForm.tsx │ │ │ ├── DeviceAuthForm.tsx │ │ │ └── OrganizationForm.tsx │ │ ├── itunes/ │ │ │ └── MASResult.tsx │ │ ├── modals/ │ │ │ ├── DeviceRenameModal.tsx │ │ │ └── ProfileUploadModal.tsx │ │ ├── react-table/ │ │ │ ├── AppName.tsx │ │ │ ├── ApplicationType.tsx │ │ │ ├── ByteSize.tsx │ │ │ ├── CommandStatus.tsx │ │ │ ├── DEPAccountServerName.tsx │ │ │ ├── DEPProfileName.tsx │ │ │ ├── DeviceName.tsx │ │ │ ├── ObjectLink.tsx │ │ │ ├── ProfileName.tsx │ │ │ ├── RelativeToNow.tsx │ │ │ └── SUISelectionTools.tsx │ │ ├── react-tables/ │ │ │ ├── AppDeployStatusTable.tsx │ │ │ ├── ApplicationsTable.tsx │ │ │ ├── DEPAccountsTable.tsx │ │ │ ├── DEPProfilesTable.tsx │ │ │ ├── DeviceApplicationsTable.tsx │ │ │ ├── DeviceCertificatesTable.tsx │ │ │ ├── DeviceCommandsTable.tsx │ │ │ ├── DeviceProfilesTable.tsx │ │ │ ├── DeviceUpdatesTable.tsx │ │ │ ├── DevicesTable.tsx │ │ │ └── ProfilesTable.tsx │ │ ├── semantic-ui/ │ │ │ ├── ButtonLink.tsx │ │ │ └── MenuItemLink.tsx │ │ └── vpp/ │ │ └── VPPAccountDetail.tsx │ ├── constants.ts │ ├── containers/ │ │ ├── AppStorePage.tsx │ │ ├── ApplicationPage.tsx │ │ ├── ApplicationsPage.tsx │ │ ├── DEPAccountPage.tsx │ │ ├── DEPProfilePage.tsx │ │ ├── DashboardPage.tsx │ │ ├── DevicePage.tsx │ │ ├── DeviceRename.tsx │ │ ├── DevicesPage.tsx │ │ ├── LoginPage.tsx │ │ ├── LogoutPage.tsx │ │ ├── ProfilePage.tsx │ │ ├── ProfileUpload.tsx │ │ ├── ProfilesPage.tsx │ │ ├── SettingsPage.tsx │ │ ├── applications/ │ │ │ ├── ApplicationDeviceStatus.tsx │ │ │ └── MacOSEntApplicationPage.tsx │ │ ├── config/ │ │ │ ├── DeviceAuthPage.tsx │ │ │ └── OrganizationPage.tsx │ │ ├── devices/ │ │ │ ├── DeviceApplications.tsx │ │ │ ├── DeviceCertificates.tsx │ │ │ ├── DeviceCommands.tsx │ │ │ ├── DeviceDetail.tsx │ │ │ ├── DeviceOSUpdates.tsx │ │ │ └── DeviceProfiles.tsx │ │ └── settings/ │ │ ├── APNSPage.tsx │ │ ├── DEPAccountSetupPage.tsx │ │ ├── DEPAccountsPage.tsx │ │ └── VPPAccountsPage.tsx │ ├── entry.tsx │ ├── flask-rest-jsonapi.ts │ ├── forms/ │ │ ├── ApplicationForm.tsx │ │ └── DeviceGroupForm.tsx │ ├── guards.ts │ ├── hooks/ │ │ └── useForm.ts │ ├── json-api-v1.ts │ ├── models.ts │ ├── reducers/ │ │ ├── index.ts │ │ └── interfaces.ts │ ├── selectors/ │ │ └── device.ts │ ├── store/ │ │ ├── applications/ │ │ │ ├── actions.ts │ │ │ ├── itunes.ts │ │ │ ├── list_reducer.ts │ │ │ ├── managed.ts │ │ │ ├── managed_reducer.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── assistant/ │ │ │ ├── actions.ts │ │ │ └── reducer.ts │ │ ├── auth/ │ │ │ ├── actions.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── certificates/ │ │ │ ├── actions.ts │ │ │ ├── ca_actions.ts │ │ │ ├── ca_reducer.ts │ │ │ ├── push_actions.ts │ │ │ ├── push_reducer.ts │ │ │ ├── reducer.ts │ │ │ ├── ssl_actions.ts │ │ │ ├── ssl_reducer.ts │ │ │ └── types.ts │ │ ├── commands/ │ │ │ ├── actions.ts │ │ │ └── reducer.ts │ │ ├── configuration/ │ │ │ ├── apns_reducer.ts │ │ │ ├── mdmcert_actions.ts │ │ │ ├── reducer.ts │ │ │ ├── scep_actions.ts │ │ │ ├── scep_reducer.ts │ │ │ ├── types.ts │ │ │ ├── vpp.ts │ │ │ └── vpp_reducer.ts │ │ ├── configureStore.ts │ │ ├── constants.ts │ │ ├── dep/ │ │ │ ├── account_reducer.ts │ │ │ ├── accounts_reducer.ts │ │ │ ├── actions.ts │ │ │ ├── profile_reducer.ts │ │ │ ├── profiles_reducer.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── device/ │ │ │ ├── actions.ts │ │ │ ├── applications.ts │ │ │ ├── available_os_updates_reducer.ts │ │ │ ├── certificates.ts │ │ │ ├── commands_reducer.ts │ │ │ ├── installed_applications_reducer.ts │ │ │ ├── installed_certificates_reducer.ts │ │ │ ├── installed_profiles_reducer.ts │ │ │ ├── profiles.ts │ │ │ ├── reducer.ts │ │ │ ├── types.ts │ │ │ └── updates.ts │ │ ├── device_groups/ │ │ │ ├── actions.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── devices/ │ │ │ ├── actions.ts │ │ │ └── devices.ts │ │ ├── json-api.ts │ │ ├── mdm.ts │ │ ├── organization/ │ │ │ ├── actions.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── pki/ │ │ │ ├── actions.ts │ │ │ └── types.ts │ │ ├── profile/ │ │ │ └── reducer.ts │ │ ├── profiles/ │ │ │ ├── actions.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ ├── redux-api-middleware.ts │ │ ├── table/ │ │ │ ├── actions.ts │ │ │ ├── reducer.ts │ │ │ └── types.ts │ │ └── tags/ │ │ ├── actions.ts │ │ ├── reducer.ts │ │ └── types.ts │ └── stories/ │ ├── DEPProfileForm.tsx │ ├── index.ts │ └── redux.tsx ├── tsconfig.json ├── tslint.json ├── webpack.config.hmr.js ├── webpack.config.js └── webpack.config.prod.js