Merge branch 'develop'
8
.env
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
DB_ENDPOINT=omds-mysql
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_EXTERNAL_PORT=3306
|
||||||
|
DB_NAME=omds
|
||||||
|
DB_ROOT_PASS=omdsdbpass
|
||||||
|
DB_USERNAME=omdsdbuser
|
||||||
|
DB_PASSWORD=omdsdbpass
|
||||||
|
NO_COLOR=TRUE
|
||||||
23
DockerfileServerDictation.dockerfile
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
FROM node:18.13.0-buster AS build-container
|
||||||
|
WORKDIR /app
|
||||||
|
RUN mkdir dictation_server
|
||||||
|
COPY dictation_server/ dictation_server/
|
||||||
|
RUN npm install --force -g n && n 18.13.0 \
|
||||||
|
&& cd dictation_server \
|
||||||
|
&& npm ci \
|
||||||
|
&& npm run build \
|
||||||
|
&& cd ..
|
||||||
|
|
||||||
|
FROM node:18.13.0-alpine
|
||||||
|
RUN apk --no-cache add tzdata \
|
||||||
|
&& cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
|
||||||
|
&& apk del tzdata \
|
||||||
|
&& rm -rf /var/cache/apk/*
|
||||||
|
WORKDIR /app
|
||||||
|
RUN mkdir build \
|
||||||
|
&& mkdir dist \
|
||||||
|
&& mkdir node_modules
|
||||||
|
COPY --from=build-container app/dictation_server/dist/ dist/
|
||||||
|
COPY --from=build-container app/dictation_server/.env ./
|
||||||
|
COPY --from=build-container app/dictation_server/node_modules/ node_modules/
|
||||||
|
CMD ["node", "./dist/main.js" ]
|
||||||
20
README.md
@ -1,20 +0,0 @@
|
|||||||
# Introduction
|
|
||||||
TODO: Give a short introduction of your project. Let this section explain the objectives or the motivation behind this project.
|
|
||||||
|
|
||||||
# Getting Started
|
|
||||||
TODO: Guide users through getting your code up and running on their own system. In this section you can talk about:
|
|
||||||
1. Installation process
|
|
||||||
2. Software dependencies
|
|
||||||
3. Latest releases
|
|
||||||
4. API references
|
|
||||||
|
|
||||||
# Build and Test
|
|
||||||
TODO: Describe and show how to build your code and run the tests.
|
|
||||||
|
|
||||||
# Contribute
|
|
||||||
TODO: Explain how other users and developers can contribute to make your code better.
|
|
||||||
|
|
||||||
If you want to learn more about creating good readme files then refer the following [guidelines](https://docs.microsoft.com/en-us/azure/devops/repos/git/create-a-readme?view=azure-devops). You can also seek inspiration from the below readme files:
|
|
||||||
- [ASP.NET Core](https://github.com/aspnet/Home)
|
|
||||||
- [Visual Studio Code](https://github.com/Microsoft/vscode)
|
|
||||||
- [Chakra Core](https://github.com/Microsoft/ChakraCore)
|
|
||||||
56
azure-pipelines-production.yml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
trigger:
|
||||||
|
tags:
|
||||||
|
include:
|
||||||
|
- release-*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: initialize
|
||||||
|
displayName: Initialize
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- script: |
|
||||||
|
git fetch origin main:main
|
||||||
|
if git merge-base --is-ancestor $(Build.SourceVersion) main; then
|
||||||
|
echo "This commit is in the main branch."
|
||||||
|
else
|
||||||
|
echo "This commit is not in the main branch."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
displayName: 'タグが付けられたCommitがmainブランチに存在するか確認'
|
||||||
|
- job: backend_build
|
||||||
|
dependsOn: initialize
|
||||||
|
condition: succeeded('initialize')
|
||||||
|
displayName: Dictation App Service Deploy
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- job: frontend_build
|
||||||
|
dependsOn: initialize
|
||||||
|
condition: succeeded('initialize')
|
||||||
|
displayName: Dictation Static App Service Deploy
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- job: migration
|
||||||
|
condition: succeeded('initialize')
|
||||||
|
displayName: DB migration
|
||||||
|
dependsOn:
|
||||||
|
- initialize
|
||||||
|
- backend_build
|
||||||
|
- frontend_build
|
||||||
|
pool:
|
||||||
|
name: db-migrate-pipelines
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
59
azure-pipelines-staging.yml
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
include:
|
||||||
|
- stage-*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: initialize
|
||||||
|
displayName: Initialize
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- script: |
|
||||||
|
git fetch origin main:main
|
||||||
|
if git merge-base --is-ancestor $(Build.SourceVersion) main; then
|
||||||
|
echo "This commit is in the main branch."
|
||||||
|
else
|
||||||
|
echo "This commit is not in the main branch."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
displayName: 'タグが付けられたCommitがmainブランチに存在するか確認'
|
||||||
|
- job: backend_build
|
||||||
|
dependsOn: initialize
|
||||||
|
condition: succeeded('initialize')
|
||||||
|
displayName: Dictation App Service Deploy
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- job: frontend_build
|
||||||
|
dependsOn: initialize
|
||||||
|
condition: succeeded('initialize')
|
||||||
|
displayName: Dictation Static App Service Deploy
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- job: migration
|
||||||
|
condition: succeeded('initialize')
|
||||||
|
displayName: DB migration
|
||||||
|
dependsOn:
|
||||||
|
- initialize
|
||||||
|
- backend_build
|
||||||
|
- frontend_build
|
||||||
|
pool:
|
||||||
|
name: db-migrate-pipelines
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
32
azure-static-web-apps-purple-forest-07b9d5300.yml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
name: Azure Static Web Apps CI/CD
|
||||||
|
|
||||||
|
pr:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- develop
|
||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- develop
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: build_and_deploy_job
|
||||||
|
displayName: Build and Deploy Job
|
||||||
|
condition: or(eq(variables['Build.Reason'], 'Manual'),or(eq(variables['Build.Reason'], 'PullRequest'),eq(variables['Build.Reason'], 'IndividualCI')))
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
variables:
|
||||||
|
- group: Azure-Static-Web-Apps-purple-forest-07b9d5300-variable-group
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
submodules: true
|
||||||
|
- task: AzureStaticWebApp@0
|
||||||
|
inputs:
|
||||||
|
azure_static_web_apps_api_token: $(AZURE_STATIC_WEB_APPS_API_TOKEN_PURPLE_FOREST_07B9D5300)
|
||||||
|
###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
|
||||||
|
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
|
||||||
|
app_location: "/" # App source code path
|
||||||
|
api_location: "" # Api source code path - optional
|
||||||
|
output_location: "" # Built app content directory - optional
|
||||||
|
###### End of Repository/Build Configurations ######
|
||||||
|
|
||||||
1
cache/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
dump.rdb
|
||||||
5249
configurations/azure/dev-application-rg.json
Normal file
23
configurations/azure/dev-azureADB2C-rg.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||||
|
"contentVersion": "1.0.0.0",
|
||||||
|
"parameters": {
|
||||||
|
"b2cDirectories_adb2codmsdev_onmicrosoft_com_name": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"apiVersion": "2023-01-18-preview",
|
||||||
|
"location": "Asia Pacific",
|
||||||
|
"name": "[parameters('b2cDirectories_adb2codmsdev_onmicrosoft_com_name')]",
|
||||||
|
"properties": {},
|
||||||
|
"sku": {
|
||||||
|
"name": "PremiumP1",
|
||||||
|
"tier": "A0"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.AzureActiveDirectory/b2cDirectories"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"variables": {}
|
||||||
|
}
|
||||||
5930
configurations/azure/dev-database-rg.json
Normal file
11388
configurations/azure/dev-network-rg.json
Normal file
95
configurations/azure/dev-notification-rg.json
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||||
|
"contentVersion": "1.0.0.0",
|
||||||
|
"parameters": {
|
||||||
|
"namespaces_ntfns_odms_dev_name": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"apiVersion": "2017-04-01",
|
||||||
|
"location": "Japan East",
|
||||||
|
"name": "[parameters('namespaces_ntfns_odms_dev_name')]",
|
||||||
|
"properties": {
|
||||||
|
"createdAt": "2023-07-24T01:26:14.6870000Z",
|
||||||
|
"critical": false,
|
||||||
|
"enabled": true,
|
||||||
|
"provisioningState": "Succeeded",
|
||||||
|
"serviceBusEndpoint": "[concat('https://', parameters('namespaces_ntfns_odms_dev_name'), '.servicebus.windows.net:443/')]",
|
||||||
|
"status": "Active",
|
||||||
|
"updatedAt": "2023-07-24T01:26:14.7370000Z"
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Free"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.NotificationHubs/namespaces"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2017-04-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_dev_name'))]"
|
||||||
|
],
|
||||||
|
"location": "Japan East",
|
||||||
|
"name": "[concat(parameters('namespaces_ntfns_odms_dev_name'), '/RootManageSharedAccessKey')]",
|
||||||
|
"properties": {
|
||||||
|
"rights": [
|
||||||
|
"Manage",
|
||||||
|
"Listen",
|
||||||
|
"Send"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type": "Microsoft.NotificationHubs/namespaces/AuthorizationRules"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2017-04-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_dev_name'))]"
|
||||||
|
],
|
||||||
|
"location": "Japan East",
|
||||||
|
"name": "[concat(parameters('namespaces_ntfns_odms_dev_name'), '/ntf-odms-dev')]",
|
||||||
|
"properties": {
|
||||||
|
"authorizationRules": [],
|
||||||
|
"registrationTtl": "10675199.02:48:05.4775807"
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"Project": "OMDS",
|
||||||
|
"environment": "develop"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2017-04-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces/NotificationHubs', parameters('namespaces_ntfns_odms_dev_name'), 'ntf-odms-dev')]",
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_dev_name'))]"
|
||||||
|
],
|
||||||
|
"location": "Japan East",
|
||||||
|
"name": "[concat(parameters('namespaces_ntfns_odms_dev_name'), '/ntf-odms-dev/DefaultFullSharedAccessSignature')]",
|
||||||
|
"properties": {
|
||||||
|
"rights": [
|
||||||
|
"Manage",
|
||||||
|
"Listen",
|
||||||
|
"Send"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs/AuthorizationRules"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2017-04-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces/NotificationHubs', parameters('namespaces_ntfns_odms_dev_name'), 'ntf-odms-dev')]",
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_dev_name'))]"
|
||||||
|
],
|
||||||
|
"location": "Japan East",
|
||||||
|
"name": "[concat(parameters('namespaces_ntfns_odms_dev_name'), '/ntf-odms-dev/DefaultListenSharedAccessSignature')]",
|
||||||
|
"properties": {
|
||||||
|
"rights": [
|
||||||
|
"Listen"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs/AuthorizationRules"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"variables": {}
|
||||||
|
}
|
||||||
688
configurations/azure/dev-storage-rg.json
Normal file
@ -0,0 +1,688 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||||
|
"contentVersion": "1.0.0.0",
|
||||||
|
"parameters": {
|
||||||
|
"storageAccounts_saodmsaudev_name": {
|
||||||
|
"type": "String"
|
||||||
|
},
|
||||||
|
"storageAccounts_saodmseudev_name": {
|
||||||
|
"type": "String"
|
||||||
|
},
|
||||||
|
"storageAccounts_saodmsusdev_name": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"kind": "StorageV2",
|
||||||
|
"location": "australiaeast",
|
||||||
|
"name": "[parameters('storageAccounts_saodmsaudev_name')]",
|
||||||
|
"properties": {
|
||||||
|
"accessTier": "Hot",
|
||||||
|
"allowBlobPublicAccess": false,
|
||||||
|
"allowCrossTenantReplication": true,
|
||||||
|
"allowSharedKeyAccess": true,
|
||||||
|
"defaultToOAuthAuthentication": false,
|
||||||
|
"dnsEndpointType": "Standard",
|
||||||
|
"encryption": {
|
||||||
|
"keySource": "Microsoft.Storage",
|
||||||
|
"requireInfrastructureEncryption": false,
|
||||||
|
"services": {
|
||||||
|
"blob": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
},
|
||||||
|
"file": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimumTlsVersion": "TLS1_2",
|
||||||
|
"networkAcls": {
|
||||||
|
"bypass": "AzureServices",
|
||||||
|
"defaultAction": "Allow",
|
||||||
|
"ipRules": [],
|
||||||
|
"virtualNetworkRules": []
|
||||||
|
},
|
||||||
|
"publicNetworkAccess": "Enabled",
|
||||||
|
"supportsHttpsTrafficOnly": true
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"Environment": "develop",
|
||||||
|
"Project": "OMDS"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"kind": "StorageV2",
|
||||||
|
"location": "northeurope",
|
||||||
|
"name": "[parameters('storageAccounts_saodmseudev_name')]",
|
||||||
|
"properties": {
|
||||||
|
"accessTier": "Hot",
|
||||||
|
"allowBlobPublicAccess": false,
|
||||||
|
"allowCrossTenantReplication": true,
|
||||||
|
"allowSharedKeyAccess": true,
|
||||||
|
"defaultToOAuthAuthentication": false,
|
||||||
|
"dnsEndpointType": "Standard",
|
||||||
|
"encryption": {
|
||||||
|
"keySource": "Microsoft.Storage",
|
||||||
|
"requireInfrastructureEncryption": false,
|
||||||
|
"services": {
|
||||||
|
"blob": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
},
|
||||||
|
"file": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimumTlsVersion": "TLS1_2",
|
||||||
|
"networkAcls": {
|
||||||
|
"bypass": "AzureServices",
|
||||||
|
"defaultAction": "Allow",
|
||||||
|
"ipRules": [],
|
||||||
|
"virtualNetworkRules": []
|
||||||
|
},
|
||||||
|
"publicNetworkAccess": "Enabled",
|
||||||
|
"supportsHttpsTrafficOnly": true
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"Environment": "develop",
|
||||||
|
"Project": "OMDS"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"kind": "StorageV2",
|
||||||
|
"location": "eastus",
|
||||||
|
"name": "[parameters('storageAccounts_saodmsusdev_name')]",
|
||||||
|
"properties": {
|
||||||
|
"accessTier": "Hot",
|
||||||
|
"allowBlobPublicAccess": false,
|
||||||
|
"allowCrossTenantReplication": true,
|
||||||
|
"allowSharedKeyAccess": true,
|
||||||
|
"defaultToOAuthAuthentication": false,
|
||||||
|
"dnsEndpointType": "Standard",
|
||||||
|
"encryption": {
|
||||||
|
"keySource": "Microsoft.Storage",
|
||||||
|
"requireInfrastructureEncryption": false,
|
||||||
|
"services": {
|
||||||
|
"blob": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
},
|
||||||
|
"file": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimumTlsVersion": "TLS1_2",
|
||||||
|
"networkAcls": {
|
||||||
|
"bypass": "AzureServices",
|
||||||
|
"defaultAction": "Allow",
|
||||||
|
"ipRules": [],
|
||||||
|
"virtualNetworkRules": []
|
||||||
|
},
|
||||||
|
"publicNetworkAccess": "Enabled",
|
||||||
|
"supportsHttpsTrafficOnly": true
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"Environment": "develop",
|
||||||
|
"Project": "OMDS"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"changeFeed": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"containerDeleteRetentionPolicy": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"cors": {
|
||||||
|
"corsRules": [
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"GET",
|
||||||
|
"PUT"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"http://localhost:8180"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 28800
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"deleteRetentionPolicy": {
|
||||||
|
"allowPermanentDelete": false,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"isVersioningEnabled": false,
|
||||||
|
"restorePolicy": {
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"changeFeed": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"containerDeleteRetentionPolicy": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"cors": {
|
||||||
|
"corsRules": [
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"GET",
|
||||||
|
"PUT"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"http://localhost:8180"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 28800
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"deleteRetentionPolicy": {
|
||||||
|
"allowPermanentDelete": false,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"isVersioningEnabled": false,
|
||||||
|
"restorePolicy": {
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"changeFeed": {
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"containerDeleteRetentionPolicy": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"cors": {
|
||||||
|
"corsRules": [
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"GET",
|
||||||
|
"PUT"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"http://localhost:8180"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 2880
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"deleteRetentionPolicy": {
|
||||||
|
"allowPermanentDelete": false,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"isVersioningEnabled": true,
|
||||||
|
"restorePolicy": {
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
},
|
||||||
|
"protocolSettings": {
|
||||||
|
"smb": {}
|
||||||
|
},
|
||||||
|
"shareDeleteRetentionPolicy": {
|
||||||
|
"days": 0,
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/fileServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
},
|
||||||
|
"protocolSettings": {
|
||||||
|
"smb": {}
|
||||||
|
},
|
||||||
|
"shareDeleteRetentionPolicy": {
|
||||||
|
"days": 0,
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/fileServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
},
|
||||||
|
"protocolSettings": {
|
||||||
|
"smb": {}
|
||||||
|
},
|
||||||
|
"shareDeleteRetentionPolicy": {
|
||||||
|
"days": 0,
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/fileServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/queueServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/queueServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/queueServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/tableServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/tableServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/tableServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-1')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-11')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-12')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-13')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsaudev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default/account-2')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmseudev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default/account-2')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-2')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-3')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-300')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-6')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-8')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsaudev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaudev_name'), '/default/account-9')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmseudev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseudev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseudev_name'), '/default/account-9')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusdev_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusdev_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusdev_name'), '/default/account-9')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"variables": {}
|
||||||
|
}
|
||||||
2766
configurations/azure/maintenance-rg.json
Normal file
7
configurations/azure/shared-sendGrid-rg.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||||
|
"contentVersion": "1.0.0.0",
|
||||||
|
"parameters": {},
|
||||||
|
"resources": [],
|
||||||
|
"variables": {}
|
||||||
|
}
|
||||||
104
configurations/azure/shared-template-rg.json
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||||
|
"contentVersion": "1.0.0.0",
|
||||||
|
"parameters": {
|
||||||
|
"templateSpecs_tem_network_name": {
|
||||||
|
"type": "String"
|
||||||
|
},
|
||||||
|
"templateSpecs_temp_storage_account_name": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-02-01",
|
||||||
|
"location": "japaneast",
|
||||||
|
"name": "[parameters('templateSpecs_tem_network_name')]",
|
||||||
|
"properties": {},
|
||||||
|
"type": "Microsoft.Resources/templateSpecs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-02-01",
|
||||||
|
"location": "japaneast",
|
||||||
|
"name": "[parameters('templateSpecs_temp_storage_account_name')]",
|
||||||
|
"properties": {},
|
||||||
|
"tags": {
|
||||||
|
"ms-resource-usage": "azure-storage-account"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Resources/templateSpecs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-02-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Resources/templateSpecs', parameters('templateSpecs_tem_network_name'))]"
|
||||||
|
],
|
||||||
|
"location": "japaneast",
|
||||||
|
"name": "[concat(parameters('templateSpecs_tem_network_name'), '/1.0')]",
|
||||||
|
"properties": {
|
||||||
|
"mainTemplate": {}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Resources/templateSpecs/versions"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-02-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Resources/templateSpecs', parameters('templateSpecs_temp_storage_account_name'))]"
|
||||||
|
],
|
||||||
|
"location": "japaneast",
|
||||||
|
"name": "[concat(parameters('templateSpecs_temp_storage_account_name'), '/1.0')]",
|
||||||
|
"properties": {
|
||||||
|
"mainTemplate": {}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"ms-resource-usage": "azure-storage-account"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Resources/templateSpecs/versions"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-02-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Resources/templateSpecs', parameters('templateSpecs_temp_storage_account_name'))]"
|
||||||
|
],
|
||||||
|
"location": "japaneast",
|
||||||
|
"name": "[concat(parameters('templateSpecs_temp_storage_account_name'), '/2.0')]",
|
||||||
|
"properties": {
|
||||||
|
"mainTemplate": {}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"ms-resource-usage": "azure-storage-account"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Resources/templateSpecs/versions"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-02-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Resources/templateSpecs', parameters('templateSpecs_temp_storage_account_name'))]"
|
||||||
|
],
|
||||||
|
"location": "japaneast",
|
||||||
|
"name": "[concat(parameters('templateSpecs_temp_storage_account_name'), '/3.0')]",
|
||||||
|
"properties": {
|
||||||
|
"mainTemplate": {}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"ms-resource-usage": "azure-storage-account"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Resources/templateSpecs/versions"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-02-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Resources/templateSpecs', parameters('templateSpecs_temp_storage_account_name'))]"
|
||||||
|
],
|
||||||
|
"location": "japaneast",
|
||||||
|
"name": "[concat(parameters('templateSpecs_temp_storage_account_name'), '/4.0')]",
|
||||||
|
"properties": {
|
||||||
|
"mainTemplate": {}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"ms-resource-usage": "azure-storage-account"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Resources/templateSpecs/versions"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"variables": {}
|
||||||
|
}
|
||||||
3307
configurations/azure/stg-application-rg.json
Normal file
23
configurations/azure/stg-azureADB2C-rg.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||||
|
"contentVersion": "1.0.0.0",
|
||||||
|
"parameters": {
|
||||||
|
"b2cDirectories_adb2codmsstg_onmicrosoft_com_name": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"apiVersion": "2023-01-18-preview",
|
||||||
|
"location": "Global",
|
||||||
|
"name": "[parameters('b2cDirectories_adb2codmsstg_onmicrosoft_com_name')]",
|
||||||
|
"properties": {},
|
||||||
|
"sku": {
|
||||||
|
"name": "PremiumP1",
|
||||||
|
"tier": "A0"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.AzureActiveDirectory/b2cDirectories"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"variables": {}
|
||||||
|
}
|
||||||
5922
configurations/azure/stg-database-rg.json
Normal file
11184
configurations/azure/stg-network-rg.json
Normal file
95
configurations/azure/stg-notification-rg.json
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||||
|
"contentVersion": "1.0.0.0",
|
||||||
|
"parameters": {
|
||||||
|
"namespaces_ntfns_odms_stg_name": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"apiVersion": "2017-04-01",
|
||||||
|
"location": "Japan East",
|
||||||
|
"name": "[parameters('namespaces_ntfns_odms_stg_name')]",
|
||||||
|
"properties": {
|
||||||
|
"createdAt": "2023-07-25T01:57:35.5400000Z",
|
||||||
|
"critical": false,
|
||||||
|
"enabled": true,
|
||||||
|
"provisioningState": "Succeeded",
|
||||||
|
"serviceBusEndpoint": "[concat('https://', parameters('namespaces_ntfns_odms_stg_name'), '.servicebus.windows.net:443/')]",
|
||||||
|
"status": "Active",
|
||||||
|
"updatedAt": "2023-07-25T01:57:35.5970000Z"
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Free"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.NotificationHubs/namespaces"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2017-04-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_stg_name'))]"
|
||||||
|
],
|
||||||
|
"location": "Japan East",
|
||||||
|
"name": "[concat(parameters('namespaces_ntfns_odms_stg_name'), '/RootManageSharedAccessKey')]",
|
||||||
|
"properties": {
|
||||||
|
"rights": [
|
||||||
|
"Manage",
|
||||||
|
"Listen",
|
||||||
|
"Send"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type": "Microsoft.NotificationHubs/namespaces/AuthorizationRules"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2017-04-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_stg_name'))]"
|
||||||
|
],
|
||||||
|
"location": "Japan East",
|
||||||
|
"name": "[concat(parameters('namespaces_ntfns_odms_stg_name'), '/ntf-odms-stg')]",
|
||||||
|
"properties": {
|
||||||
|
"authorizationRules": [],
|
||||||
|
"registrationTtl": "10675199.02:48:05.4775807"
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"Project": "OMDS",
|
||||||
|
"environment": "staging"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2017-04-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces/NotificationHubs', parameters('namespaces_ntfns_odms_stg_name'), 'ntf-odms-stg')]",
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_stg_name'))]"
|
||||||
|
],
|
||||||
|
"location": "Japan East",
|
||||||
|
"name": "[concat(parameters('namespaces_ntfns_odms_stg_name'), '/ntf-odms-stg/DefaultFullSharedAccessSignature')]",
|
||||||
|
"properties": {
|
||||||
|
"rights": [
|
||||||
|
"Manage",
|
||||||
|
"Listen",
|
||||||
|
"Send"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs/AuthorizationRules"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2017-04-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces/NotificationHubs', parameters('namespaces_ntfns_odms_stg_name'), 'ntf-odms-stg')]",
|
||||||
|
"[resourceId('Microsoft.NotificationHubs/namespaces', parameters('namespaces_ntfns_odms_stg_name'))]"
|
||||||
|
],
|
||||||
|
"location": "Japan East",
|
||||||
|
"name": "[concat(parameters('namespaces_ntfns_odms_stg_name'), '/ntf-odms-stg/DefaultListenSharedAccessSignature')]",
|
||||||
|
"properties": {
|
||||||
|
"rights": [
|
||||||
|
"Listen"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type": "Microsoft.NotificationHubs/namespaces/NotificationHubs/AuthorizationRules"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"variables": {}
|
||||||
|
}
|
||||||
651
configurations/azure/stg-storage-rg.json
Normal file
@ -0,0 +1,651 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
|
||||||
|
"contentVersion": "1.0.0.0",
|
||||||
|
"parameters": {
|
||||||
|
"storageAccounts_saodmsaustg_name": {
|
||||||
|
"type": "String"
|
||||||
|
},
|
||||||
|
"storageAccounts_saodmseustg_name": {
|
||||||
|
"type": "String"
|
||||||
|
},
|
||||||
|
"storageAccounts_saodmsusstg_name": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resources": [
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"kind": "StorageV2",
|
||||||
|
"location": "australiaeast",
|
||||||
|
"name": "[parameters('storageAccounts_saodmsaustg_name')]",
|
||||||
|
"properties": {
|
||||||
|
"accessTier": "Hot",
|
||||||
|
"allowBlobPublicAccess": false,
|
||||||
|
"allowCrossTenantReplication": true,
|
||||||
|
"allowSharedKeyAccess": true,
|
||||||
|
"defaultToOAuthAuthentication": false,
|
||||||
|
"dnsEndpointType": "Standard",
|
||||||
|
"encryption": {
|
||||||
|
"keySource": "Microsoft.Storage",
|
||||||
|
"requireInfrastructureEncryption": false,
|
||||||
|
"services": {
|
||||||
|
"blob": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
},
|
||||||
|
"file": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimumTlsVersion": "TLS1_2",
|
||||||
|
"networkAcls": {
|
||||||
|
"bypass": "AzureServices",
|
||||||
|
"defaultAction": "Allow",
|
||||||
|
"ipRules": [],
|
||||||
|
"virtualNetworkRules": []
|
||||||
|
},
|
||||||
|
"publicNetworkAccess": "Enabled",
|
||||||
|
"supportsHttpsTrafficOnly": true
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"Environment": "staging",
|
||||||
|
"Project": "OMDS"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"kind": "StorageV2",
|
||||||
|
"location": "northeurope",
|
||||||
|
"name": "[parameters('storageAccounts_saodmseustg_name')]",
|
||||||
|
"properties": {
|
||||||
|
"accessTier": "Hot",
|
||||||
|
"allowBlobPublicAccess": false,
|
||||||
|
"allowCrossTenantReplication": true,
|
||||||
|
"allowSharedKeyAccess": true,
|
||||||
|
"defaultToOAuthAuthentication": false,
|
||||||
|
"dnsEndpointType": "Standard",
|
||||||
|
"encryption": {
|
||||||
|
"keySource": "Microsoft.Storage",
|
||||||
|
"requireInfrastructureEncryption": false,
|
||||||
|
"services": {
|
||||||
|
"blob": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
},
|
||||||
|
"file": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimumTlsVersion": "TLS1_2",
|
||||||
|
"networkAcls": {
|
||||||
|
"bypass": "AzureServices",
|
||||||
|
"defaultAction": "Allow",
|
||||||
|
"ipRules": [],
|
||||||
|
"virtualNetworkRules": []
|
||||||
|
},
|
||||||
|
"publicNetworkAccess": "Enabled",
|
||||||
|
"supportsHttpsTrafficOnly": true
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"Environment": "staging",
|
||||||
|
"Project": "OMDS"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"kind": "StorageV2",
|
||||||
|
"location": "eastus",
|
||||||
|
"name": "[parameters('storageAccounts_saodmsusstg_name')]",
|
||||||
|
"properties": {
|
||||||
|
"accessTier": "Hot",
|
||||||
|
"allowBlobPublicAccess": false,
|
||||||
|
"allowCrossTenantReplication": true,
|
||||||
|
"allowSharedKeyAccess": true,
|
||||||
|
"defaultToOAuthAuthentication": false,
|
||||||
|
"dnsEndpointType": "Standard",
|
||||||
|
"encryption": {
|
||||||
|
"keySource": "Microsoft.Storage",
|
||||||
|
"requireInfrastructureEncryption": false,
|
||||||
|
"services": {
|
||||||
|
"blob": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
},
|
||||||
|
"file": {
|
||||||
|
"enabled": true,
|
||||||
|
"keyType": "Account"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimumTlsVersion": "TLS1_2",
|
||||||
|
"networkAcls": {
|
||||||
|
"bypass": "AzureServices",
|
||||||
|
"defaultAction": "Allow",
|
||||||
|
"ipRules": [],
|
||||||
|
"virtualNetworkRules": []
|
||||||
|
},
|
||||||
|
"publicNetworkAccess": "Enabled",
|
||||||
|
"supportsHttpsTrafficOnly": true
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"Environment": "staging",
|
||||||
|
"Project": "OMDS"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaustg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaustg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"changeFeed": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"containerDeleteRetentionPolicy": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"cors": {
|
||||||
|
"corsRules": [
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"GET",
|
||||||
|
"POST"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"http://localhost:8081"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 28800
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"GET",
|
||||||
|
"POST"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"https://10.1.0.10:4443"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 28800
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"GET",
|
||||||
|
"PUT"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"http://localhost:8180"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 28800
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"deleteRetentionPolicy": {
|
||||||
|
"allowPermanentDelete": false,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"isVersioningEnabled": false,
|
||||||
|
"restorePolicy": {
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseustg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseustg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"changeFeed": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"containerDeleteRetentionPolicy": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"cors": {
|
||||||
|
"corsRules": [
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"GET",
|
||||||
|
"PUT"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"http://localhost:8081"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 28800
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"GET",
|
||||||
|
"PUT"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"http://localhost:8180"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 28800
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"deleteRetentionPolicy": {
|
||||||
|
"allowPermanentDelete": false,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"isVersioningEnabled": false,
|
||||||
|
"restorePolicy": {
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"changeFeed": {
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"containerDeleteRetentionPolicy": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"cors": {
|
||||||
|
"corsRules": [
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"GET",
|
||||||
|
"POST",
|
||||||
|
"PUT"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"http://localhost:8081"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 2880
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"GET",
|
||||||
|
"POST",
|
||||||
|
"PUT"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"http://localhost:3100"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 2880
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allowedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"allowedMethods": [
|
||||||
|
"PUT",
|
||||||
|
"GET"
|
||||||
|
],
|
||||||
|
"allowedOrigins": [
|
||||||
|
"http://localhost:8180"
|
||||||
|
],
|
||||||
|
"exposedHeaders": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"maxAgeInSeconds": 2880
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"deleteRetentionPolicy": {
|
||||||
|
"allowPermanentDelete": false,
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"isVersioningEnabled": true,
|
||||||
|
"restorePolicy": {
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaustg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaustg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
},
|
||||||
|
"protocolSettings": {
|
||||||
|
"smb": {}
|
||||||
|
},
|
||||||
|
"shareDeleteRetentionPolicy": {
|
||||||
|
"days": 0,
|
||||||
|
"enabled": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/fileServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseustg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseustg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
},
|
||||||
|
"protocolSettings": {
|
||||||
|
"smb": {}
|
||||||
|
},
|
||||||
|
"shareDeleteRetentionPolicy": {
|
||||||
|
"days": 7,
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/fileServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
},
|
||||||
|
"protocolSettings": {
|
||||||
|
"smb": {}
|
||||||
|
},
|
||||||
|
"shareDeleteRetentionPolicy": {
|
||||||
|
"days": 7,
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sku": {
|
||||||
|
"name": "Standard_LRS",
|
||||||
|
"tier": "Standard"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/fileServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaustg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaustg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/queueServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseustg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseustg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/queueServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/queueServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaustg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaustg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/tableServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseustg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseustg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/tableServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default')]",
|
||||||
|
"properties": {
|
||||||
|
"cors": {
|
||||||
|
"corsRules": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/tableServices"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusstg_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default/account-11')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusstg_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default/account-15')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsaustg_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsaustg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsaustg_name'), '/default/account-2')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmseustg_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmseustg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmseustg_name'), '/default/account-2')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusstg_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default/account-2')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusstg_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default/account-21')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"apiVersion": "2022-09-01",
|
||||||
|
"dependsOn": [
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_saodmsusstg_name'), 'default')]",
|
||||||
|
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_saodmsusstg_name'))]"
|
||||||
|
],
|
||||||
|
"name": "[concat(parameters('storageAccounts_saodmsusstg_name'), '/default/account-8')]",
|
||||||
|
"properties": {
|
||||||
|
"defaultEncryptionScope": "$account-encryption-key",
|
||||||
|
"denyEncryptionScopeOverride": false,
|
||||||
|
"immutableStorageWithVersioning": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"publicAccess": "None"
|
||||||
|
},
|
||||||
|
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"variables": {}
|
||||||
|
}
|
||||||
122
configurations/pipeline/ODMS Deploy.yml
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
# Variable 'static_dictation_deployment_token' was defined in the Variables tab
|
||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- refs/heads/develop
|
||||||
|
jobs:
|
||||||
|
- job: Job_1
|
||||||
|
displayName: Dictation App Service Deploy
|
||||||
|
pool:
|
||||||
|
name: odms-deploy-pipeline
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: npm ci
|
||||||
|
inputs:
|
||||||
|
command: ci
|
||||||
|
workingDir: dictation_server
|
||||||
|
verbose: false
|
||||||
|
- task: AzureKeyVault@2
|
||||||
|
displayName: 'Azure Key Vault: kv-odms-secret-dev'
|
||||||
|
inputs:
|
||||||
|
ConnectedServiceName: 82047c72-0cfe-43b0-bb2f-cdfd8b165e68
|
||||||
|
KeyVaultName: kv-odms-secret-dev
|
||||||
|
SecretsFilter: token-public-key
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Bash Script (Test)
|
||||||
|
inputs:
|
||||||
|
targetType: inline
|
||||||
|
filePath: cd dictation_server && JWT_PUBLIC_KEY="$JWT_PUBLIC_KEY" && npm run test
|
||||||
|
script: >
|
||||||
|
cd dictation_server && JWT_PUBLIC_KEY="$JWT_PUBLIC_KEY" && npm run test
|
||||||
|
- task: Docker@0
|
||||||
|
displayName: build
|
||||||
|
inputs:
|
||||||
|
azureSubscriptionEndpoint: 827be338-1846-4102-b006-f457c92883d3
|
||||||
|
azureContainerRegistry: '{"loginServer":"crodmsregistrymaintenance.azurecr.io", "id" : "/subscriptions/108fb131-cdca-4729-a2be-e5bd8c0b3ba7/resourceGroups/maintenance-rg/providers/Microsoft.ContainerRegistry/registries/crOdmsRegistryMaintenance"}'
|
||||||
|
dockerFile: DockerfileServerDictation.dockerfile
|
||||||
|
imageName: $(Build.Repository.Name)/dictation:latest
|
||||||
|
- task: Docker@0
|
||||||
|
displayName: Push
|
||||||
|
inputs:
|
||||||
|
azureSubscriptionEndpoint: 827be338-1846-4102-b006-f457c92883d3
|
||||||
|
azureContainerRegistry: '{"loginServer":"crodmsregistrymaintenance.azurecr.io", "id" : "/subscriptions/108fb131-cdca-4729-a2be-e5bd8c0b3ba7/resourceGroups/maintenance-rg/providers/Microsoft.ContainerRegistry/registries/crOdmsRegistryMaintenance"}'
|
||||||
|
action: Push an image
|
||||||
|
imageName: $(Build.Repository.Name)/dictation:latest
|
||||||
|
- job: Job_2
|
||||||
|
displayName: Dictation Static App Service Deploy
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: npm ci
|
||||||
|
inputs:
|
||||||
|
command: ci
|
||||||
|
workingDir: dictation_client
|
||||||
|
verbose: false
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Bash Script
|
||||||
|
inputs:
|
||||||
|
targetType: inline
|
||||||
|
script: cd dictation_client && npm run build
|
||||||
|
- task: AzureStaticWebApp@0
|
||||||
|
displayName: 'Static Web App: '
|
||||||
|
inputs:
|
||||||
|
app_location: /dictation_client/build
|
||||||
|
config_file_location: /dictation_client
|
||||||
|
skip_app_build: true
|
||||||
|
skip_api_build: true
|
||||||
|
is_static_export: false
|
||||||
|
verbose: false
|
||||||
|
azure_static_web_apps_api_token: $(static_dictation_deployment_token)
|
||||||
|
- job: Job_3
|
||||||
|
displayName: DB migration
|
||||||
|
dependsOn:
|
||||||
|
- Job_1
|
||||||
|
- Job_2
|
||||||
|
pool:
|
||||||
|
name: odms-deploy-pipeline
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- task: AzureKeyVault@2
|
||||||
|
displayName: 'Azure Key Vault: kv-odms-secret-dev'
|
||||||
|
inputs:
|
||||||
|
ConnectedServiceName: 82047c72-0cfe-43b0-bb2f-cdfd8b165e68
|
||||||
|
KeyVaultName: kv-odms-secret-dev
|
||||||
|
- task: CmdLine@2
|
||||||
|
displayName: migration
|
||||||
|
inputs:
|
||||||
|
script: >2
|
||||||
|
# DB接続情報書き換え
|
||||||
|
sed -i -e "s/DB_NAME/$(db-name)/g" ./dictation_server/db/dbconfig.yml
|
||||||
|
sed -i -e "s/DB_PASS/$(db-pass)/g" ./dictation_server/db/dbconfig.yml
|
||||||
|
sed -i -e "s/DB_USERNAME/$(db-user)/g" ./dictation_server/db/dbconfig.yml
|
||||||
|
sed -i -e "s/DB_PORT/$(db-port)/g" ./dictation_server/db/dbconfig.yml
|
||||||
|
sed -i -e "s/DB_HOST/$(db-host)/g" ./dictation_server/db/dbconfig.yml
|
||||||
|
sql-migrate --version
|
||||||
|
cat ./dictation_server/db/dbconfig.yml
|
||||||
|
# migration実行
|
||||||
|
sql-migrate up -config=./dictation_server/db/dbconfig.yml -env=ci
|
||||||
|
- job: Job_4
|
||||||
|
displayName: Docker Image Clean Up
|
||||||
|
dependsOn: Job_1
|
||||||
|
pool:
|
||||||
|
name: odms-deploy-pipeline
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
clean: true
|
||||||
|
fetchDepth: 1
|
||||||
|
- task: Docker@0
|
||||||
|
displayName: Clean up
|
||||||
|
inputs:
|
||||||
|
action: Run a Docker command
|
||||||
|
imageName: $(Build.Repository.Name)/dictation:latest
|
||||||
|
customCommand: 'image prune -af '
|
||||||
|
...
|
||||||
114
configurations/pipeline/ODMS Staging Deploy.yml
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
# Variable 'static_dictation_deployment_token' was defined in the Variables tab
|
||||||
|
trigger:
|
||||||
|
branches:
|
||||||
|
include:
|
||||||
|
- refs/heads/develop
|
||||||
|
name: $(date:yyyyMMdd)$(rev:.r)
|
||||||
|
jobs:
|
||||||
|
- job: Job_1
|
||||||
|
displayName: Dictation App Service Deploy
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
fetchDepth: 2
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: npm ci
|
||||||
|
inputs:
|
||||||
|
command: ci
|
||||||
|
workingDir: dictation_server
|
||||||
|
verbose: false
|
||||||
|
- task: AzureKeyVault@2
|
||||||
|
displayName: 'Azure Key Vault: kv-odms-secret-stg'
|
||||||
|
enabled: False
|
||||||
|
inputs:
|
||||||
|
ConnectedServiceName: 82047c72-0cfe-43b0-bb2f-cdfd8b165e68
|
||||||
|
KeyVaultName: kv-odms-secret-stg
|
||||||
|
SecretsFilter: token-public-key
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Bash Script (Test)
|
||||||
|
inputs:
|
||||||
|
targetType: inline
|
||||||
|
script: cd dictation_server && npm run test
|
||||||
|
- task: Docker@0
|
||||||
|
displayName: build
|
||||||
|
inputs:
|
||||||
|
azureSubscriptionEndpoint: 827be338-1846-4102-b006-f457c92883d3
|
||||||
|
azureContainerRegistry: '{"loginServer":"crodmsregistrymaintenance.azurecr.io", "id" : "/subscriptions/108fb131-cdca-4729-a2be-e5bd8c0b3ba7/resourceGroups/maintenance-rg/providers/Microsoft.ContainerRegistry/registries/crOdmsRegistryMaintenance"}'
|
||||||
|
dockerFile: DockerfileServerDictation.dockerfile
|
||||||
|
imageName: $(Build.Repository.Name)/staging/dictation:latest
|
||||||
|
- task: Docker@0
|
||||||
|
displayName: Push
|
||||||
|
inputs:
|
||||||
|
azureSubscriptionEndpoint: 827be338-1846-4102-b006-f457c92883d3
|
||||||
|
azureContainerRegistry: '{"loginServer":"crodmsregistrymaintenance.azurecr.io", "id" : "/subscriptions/108fb131-cdca-4729-a2be-e5bd8c0b3ba7/resourceGroups/maintenance-rg/providers/Microsoft.ContainerRegistry/registries/crOdmsRegistryMaintenance"}'
|
||||||
|
action: Push an image
|
||||||
|
imageName: $(Build.Repository.Name)/staging/dictation:latest
|
||||||
|
- job: Job_2
|
||||||
|
displayName: Dictation Static App Service Deploy
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
fetchDepth: 2
|
||||||
|
- task: Npm@1
|
||||||
|
displayName: npm ci
|
||||||
|
inputs:
|
||||||
|
command: ci
|
||||||
|
workingDir: dictation_client
|
||||||
|
verbose: false
|
||||||
|
- task: Bash@3
|
||||||
|
displayName: Bash Script
|
||||||
|
inputs:
|
||||||
|
targetType: inline
|
||||||
|
script: cd dictation_client && cp -f .env.staging .env && npm run build
|
||||||
|
- task: AzureStaticWebApp@0
|
||||||
|
displayName: 'Static Web App: '
|
||||||
|
inputs:
|
||||||
|
app_location: /dictation_client/build
|
||||||
|
config_file_location: /dictation_client
|
||||||
|
skip_app_build: true
|
||||||
|
skip_api_build: true
|
||||||
|
is_static_export: false
|
||||||
|
verbose: false
|
||||||
|
azure_static_web_apps_api_token: $(static_dictation_deployment_token)
|
||||||
|
- job: Job_3
|
||||||
|
displayName: DB migration
|
||||||
|
dependsOn:
|
||||||
|
- Job_1
|
||||||
|
- Job_2
|
||||||
|
pool:
|
||||||
|
name: db-migrate-pipelines
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
fetchDepth: 2
|
||||||
|
- task: GoTool@0
|
||||||
|
displayName: Use Go 1.18
|
||||||
|
inputs:
|
||||||
|
version: 1.18
|
||||||
|
- task: Go@0
|
||||||
|
displayName: go install
|
||||||
|
inputs:
|
||||||
|
command: custom
|
||||||
|
customCommand: install
|
||||||
|
arguments: github.com/rubenv/sql-migrate/sql-migrate@latest
|
||||||
|
- task: AzureKeyVault@2
|
||||||
|
displayName: 'Azure Key Vault: kv-odms-secret-stg'
|
||||||
|
inputs:
|
||||||
|
ConnectedServiceName: 82047c72-0cfe-43b0-bb2f-cdfd8b165e68
|
||||||
|
KeyVaultName: kv-odms-secret-stg
|
||||||
|
- task: CmdLine@2
|
||||||
|
displayName: migration
|
||||||
|
inputs:
|
||||||
|
script: >2
|
||||||
|
# DB接続情報書き換え
|
||||||
|
sed -i -e "s/DB_NAME/$(db-name)/g" ./dictation_server/db/dbconfig.yml
|
||||||
|
sed -i -e "s/DB_PASS/$(db-pass)/g" ./dictation_server/db/dbconfig.yml
|
||||||
|
sed -i -e "s/DB_USERNAME/$(db-user)/g" ./dictation_server/db/dbconfig.yml
|
||||||
|
sed -i -e "s/DB_PORT/$(db-port)/g" ./dictation_server/db/dbconfig.yml
|
||||||
|
sed -i -e "s/DB_HOST/$(db-host)/g" ./dictation_server/db/dbconfig.yml
|
||||||
|
/home/azureuser/go/bin/sql-migrate --version
|
||||||
|
cat ./dictation_server/db/dbconfig.yml
|
||||||
|
# migration実行
|
||||||
|
/home/azureuser/go/bin/sql-migrate up -config=dictation_server/db/dbconfig.yml -env=ci
|
||||||
|
...
|
||||||
4
db/conf/my.cnf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[mysqld]
|
||||||
|
default_authentication_plugin=mysql_native_password
|
||||||
|
character-set-server=utf8mb4
|
||||||
|
collation-server=utf8mb4_0900_ai_ci
|
||||||
3
db/init/create_shema.sql
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
CREATE DATABASE IF NOT EXISTS omds_test;
|
||||||
|
CREATE USER IF NOT EXISTS omdsdbuser@'%' IDENTIFIED BY 'omdsdbpass';
|
||||||
|
GRANT ALL PRIVILEGES ON omds_test.* TO omdsdbuser@'%';
|
||||||
32
dictation_client/.devcontainer/Dockerfile
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
FROM node:18.13.0-buster
|
||||||
|
|
||||||
|
RUN /bin/cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
|
||||||
|
echo "Asia/Tokyo" > /etc/timezone
|
||||||
|
|
||||||
|
# Options for setup script
|
||||||
|
ARG INSTALL_ZSH="true"
|
||||||
|
ARG UPGRADE_PACKAGES="false"
|
||||||
|
ARG USERNAME=vscode
|
||||||
|
# 1000 はnodeで使われているためずらす
|
||||||
|
ARG USER_UID=1001
|
||||||
|
ARG USER_GID=$USER_UID
|
||||||
|
|
||||||
|
# Install needed packages and setup non-root user. Use a separate RUN statement to add your own dependencies.
|
||||||
|
COPY library-scripts/common-debian.sh /tmp/library-scripts/
|
||||||
|
RUN bash /tmp/library-scripts/common-debian.sh "${INSTALL_ZSH}" "${USERNAME}" "${USER_UID}" "${USER_GID}" "${UPGRADE_PACKAGES}" \
|
||||||
|
&& apt-get install default-jre -y \
|
||||||
|
&& apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts
|
||||||
|
|
||||||
|
# Install mob
|
||||||
|
RUN curl -sL install.mob.sh | sh
|
||||||
|
|
||||||
|
# 以下 ユーザー権限で実施
|
||||||
|
USER $USERNAME
|
||||||
|
|
||||||
|
# copy init-script
|
||||||
|
COPY --chown=$USERNAME:$USERNAME init.sh /home/${USERNAME}/
|
||||||
|
RUN chmod +x /home/${USERNAME}/init.sh
|
||||||
|
|
||||||
|
# 初期化を行う
|
||||||
|
# node imageのデフォルトENTRYPOINTが邪魔するため上書き
|
||||||
|
ENTRYPOINT /home/vscode/init.sh
|
||||||
49
dictation_client/.devcontainer/devcontainer.json
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
|
||||||
|
// https://github.com/microsoft/vscode-dev-containers/tree/v0.137.0/containers/go
|
||||||
|
{
|
||||||
|
"name": "Dev Dictation Client",
|
||||||
|
"dockerComposeFile": [
|
||||||
|
"./docker-compose.yml"
|
||||||
|
],
|
||||||
|
"service": "dictation_client",
|
||||||
|
// コンテナを自動停止させない
|
||||||
|
"shutdownAction": "none",
|
||||||
|
"workspaceFolder": "/app/dictation_client",
|
||||||
|
"runArgs": [
|
||||||
|
"--cap-add=SYS_PTRACE",
|
||||||
|
"--security-opt",
|
||||||
|
"seccomp=unconfined"
|
||||||
|
],
|
||||||
|
// Set *default* container specific settings.json values on container create.
|
||||||
|
"settings": {
|
||||||
|
"terminal.integrated.shell.linux": "/bin/bash",
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": true, // eslint
|
||||||
|
"source.fixAll.stylelint": true // Stylelint
|
||||||
|
},
|
||||||
|
// formatter
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode", // デフォルトフォーマッターをPrettier
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.formatOnPaste": true,
|
||||||
|
"editor.formatOnType": true,
|
||||||
|
"editor.renderWhitespace": "all",
|
||||||
|
"editor.insertSpaces": false,
|
||||||
|
"editor.renderLineHighlight": "all"
|
||||||
|
},
|
||||||
|
// Add the IDs of extensions you want installed when the container is created.
|
||||||
|
"extensions": [
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"salbert.comment-ts",
|
||||||
|
"gruntfuggly.todo-tree",
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"ms-vsliveshare.vsliveshare",
|
||||||
|
"albymor.increment-selection",
|
||||||
|
"eamodio.gitlens",
|
||||||
|
"wmaurer.change-case"
|
||||||
|
],
|
||||||
|
// Use 'postCreateCommand' to run commands after the container is created.
|
||||||
|
// "postCreateCommand": "yarn install",
|
||||||
|
"postCreateCommand": "sudo chown -R vscode:vscode /app/dictation_client",
|
||||||
|
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
|
||||||
|
"remoteUser": "vscode"
|
||||||
|
}
|
||||||
21
dictation_client/.devcontainer/docker-compose.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
dictation_client:
|
||||||
|
build: .
|
||||||
|
working_dir: /app/dictation_client
|
||||||
|
ports:
|
||||||
|
- "3001:3001"
|
||||||
|
- "6007:6007"
|
||||||
|
volumes:
|
||||||
|
- ../../:/app
|
||||||
|
- node_modules:/app/dictation_client/node_modules
|
||||||
|
expose:
|
||||||
|
- "3001"
|
||||||
|
- "6007"
|
||||||
|
environment:
|
||||||
|
- CHOKIDAR_USEPOLLING=true
|
||||||
|
|
||||||
|
# Data Volume として永続化する
|
||||||
|
volumes:
|
||||||
|
node_modules:
|
||||||
22
dictation_client/.devcontainer/init.sh
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Init Script for client Container
|
||||||
|
#
|
||||||
|
|
||||||
|
echo [init.sh] dictation_client initialize.
|
||||||
|
|
||||||
|
# /app の権限がデフォルトでは node ユーザーになっているため、
|
||||||
|
# 権限確認し、vscode ユーザでない場合付け替える
|
||||||
|
ls -ld /app | grep vscode
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo [init.sh] change /app owner to vscode.
|
||||||
|
sudo chown -R vscode:vscode /app
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd /app/dictation_client
|
||||||
|
echo [init.sh] \"npm ci\" start.
|
||||||
|
npm ci
|
||||||
|
|
||||||
|
echo [init.sh] initialize completed!
|
||||||
|
|
||||||
|
sleep infinity
|
||||||
190
dictation_client/.devcontainer/library-scripts/common-debian.sh
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#-------------------------------------------------------------------------------------------------------------
|
||||||
|
# Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
|
||||||
|
#-------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Syntax: ./common-debian.sh [install zsh flag] [username] [user UID] [user GID] [upgrade packages flag]
|
||||||
|
|
||||||
|
INSTALL_ZSH=${1:-"true"}
|
||||||
|
USERNAME=${2:-"vscode"}
|
||||||
|
USER_UID=${3:-1000}
|
||||||
|
USER_GID=${4:-1000}
|
||||||
|
UPGRADE_PACKAGES=${5:-"true"}
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$(id -u)" -ne 0 ]; then
|
||||||
|
echo -e 'Script must be run a root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Treat a user name of "none" as root
|
||||||
|
if [ "${USERNAME}" = "none" ] || [ "${USERNAME}" = "root" ]; then
|
||||||
|
USERNAME=root
|
||||||
|
USER_UID=0
|
||||||
|
USER_GID=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Load markers to see which steps have already run
|
||||||
|
MARKER_FILE="/usr/local/etc/vscode-dev-containers/common"
|
||||||
|
if [ -f "${MARKER_FILE}" ]; then
|
||||||
|
echo "Marker file found:"
|
||||||
|
cat "${MARKER_FILE}"
|
||||||
|
source "${MARKER_FILE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure apt is in non-interactive to avoid prompts
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
# Function to call apt-get if needed
|
||||||
|
apt-get-update-if-needed()
|
||||||
|
{
|
||||||
|
if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then
|
||||||
|
echo "Running apt-get update..."
|
||||||
|
apt-get update
|
||||||
|
else
|
||||||
|
echo "Skipping apt-get update."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run install apt-utils to avoid debconf warning then verify presence of other common developer tools and dependencies
|
||||||
|
if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
||||||
|
apt-get-update-if-needed
|
||||||
|
|
||||||
|
PACKAGE_LIST="apt-utils \
|
||||||
|
git \
|
||||||
|
openssh-client \
|
||||||
|
less \
|
||||||
|
iproute2 \
|
||||||
|
procps \
|
||||||
|
curl \
|
||||||
|
wget \
|
||||||
|
unzip \
|
||||||
|
zip \
|
||||||
|
nano \
|
||||||
|
jq \
|
||||||
|
lsb-release \
|
||||||
|
ca-certificates \
|
||||||
|
apt-transport-https \
|
||||||
|
dialog \
|
||||||
|
gnupg2 \
|
||||||
|
libc6 \
|
||||||
|
libgcc1 \
|
||||||
|
libgssapi-krb5-2 \
|
||||||
|
libicu[0-9][0-9] \
|
||||||
|
liblttng-ust0 \
|
||||||
|
libstdc++6 \
|
||||||
|
zlib1g \
|
||||||
|
locales \
|
||||||
|
sudo"
|
||||||
|
|
||||||
|
# Install libssl1.1 if available
|
||||||
|
if [[ ! -z $(apt-cache --names-only search ^libssl1.1$) ]]; then
|
||||||
|
PACKAGE_LIST="${PACKAGE_LIST} libssl1.1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install appropriate version of libssl1.0.x if available
|
||||||
|
LIBSSL=$(dpkg-query -f '${db:Status-Abbrev}\t${binary:Package}\n' -W 'libssl1\.0\.?' 2>&1 || echo '')
|
||||||
|
if [ "$(echo "$LIBSSL" | grep -o 'libssl1\.0\.[0-9]:' | uniq | sort | wc -l)" -eq 0 ]; then
|
||||||
|
if [[ ! -z $(apt-cache --names-only search ^libssl1.0.2$) ]]; then
|
||||||
|
# Debian 9
|
||||||
|
PACKAGE_LIST="${PACKAGE_LIST} libssl1.0.2"
|
||||||
|
elif [[ ! -z $(apt-cache --names-only search ^libssl1.0.0$) ]]; then
|
||||||
|
# Ubuntu 18.04, 16.04, earlier
|
||||||
|
PACKAGE_LIST="${PACKAGE_LIST} libssl1.0.0"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Packages to verify are installed: ${PACKAGE_LIST}"
|
||||||
|
apt-get -y install --no-install-recommends ${PACKAGE_LIST} 2> >( grep -v 'debconf: delaying package configuration, since apt-utils is not installed' >&2 )
|
||||||
|
|
||||||
|
PACKAGES_ALREADY_INSTALLED="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get to latest versions of all packages
|
||||||
|
if [ "${UPGRADE_PACKAGES}" = "true" ]; then
|
||||||
|
apt-get-update-if-needed
|
||||||
|
apt-get -y upgrade --no-install-recommends
|
||||||
|
apt-get autoremove -y
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure at least the en_US.UTF-8 UTF-8 locale is available.
|
||||||
|
# Common need for both applications and things like the agnoster ZSH theme.
|
||||||
|
if [ "${LOCALE_ALREADY_SET}" != "true" ]; then
|
||||||
|
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
|
||||||
|
locale-gen
|
||||||
|
LOCALE_ALREADY_SET="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create or update a non-root user to match UID/GID - see https://aka.ms/vscode-remote/containers/non-root-user.
|
||||||
|
if id -u $USERNAME > /dev/null 2>&1; then
|
||||||
|
# User exists, update if needed
|
||||||
|
if [ "$USER_GID" != "$(id -G $USERNAME)" ]; then
|
||||||
|
groupmod --gid $USER_GID $USERNAME
|
||||||
|
usermod --gid $USER_GID $USERNAME
|
||||||
|
fi
|
||||||
|
if [ "$USER_UID" != "$(id -u $USERNAME)" ]; then
|
||||||
|
usermod --uid $USER_UID $USERNAME
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Create user
|
||||||
|
groupadd --gid $USER_GID $USERNAME
|
||||||
|
useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add add sudo support for non-root user
|
||||||
|
if [ "${USERNAME}" != "root" ] && [ "${EXISTING_NON_ROOT_USER}" != "${USERNAME}" ]; then
|
||||||
|
echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME
|
||||||
|
chmod 0440 /etc/sudoers.d/$USERNAME
|
||||||
|
EXISTING_NON_ROOT_USER="${USERNAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# .bashrc/.zshrc snippet
|
||||||
|
RC_SNIPPET="$(cat << EOF
|
||||||
|
export USER=\$(whoami)
|
||||||
|
|
||||||
|
export PATH=\$PATH:\$HOME/.local/bin
|
||||||
|
|
||||||
|
if [[ \$(which code-insiders 2>&1) && ! \$(which code 2>&1) ]]; then
|
||||||
|
alias code=code-insiders
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
)"
|
||||||
|
|
||||||
|
# Ensure ~/.local/bin is in the PATH for root and non-root users for bash. (zsh is later)
|
||||||
|
if [ "${RC_SNIPPET_ALREADY_ADDED}" != "true" ]; then
|
||||||
|
echo "${RC_SNIPPET}" | tee -a /root/.bashrc >> /etc/skel/.bashrc
|
||||||
|
if [ "${USERNAME}" != "root" ]; then
|
||||||
|
echo "${RC_SNIPPET}" >> /home/$USERNAME/.bashrc
|
||||||
|
chown $USER_UID:$USER_GID /home/$USERNAME/.bashrc
|
||||||
|
fi
|
||||||
|
RC_SNIPPET_ALREADY_ADDED="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Optionally install and configure zsh
|
||||||
|
if [ "${INSTALL_ZSH}" = "true" ] && [ ! -d "/root/.oh-my-zsh" ] && [ "${ZSH_ALREADY_INSTALLED}" != "true" ]; then
|
||||||
|
apt-get-update-if-needed
|
||||||
|
apt-get install -y zsh
|
||||||
|
curl -fsSLo- https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh | bash 2>&1
|
||||||
|
echo -e "${RC_SNIPPET}\nDEFAULT_USER=\$USER\nprompt_context(){}" >> /root/.zshrc
|
||||||
|
cp -fR /root/.oh-my-zsh /etc/skel
|
||||||
|
cp -f /root/.zshrc /etc/skel
|
||||||
|
sed -i -e "s/\/root\/.oh-my-zsh/\/home\/\$(whoami)\/.oh-my-zsh/g" /etc/skel/.zshrc
|
||||||
|
if [ "${USERNAME}" != "root" ]; then
|
||||||
|
cp -fR /etc/skel/.oh-my-zsh /etc/skel/.zshrc /home/$USERNAME
|
||||||
|
chown -R $USER_UID:$USER_GID /home/$USERNAME/.oh-my-zsh /home/$USERNAME/.zshrc
|
||||||
|
fi
|
||||||
|
ZSH_ALREADY_INSTALLED="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Write marker file
|
||||||
|
mkdir -p "$(dirname "${MARKER_FILE}")"
|
||||||
|
echo -e "\
|
||||||
|
PACKAGES_ALREADY_INSTALLED=${PACKAGES_ALREADY_INSTALLED}\n\
|
||||||
|
LOCALE_ALREADY_SET=${LOCALE_ALREADY_SET}\n\
|
||||||
|
EXISTING_NON_ROOT_USER=${EXISTING_NON_ROOT_USER}\n\
|
||||||
|
RC_SNIPPET_ALREADY_ADDED=${RC_SNIPPET_ALREADY_ADDED}\n\
|
||||||
|
ZSH_ALREADY_INSTALLED=${ZSH_ALREADY_INSTALLED}" > "${MARKER_FILE}"
|
||||||
|
|
||||||
|
echo "Done!"
|
||||||
5
dictation_client/.env
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
VITE_STAGE=develop
|
||||||
|
VITE_B2C_CLIENTID=5eb34cba-84b6-46f9-a0ea-bc5c41157d63
|
||||||
|
VITE_B2C_AUTHORITY=https://adb2codmsdev.b2clogin.com/adb2codmsdev.onmicrosoft.com/b2c_1_signin_dev
|
||||||
|
VITE_B2C_KNOWNAUTHORITIES=adb2codmsdev.b2clogin.com
|
||||||
|
VITE_DESK_TOP_APP_SCHEME=odms-desktopapp
|
||||||
5
dictation_client/.env.local.example
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
VITE_STAGE=local
|
||||||
|
VITE_B2C_CLIENTID=XXXX-XXXX-XXXXX-XXXX
|
||||||
|
VITE_B2C_AUTHORITY=https://adb2XXXX.XXXX.com/adb2XXXX.onmicrosoft.com/XXXX
|
||||||
|
VITE_B2C_KNOWNAUTHORITIES=adb2cXXXX.XXXx.com
|
||||||
|
VITE_DESK_TOP_APP_SCHEME=odms-desktopapp
|
||||||
5
dictation_client/.env.staging
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
VITE_STAGE=staging
|
||||||
|
VITE_B2C_CLIENTID=5d8f0db9-4506-41d6-a5bb-5ec39f6eba8d
|
||||||
|
VITE_B2C_AUTHORITY=https://adb2codmsstg.b2clogin.com/adb2codmsstg.onmicrosoft.com/b2c_1_signin_stg
|
||||||
|
VITE_B2C_KNOWNAUTHORITIES=adb2codmsstg.b2clogin.com
|
||||||
|
VITE_DESK_TOP_APP_SCHEME=odms-desktopapp
|
||||||
9
dictation_client/.eslintignore
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
node_modules/
|
||||||
|
build/
|
||||||
|
.eslintrc.js
|
||||||
|
jest.config.js
|
||||||
|
vite.config.ts
|
||||||
|
.env.local
|
||||||
|
|
||||||
|
# デザイナのcssから生成するため除外
|
||||||
|
src/styles/app.module.scss.d.ts
|
||||||
150
dictation_client/.eslintrc.js
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
module.exports = {
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
},
|
||||||
|
extends: [
|
||||||
|
"airbnb",
|
||||||
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
"plugin:react/recommended",
|
||||||
|
"prettier",
|
||||||
|
],
|
||||||
|
parser: "@typescript-eslint/parser",
|
||||||
|
parserOptions: {
|
||||||
|
project: "./tsconfig.json",
|
||||||
|
ecmaFeatures: {
|
||||||
|
jsx: true,
|
||||||
|
},
|
||||||
|
ecmaVersion: 12,
|
||||||
|
sourceType: "module",
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
"react",
|
||||||
|
"@typescript-eslint",
|
||||||
|
"prettier",
|
||||||
|
"react-hooks",
|
||||||
|
"prefer-arrow",
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
"react/jsx-uses-react": "off",
|
||||||
|
"react/react-in-jsx-scope": "off",
|
||||||
|
"react/function-component-definition": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
namedComponents: "arrow-function",
|
||||||
|
unnamedComponents: "arrow-function",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"react/jsx-filename-extension": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
extensions: ["jsx", "tsx"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"import/extensions": [
|
||||||
|
"error",
|
||||||
|
"ignorePackages",
|
||||||
|
{
|
||||||
|
js: "never",
|
||||||
|
jsx: "never",
|
||||||
|
ts: "never",
|
||||||
|
tsx: "never",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"import/no-unresolved": "off",
|
||||||
|
"import/prefer-default-export": "off",
|
||||||
|
"no-use-before-define": 0,
|
||||||
|
"prettier/prettier": "error",
|
||||||
|
"no-param-reassign": 0,
|
||||||
|
"@typescript-eslint/no-use-before-define": "off",
|
||||||
|
"@typescript-eslint/prefer-interface": "off",
|
||||||
|
"@typescript-eslint/indent": "off",
|
||||||
|
"react-hooks/rules-of-hooks": "error",
|
||||||
|
// Checks rules of Hooks
|
||||||
|
"react-hooks/exhaustive-deps": "warn",
|
||||||
|
// Checks effect dependencies
|
||||||
|
"import/no-extraneous-dependencies": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
devDependencies: [
|
||||||
|
"**/*.test.js",
|
||||||
|
"**/*.spec.js",
|
||||||
|
"**/*.test.ts",
|
||||||
|
"**/*.spec.ts",
|
||||||
|
"**/*.test.tsx",
|
||||||
|
"**/*.spec.tsx",
|
||||||
|
"**/setupTests.ts",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
camelcase: "off",
|
||||||
|
"prefer-arrow/prefer-arrow-functions": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
disallowPrototype: true,
|
||||||
|
singleReturnOnly: false,
|
||||||
|
classPropertiesAllowed: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"func-style": [
|
||||||
|
"error",
|
||||||
|
"expression",
|
||||||
|
{
|
||||||
|
allowArrowFunctions: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"react/no-multi-comp": ["error"],
|
||||||
|
"react/jsx-pascal-case": ["error"],
|
||||||
|
"@typescript-eslint/naming-convention": [
|
||||||
|
"error", // default config
|
||||||
|
{
|
||||||
|
selector: "default",
|
||||||
|
format: ["camelCase"],
|
||||||
|
leadingUnderscore: "allow",
|
||||||
|
trailingUnderscore: "allow",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
selector: "variable",
|
||||||
|
format: ["camelCase", "UPPER_CASE"],
|
||||||
|
leadingUnderscore: "allow",
|
||||||
|
trailingUnderscore: "allow",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
selector: "typeLike",
|
||||||
|
format: ["PascalCase"],
|
||||||
|
}, // custom config
|
||||||
|
{
|
||||||
|
selector: ["property"],
|
||||||
|
format: ["camelCase", "PascalCase"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
selector: ["variable"],
|
||||||
|
types: ["function"],
|
||||||
|
format: ["camelCase", "PascalCase"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
selector: "interface",
|
||||||
|
format: ["PascalCase"],
|
||||||
|
custom: {
|
||||||
|
regex: "^I[A-Z]",
|
||||||
|
match: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"max-lines": ["error", 3000],
|
||||||
|
"jsx-a11y/anchor-is-valid": "off",
|
||||||
|
},
|
||||||
|
settings: {
|
||||||
|
"import/parsers": {
|
||||||
|
"@typescript-eslint/parser": [".ts", ".tsx"],
|
||||||
|
},
|
||||||
|
"import/resolver": {
|
||||||
|
node: {
|
||||||
|
extensions: [".js", "jsx", ".ts", ".tsx"],
|
||||||
|
paths: ["src"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
react: {
|
||||||
|
version: "detect",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
24
dictation_client/.gitignore
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
/node_modules
|
||||||
|
/.pnp
|
||||||
|
.pnp.js
|
||||||
|
|
||||||
|
# testing
|
||||||
|
/coverage
|
||||||
|
|
||||||
|
# production
|
||||||
|
/build
|
||||||
|
|
||||||
|
# misc
|
||||||
|
.env.local
|
||||||
|
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# credentials
|
||||||
|
credentials
|
||||||
15
dictation_client/.vscode/launch.json
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Chrome",
|
||||||
|
"type": "pwa-chrome",
|
||||||
|
"request": "launch",
|
||||||
|
"port": 9222,
|
||||||
|
"url": "http://localhost:3000",
|
||||||
|
"webRoot": "${workspaceFolder}/src",
|
||||||
|
"trace": true,
|
||||||
|
"sourceMaps": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
38
dictation_client/.vscode/settings.json
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"todo-tree.general.tags": ["TODO", "FIXME", "DEBUG", "XXX"],
|
||||||
|
"todo-tree.highlights.customHighlight": {
|
||||||
|
"TODO": {
|
||||||
|
"foreground": "white",
|
||||||
|
"background": "#ffa500",
|
||||||
|
"iconColour": "green"
|
||||||
|
},
|
||||||
|
"FIXME": {
|
||||||
|
"foreground": "white",
|
||||||
|
"background": "#ff69b4",
|
||||||
|
"iconColour": "yellow"
|
||||||
|
},
|
||||||
|
"DEBUG": {
|
||||||
|
"foreground": "white",
|
||||||
|
"background": "#a52a2a",
|
||||||
|
"icon": "bug",
|
||||||
|
"iconColour": "green"
|
||||||
|
},
|
||||||
|
"XXX": {
|
||||||
|
"foreground": "white",
|
||||||
|
"background": "#ff6347",
|
||||||
|
"icon": "eye-closed",
|
||||||
|
"iconColour": "red"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"debug.javascript.usePreview": false,
|
||||||
|
"editor.copyWithSyntaxHighlighting": false,
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": true,
|
||||||
|
"source.fixAll.stylelint": true
|
||||||
|
},
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.formatOnPaste": true,
|
||||||
|
"editor.formatOnType": true,
|
||||||
|
"prettier.disableLanguages": ["markdown"]
|
||||||
|
}
|
||||||
46
dictation_client/README.md
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# Getting Started with Create React App
|
||||||
|
|
||||||
|
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app), using the [Redux](https://redux.js.org/) and [Redux Toolkit](https://redux-toolkit.js.org/) TS template.
|
||||||
|
|
||||||
|
## Available Scripts
|
||||||
|
|
||||||
|
In the project directory, you can run:
|
||||||
|
|
||||||
|
### `npm start`
|
||||||
|
|
||||||
|
Runs the app in the development mode.\
|
||||||
|
Open [http://localhost:3001](http://localhost:3001) to view it in the browser.
|
||||||
|
|
||||||
|
The page will reload if you make edits.\
|
||||||
|
You will also see any lint errors in the console.
|
||||||
|
|
||||||
|
### `npm test`
|
||||||
|
|
||||||
|
Launches the test runner in the interactive watch mode.\
|
||||||
|
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
|
||||||
|
|
||||||
|
### `npm run build`
|
||||||
|
|
||||||
|
Builds the app for production to the `build` folder.\
|
||||||
|
It correctly bundles React in production mode and optimizes the build for the best performance.
|
||||||
|
|
||||||
|
The build is minified and the filenames include the hashes.\
|
||||||
|
Your app is ready to be deployed!
|
||||||
|
|
||||||
|
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
|
||||||
|
|
||||||
|
### `npm run eject`
|
||||||
|
|
||||||
|
**Note: this is a one-way operation. Once you `eject`, you can’t go back!**
|
||||||
|
|
||||||
|
If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
|
||||||
|
|
||||||
|
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.
|
||||||
|
|
||||||
|
You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.
|
||||||
|
|
||||||
|
## Learn More
|
||||||
|
|
||||||
|
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
|
||||||
|
|
||||||
|
To learn React, check out the [React documentation](https://reactjs.org/).
|
||||||
2
dictation_client/codegen.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
npx openapi-generator-cli version-manager set latest
|
||||||
|
npx openapi-generator-cli generate -g typescript-axios -i /app/dictation_server/src/api/odms/openapi.json -o /app/dictation_client/src/api/
|
||||||
14
dictation_client/index.html
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/src/favicon.svg" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Vite App</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="root"></div>
|
||||||
|
<script type="module" src="/src/main.tsx"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1
dictation_client/localdeploy.sh
Normal file
@ -0,0 +1 @@
|
|||||||
|
cp -r build /app/dictation_server
|
||||||
7
dictation_client/openapitools.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
|
||||||
|
"spaces": 2,
|
||||||
|
"generator-cli": {
|
||||||
|
"version": "6.6.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
11537
dictation_client/package-lock.json
generated
Normal file
99
dictation_client/package.json
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
{
|
||||||
|
"name": "client",
|
||||||
|
"private": true,
|
||||||
|
"version": "0.1.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0.0"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"start": "vite",
|
||||||
|
"build": "tsc && vite build",
|
||||||
|
"build:prod": "tsc && vite build",
|
||||||
|
"build:local": "tsc && vite build && sh localdeploy.sh",
|
||||||
|
"preview": "vite preview",
|
||||||
|
"typecheck": "tsc --noEmit",
|
||||||
|
"codegen": "sh codegen.sh",
|
||||||
|
"lint": "eslint --cache . --ext .js,.ts,.tsx",
|
||||||
|
"lint:fix": "npm run lint -- --fix"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@azure/msal-browser": "^2.33.0",
|
||||||
|
"@azure/msal-react": "^1.5.3",
|
||||||
|
"@reduxjs/toolkit": "^1.8.3",
|
||||||
|
"@testing-library/jest-dom": "^5.16.4",
|
||||||
|
"@testing-library/react": "^13.3.0",
|
||||||
|
"@testing-library/user-event": "^14.2.1",
|
||||||
|
"@types/jest": "^27.5.2",
|
||||||
|
"@types/node": "^17.0.45",
|
||||||
|
"@types/react": "^18.0.14",
|
||||||
|
"@types/react-dom": "^18.0.6",
|
||||||
|
"@types/react-router-dom": "^5.3.3",
|
||||||
|
"@types/redux-mock-store": "^1.0.3",
|
||||||
|
"axios": "^0.27.2",
|
||||||
|
"classnames-generics": "^1.0.9",
|
||||||
|
"eslint-plugin-prefer-arrow": "^1.2.3",
|
||||||
|
"i18next": "^21.10.0",
|
||||||
|
"jwt-decode": "^3.1.2",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
|
"luxon": "^3.3.0",
|
||||||
|
"react": "^18.2.0",
|
||||||
|
"react-dom": "^18.2.0",
|
||||||
|
"react-google-recaptcha-v3": "^1.10.0",
|
||||||
|
"react-i18next": "^11.18.6",
|
||||||
|
"react-paginate": "^8.1.3",
|
||||||
|
"react-redux": "^8.0.2",
|
||||||
|
"react-router-dom": "^6.4.1",
|
||||||
|
"redux-mock-store": "^1.5.4",
|
||||||
|
"redux-thunk": "^2.4.1",
|
||||||
|
"sass": "^1.58.3",
|
||||||
|
"typescript": "^4.7.4",
|
||||||
|
"web-vitals": "^2.1.4"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/core": "^7.18.6",
|
||||||
|
"@mdx-js/react": "^2.1.2",
|
||||||
|
"@openapitools/openapi-generator-cli": "^2.5.2",
|
||||||
|
"@types/lodash": "^4.14.191",
|
||||||
|
"@types/luxon": "^3.2.0",
|
||||||
|
"@types/react": "^18.0.0",
|
||||||
|
"@types/react-dom": "^18.0.0",
|
||||||
|
"@types/redux-mock-store": "^1.0.3",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.30.5",
|
||||||
|
"@typescript-eslint/parser": "^5.30.5",
|
||||||
|
"@vitejs/plugin-react": "^1.3.0",
|
||||||
|
"babel-loader": "^8.2.5",
|
||||||
|
"eslint": "^8.19.0",
|
||||||
|
"eslint-config-airbnb": "^19.0.4",
|
||||||
|
"eslint-config-prettier": "^8.5.0",
|
||||||
|
"eslint-plugin-import": "^2.26.0",
|
||||||
|
"eslint-plugin-jsx-a11y": "^6.6.0",
|
||||||
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
|
"eslint-plugin-react": "^7.30.1",
|
||||||
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
|
"license-checker": "^25.0.1",
|
||||||
|
"prettier": "^2.7.1",
|
||||||
|
"redux-mock-store": "^1.5.4",
|
||||||
|
"sass": "^1.58.3",
|
||||||
|
"typescript": "^4.7.4",
|
||||||
|
"vite": "^4.1.4",
|
||||||
|
"vite-plugin-env-compatible": "^1.1.1",
|
||||||
|
"vite-plugin-sass-dts": "^1.3.1",
|
||||||
|
"vite-tsconfig-paths": "^3.5.0"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"extends": [
|
||||||
|
"react-app",
|
||||||
|
"react-app/jest"
|
||||||
|
],
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"**/*.stories.*"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"import/no-anonymous-default-export": "off"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
75
dictation_client/src/App.tsx
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import AppRouter from "AppRouter";
|
||||||
|
import { BrowserRouter } from "react-router-dom";
|
||||||
|
import { PublicClientApplication } from "@azure/msal-browser";
|
||||||
|
import { MsalProvider, useMsal } from "@azure/msal-react";
|
||||||
|
import { msalConfig } from "common/msalConfig";
|
||||||
|
import { useEffect, useLayoutEffect } from "react";
|
||||||
|
import { useDispatch, useSelector } from "react-redux";
|
||||||
|
import globalAxios, { AxiosError, AxiosResponse } from "axios";
|
||||||
|
import { clearToken } from "features/auth";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import Snackbar from "components/snackbar";
|
||||||
|
import { selectSnackber } from "features/ui/selectors";
|
||||||
|
import { closeSnackbar } from "features/ui/uiSlice";
|
||||||
|
|
||||||
|
const App = (): JSX.Element => {
|
||||||
|
const dispatch = useDispatch();
|
||||||
|
const { instance } = useMsal();
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
|
const [t, i18n] = useTranslation();
|
||||||
|
const pca = new PublicClientApplication(msalConfig);
|
||||||
|
useEffect(() => {
|
||||||
|
const id = globalAxios.interceptors.response.use(
|
||||||
|
(response: AxiosResponse) => response,
|
||||||
|
(e: AxiosError) => {
|
||||||
|
if (e?.response?.status === 401) {
|
||||||
|
dispatch(clearToken());
|
||||||
|
instance.logout({
|
||||||
|
postLogoutRedirectUri: "/?logout=true",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return Promise.reject(e);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
const cleanup = () => {
|
||||||
|
globalAxios.interceptors.response.eject(id);
|
||||||
|
};
|
||||||
|
return cleanup;
|
||||||
|
}, [dispatch, instance]);
|
||||||
|
|
||||||
|
// Language読み取り
|
||||||
|
useLayoutEffect(() => {
|
||||||
|
const language = document.cookie
|
||||||
|
.trim()
|
||||||
|
.split(";")
|
||||||
|
.map((x) => x.split("="))
|
||||||
|
.find((x) => x.length === 2 && x[0] === "language");
|
||||||
|
|
||||||
|
if (language) {
|
||||||
|
i18n.changeLanguage(language[1]);
|
||||||
|
}
|
||||||
|
}, [i18n]);
|
||||||
|
|
||||||
|
const snackbarInfo = useSelector(selectSnackber);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Snackbar
|
||||||
|
isOpen={snackbarInfo.isOpen}
|
||||||
|
level={snackbarInfo.level}
|
||||||
|
message={t(snackbarInfo.message)}
|
||||||
|
duration={snackbarInfo.duration}
|
||||||
|
onClose={() => {
|
||||||
|
dispatch(closeSnackbar());
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<MsalProvider instance={pca}>
|
||||||
|
<BrowserRouter>
|
||||||
|
<AppRouter />
|
||||||
|
</BrowserRouter>
|
||||||
|
</MsalProvider>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default App;
|
||||||
71
dictation_client/src/AppRouter.tsx
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
import { Route, Routes } from "react-router-dom";
|
||||||
|
import TopPage from "pages/TopPage";
|
||||||
|
import LoginPage from "pages/LoginPage";
|
||||||
|
import SamplePage from "pages/SamplePage";
|
||||||
|
import { AuthErrorPage } from "pages/ErrorPage";
|
||||||
|
import { NotFoundPage } from "pages/ErrorPage/notFound";
|
||||||
|
import { RouteAuthGuard } from "components/auth/routeAuthGuard";
|
||||||
|
import SignupPage from "pages/SignupPage";
|
||||||
|
import VerifyPage from "pages/VerifyPage";
|
||||||
|
import UserVerifyPage from "pages/UserVerifyPage";
|
||||||
|
import VerifySuccessPage from "pages/VerifySuccessPage";
|
||||||
|
import VerifyFailedPage from "pages/VerifyFailedPage";
|
||||||
|
import VerifyAlreadyExistPage from "pages/VerifyAlreadyExistPage";
|
||||||
|
import SignupCompletePage from "pages/SignupCompletePage";
|
||||||
|
import UserListPage from "pages/UserListPage";
|
||||||
|
import LicensePage from "pages/LicensePage";
|
||||||
|
import DictationPage from "pages/DictationPage";
|
||||||
|
import PartnerPage from "pages/PartnerPage";
|
||||||
|
|
||||||
|
const AppRouter: React.FC = () => (
|
||||||
|
<Routes>
|
||||||
|
<Route path="/" element={<TopPage />} />
|
||||||
|
<Route path="/login" element={<LoginPage />} />
|
||||||
|
<Route path="/authError" element={<AuthErrorPage />} />
|
||||||
|
<Route
|
||||||
|
path="/signup"
|
||||||
|
element={<SignupPage completeTo="/signup/complete" />}
|
||||||
|
/>
|
||||||
|
<Route path="/signup/complete" element={<SignupCompletePage />} />
|
||||||
|
<Route path="/mail-confirm/" element={<VerifyPage />} />
|
||||||
|
<Route path="/mail-confirm/user" element={<UserVerifyPage />} />
|
||||||
|
<Route path="/mail-confirm/success" element={<VerifySuccessPage />} />
|
||||||
|
<Route path="/mail-confirm/failed" element={<VerifyFailedPage />} />
|
||||||
|
<Route
|
||||||
|
path="/mail-confirm/alreadyExist"
|
||||||
|
element={<VerifyAlreadyExistPage />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="/user"
|
||||||
|
element={<RouteAuthGuard component={<UserListPage />} />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="/license"
|
||||||
|
element={<RouteAuthGuard component={<LicensePage />} />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="/xxx"
|
||||||
|
element={<RouteAuthGuard component={<SamplePage />} />}
|
||||||
|
/>
|
||||||
|
{/* XXX ヘッダーの挙動確認のため仮のページを作成 */}
|
||||||
|
<Route
|
||||||
|
path="/account"
|
||||||
|
element={<RouteAuthGuard component={<SamplePage />} />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="/dictations"
|
||||||
|
element={<RouteAuthGuard component={<DictationPage />} />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="/workflow"
|
||||||
|
element={<RouteAuthGuard component={<SamplePage />} />}
|
||||||
|
/>
|
||||||
|
<Route
|
||||||
|
path="/partners"
|
||||||
|
element={<RouteAuthGuard component={<PartnerPage />} />}
|
||||||
|
/>
|
||||||
|
<Route path="*" element={<NotFoundPage />} />
|
||||||
|
</Routes>
|
||||||
|
);
|
||||||
|
|
||||||
|
export default AppRouter;
|
||||||
4
dictation_client/src/api/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
wwwroot/*.js
|
||||||
|
node_modules
|
||||||
|
typings
|
||||||
|
dist
|
||||||
1
dictation_client/src/api/.npmignore
Normal file
@ -0,0 +1 @@
|
|||||||
|
# empty npmignore to ensure all required files (e.g., in the dist folder) are published by npm
|
||||||
23
dictation_client/src/api/.openapi-generator-ignore
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# OpenAPI Generator Ignore
|
||||||
|
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
|
||||||
|
|
||||||
|
# Use this file to prevent files from being overwritten by the generator.
|
||||||
|
# The patterns follow closely to .gitignore or .dockerignore.
|
||||||
|
|
||||||
|
# As an example, the C# client generator defines ApiClient.cs.
|
||||||
|
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
|
||||||
|
#ApiClient.cs
|
||||||
|
|
||||||
|
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
|
||||||
|
#foo/*/qux
|
||||||
|
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
|
||||||
|
|
||||||
|
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
|
||||||
|
#foo/**/qux
|
||||||
|
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
|
||||||
|
|
||||||
|
# You can also negate patterns with an exclamation (!).
|
||||||
|
# For example, you can ignore all files in a docs folder with the file extension .md:
|
||||||
|
#docs/*.md
|
||||||
|
# Then explicitly reverse the ignore rule for a single file:
|
||||||
|
#!docs/README.md
|
||||||
8
dictation_client/src/api/.openapi-generator/FILES
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
.gitignore
|
||||||
|
.npmignore
|
||||||
|
api.ts
|
||||||
|
base.ts
|
||||||
|
common.ts
|
||||||
|
configuration.ts
|
||||||
|
git_push.sh
|
||||||
|
index.ts
|
||||||
1
dictation_client/src/api/.openapi-generator/VERSION
Normal file
@ -0,0 +1 @@
|
|||||||
|
6.6.0
|
||||||
4113
dictation_client/src/api/api.ts
Normal file
72
dictation_client/src/api/base.ts
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/**
|
||||||
|
* ODMSOpenAPI
|
||||||
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
*
|
||||||
|
* The version of the OpenAPI document: 1.0.0
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||||
|
* https://openapi-generator.tech
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
import type { Configuration } from './configuration';
|
||||||
|
// Some imports not used depending on template conditions
|
||||||
|
// @ts-ignore
|
||||||
|
import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios';
|
||||||
|
import globalAxios from 'axios';
|
||||||
|
|
||||||
|
export const BASE_PATH = "http://localhost".replace(/\/+$/, "");
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const COLLECTION_FORMATS = {
|
||||||
|
csv: ",",
|
||||||
|
ssv: " ",
|
||||||
|
tsv: "\t",
|
||||||
|
pipes: "|",
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @interface RequestArgs
|
||||||
|
*/
|
||||||
|
export interface RequestArgs {
|
||||||
|
url: string;
|
||||||
|
options: AxiosRequestConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @class BaseAPI
|
||||||
|
*/
|
||||||
|
export class BaseAPI {
|
||||||
|
protected configuration: Configuration | undefined;
|
||||||
|
|
||||||
|
constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) {
|
||||||
|
if (configuration) {
|
||||||
|
this.configuration = configuration;
|
||||||
|
this.basePath = configuration.basePath || this.basePath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @class RequiredError
|
||||||
|
* @extends {Error}
|
||||||
|
*/
|
||||||
|
export class RequiredError extends Error {
|
||||||
|
constructor(public field: string, msg?: string) {
|
||||||
|
super(msg);
|
||||||
|
this.name = "RequiredError"
|
||||||
|
}
|
||||||
|
}
|
||||||
150
dictation_client/src/api/common.ts
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/**
|
||||||
|
* ODMSOpenAPI
|
||||||
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
*
|
||||||
|
* The version of the OpenAPI document: 1.0.0
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||||
|
* https://openapi-generator.tech
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
import type { Configuration } from "./configuration";
|
||||||
|
import type { RequestArgs } from "./base";
|
||||||
|
import type { AxiosInstance, AxiosResponse } from 'axios';
|
||||||
|
import { RequiredError } from "./base";
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const DUMMY_BASE_URL = 'https://example.com'
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @throws {RequiredError}
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const assertParamExists = function (functionName: string, paramName: string, paramValue: unknown) {
|
||||||
|
if (paramValue === null || paramValue === undefined) {
|
||||||
|
throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) {
|
||||||
|
if (configuration && configuration.apiKey) {
|
||||||
|
const localVarApiKeyValue = typeof configuration.apiKey === 'function'
|
||||||
|
? await configuration.apiKey(keyParamName)
|
||||||
|
: await configuration.apiKey;
|
||||||
|
object[keyParamName] = localVarApiKeyValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const setBasicAuthToObject = function (object: any, configuration?: Configuration) {
|
||||||
|
if (configuration && (configuration.username || configuration.password)) {
|
||||||
|
object["auth"] = { username: configuration.username, password: configuration.password };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) {
|
||||||
|
if (configuration && configuration.accessToken) {
|
||||||
|
const accessToken = typeof configuration.accessToken === 'function'
|
||||||
|
? await configuration.accessToken()
|
||||||
|
: await configuration.accessToken;
|
||||||
|
object["Authorization"] = "Bearer " + accessToken;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) {
|
||||||
|
if (configuration && configuration.accessToken) {
|
||||||
|
const localVarAccessTokenValue = typeof configuration.accessToken === 'function'
|
||||||
|
? await configuration.accessToken(name, scopes)
|
||||||
|
: await configuration.accessToken;
|
||||||
|
object["Authorization"] = "Bearer " + localVarAccessTokenValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setFlattenedQueryParams(urlSearchParams: URLSearchParams, parameter: any, key: string = ""): void {
|
||||||
|
if (parameter == null) return;
|
||||||
|
if (typeof parameter === "object") {
|
||||||
|
if (Array.isArray(parameter)) {
|
||||||
|
(parameter as any[]).forEach(item => setFlattenedQueryParams(urlSearchParams, item, key));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Object.keys(parameter).forEach(currentKey =>
|
||||||
|
setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (urlSearchParams.has(key)) {
|
||||||
|
urlSearchParams.append(key, parameter);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
urlSearchParams.set(key, parameter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const setSearchParams = function (url: URL, ...objects: any[]) {
|
||||||
|
const searchParams = new URLSearchParams(url.search);
|
||||||
|
setFlattenedQueryParams(searchParams, objects);
|
||||||
|
url.search = searchParams.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const serializeDataIfNeeded = function (value: any, requestOptions: any, configuration?: Configuration) {
|
||||||
|
const nonString = typeof value !== 'string';
|
||||||
|
const needsSerialization = nonString && configuration && configuration.isJsonMime
|
||||||
|
? configuration.isJsonMime(requestOptions.headers['Content-Type'])
|
||||||
|
: nonString;
|
||||||
|
return needsSerialization
|
||||||
|
? JSON.stringify(value !== undefined ? value : {})
|
||||||
|
: (value || "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const toPathString = function (url: URL) {
|
||||||
|
return url.pathname + url.search + url.hash
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
*/
|
||||||
|
export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) {
|
||||||
|
return <T = unknown, R = AxiosResponse<T>>(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||||
|
const axiosRequestArgs = {...axiosArgs.options, url: (configuration?.basePath || basePath) + axiosArgs.url};
|
||||||
|
return axios.request<T, R>(axiosRequestArgs);
|
||||||
|
};
|
||||||
|
}
|
||||||
101
dictation_client/src/api/configuration.ts
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/**
|
||||||
|
* ODMSOpenAPI
|
||||||
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
*
|
||||||
|
* The version of the OpenAPI document: 1.0.0
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||||
|
* https://openapi-generator.tech
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
export interface ConfigurationParameters {
|
||||||
|
apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
|
||||||
|
username?: string;
|
||||||
|
password?: string;
|
||||||
|
accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
|
||||||
|
basePath?: string;
|
||||||
|
baseOptions?: any;
|
||||||
|
formDataCtor?: new () => any;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Configuration {
|
||||||
|
/**
|
||||||
|
* parameter for apiKey security
|
||||||
|
* @param name security name
|
||||||
|
* @memberof Configuration
|
||||||
|
*/
|
||||||
|
apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
|
||||||
|
/**
|
||||||
|
* parameter for basic security
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof Configuration
|
||||||
|
*/
|
||||||
|
username?: string;
|
||||||
|
/**
|
||||||
|
* parameter for basic security
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof Configuration
|
||||||
|
*/
|
||||||
|
password?: string;
|
||||||
|
/**
|
||||||
|
* parameter for oauth2 security
|
||||||
|
* @param name security name
|
||||||
|
* @param scopes oauth2 scope
|
||||||
|
* @memberof Configuration
|
||||||
|
*/
|
||||||
|
accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
|
||||||
|
/**
|
||||||
|
* override base path
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof Configuration
|
||||||
|
*/
|
||||||
|
basePath?: string;
|
||||||
|
/**
|
||||||
|
* base options for axios calls
|
||||||
|
*
|
||||||
|
* @type {any}
|
||||||
|
* @memberof Configuration
|
||||||
|
*/
|
||||||
|
baseOptions?: any;
|
||||||
|
/**
|
||||||
|
* The FormData constructor that will be used to create multipart form data
|
||||||
|
* requests. You can inject this here so that execution environments that
|
||||||
|
* do not support the FormData class can still run the generated client.
|
||||||
|
*
|
||||||
|
* @type {new () => FormData}
|
||||||
|
*/
|
||||||
|
formDataCtor?: new () => any;
|
||||||
|
|
||||||
|
constructor(param: ConfigurationParameters = {}) {
|
||||||
|
this.apiKey = param.apiKey;
|
||||||
|
this.username = param.username;
|
||||||
|
this.password = param.password;
|
||||||
|
this.accessToken = param.accessToken;
|
||||||
|
this.basePath = param.basePath;
|
||||||
|
this.baseOptions = param.baseOptions;
|
||||||
|
this.formDataCtor = param.formDataCtor;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given MIME is a JSON MIME.
|
||||||
|
* JSON MIME examples:
|
||||||
|
* application/json
|
||||||
|
* application/json; charset=UTF8
|
||||||
|
* APPLICATION/JSON
|
||||||
|
* application/vnd.company+json
|
||||||
|
* @param mime - MIME (Multipurpose Internet Mail Extensions)
|
||||||
|
* @return True if the given MIME is JSON, false otherwise.
|
||||||
|
*/
|
||||||
|
public isJsonMime(mime: string): boolean {
|
||||||
|
const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i');
|
||||||
|
return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');
|
||||||
|
}
|
||||||
|
}
|
||||||
57
dictation_client/src/api/git_push.sh
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
|
||||||
|
#
|
||||||
|
# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
|
||||||
|
|
||||||
|
git_user_id=$1
|
||||||
|
git_repo_id=$2
|
||||||
|
release_note=$3
|
||||||
|
git_host=$4
|
||||||
|
|
||||||
|
if [ "$git_host" = "" ]; then
|
||||||
|
git_host="github.com"
|
||||||
|
echo "[INFO] No command line input provided. Set \$git_host to $git_host"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$git_user_id" = "" ]; then
|
||||||
|
git_user_id="GIT_USER_ID"
|
||||||
|
echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$git_repo_id" = "" ]; then
|
||||||
|
git_repo_id="GIT_REPO_ID"
|
||||||
|
echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$release_note" = "" ]; then
|
||||||
|
release_note="Minor update"
|
||||||
|
echo "[INFO] No command line input provided. Set \$release_note to $release_note"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Initialize the local directory as a Git repository
|
||||||
|
git init
|
||||||
|
|
||||||
|
# Adds the files in the local repository and stages them for commit.
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Commits the tracked changes and prepares them to be pushed to a remote repository.
|
||||||
|
git commit -m "$release_note"
|
||||||
|
|
||||||
|
# Sets the new remote
|
||||||
|
git_remote=$(git remote)
|
||||||
|
if [ "$git_remote" = "" ]; then # git remote not defined
|
||||||
|
|
||||||
|
if [ "$GIT_TOKEN" = "" ]; then
|
||||||
|
echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
|
||||||
|
git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
|
||||||
|
else
|
||||||
|
git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
git pull origin master
|
||||||
|
|
||||||
|
# Pushes (Forces) the changes in the local repository up to the remote repository
|
||||||
|
echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
|
||||||
|
git push origin master 2>&1 | grep -v 'To https'
|
||||||
18
dictation_client/src/api/index.ts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/* tslint:disable */
|
||||||
|
/* eslint-disable */
|
||||||
|
/**
|
||||||
|
* ODMSOpenAPI
|
||||||
|
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
||||||
|
*
|
||||||
|
* The version of the OpenAPI document: 1.0.0
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||||
|
* https://openapi-generator.tech
|
||||||
|
* Do not edit the class manually.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
export * from "./api";
|
||||||
|
export * from "./configuration";
|
||||||
|
|
||||||
44
dictation_client/src/app/store.ts
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import { configureStore, ThunkAction, Action } from "@reduxjs/toolkit";
|
||||||
|
import login from "features/login/loginSlice";
|
||||||
|
import auth from "features/auth/authSlice";
|
||||||
|
import signup from "features/signup/signupSlice";
|
||||||
|
import verify from "features/verify/verifySlice";
|
||||||
|
import ui from "features/ui/uiSlice";
|
||||||
|
import user from "features/user/userSlice";
|
||||||
|
import license from "features/license/licenseOrder/licenseSlice";
|
||||||
|
import licenseCardIssue from "features/license/licenseCardIssue/licenseCardIssueSlice";
|
||||||
|
import licenseCardActivate from "features/license/licenseCardActivate/licenseCardActivateSlice";
|
||||||
|
import licenseSummary from "features/license/licenseSummary/licenseSummarySlice";
|
||||||
|
import partnerLicense from "features/license/partnerLicense/partnerLicenseSlice";
|
||||||
|
import dictation from "features/dictation/dictationSlice";
|
||||||
|
import partner from "features/partner/partnerSlice";
|
||||||
|
import licenseOrderHistory from "features/license/licenseOrderHistory/licenseOrderHistorySlice";
|
||||||
|
|
||||||
|
export const store = configureStore({
|
||||||
|
reducer: {
|
||||||
|
login,
|
||||||
|
auth,
|
||||||
|
signup,
|
||||||
|
verify,
|
||||||
|
ui,
|
||||||
|
user,
|
||||||
|
license,
|
||||||
|
licenseCardIssue,
|
||||||
|
licenseCardActivate,
|
||||||
|
licenseSummary,
|
||||||
|
licenseOrderHistory,
|
||||||
|
partnerLicense,
|
||||||
|
dictation,
|
||||||
|
partner,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export type RootState = ReturnType<typeof store.getState>;
|
||||||
|
export type AppThunk<ReturnType = void> = ThunkAction<
|
||||||
|
ReturnType,
|
||||||
|
RootState,
|
||||||
|
unknown,
|
||||||
|
Action<string>
|
||||||
|
>;
|
||||||
|
|
||||||
|
export type AppDispatch = typeof store.dispatch;
|
||||||
BIN
dictation_client/src/assets/images/ODMScloud.png
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
67
dictation_client/src/assets/images/OMS_logo_black.svg
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 26.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 362.41 42" style="enable-background:new 0 0 362.41 42;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{clip-path:url(#SVGID_00000106112683229958979730000004837138376666885508_);}
|
||||||
|
.st1{clip-path:url(#SVGID_00000100361991382501253840000013201318416462760885_);}
|
||||||
|
.st2{clip-path:url(#SVGID_00000100361991382501253840000013201318416462760885_);fill-rule:evenodd;clip-rule:evenodd;}
|
||||||
|
</style>
|
||||||
|
<g id="OM_System_Black_-_One_Line_-_RGB_00000168110105817326191910000010615373263908845735_">
|
||||||
|
<g>
|
||||||
|
<defs>
|
||||||
|
<rect id="SVGID_1_" y="0" width="362.41" height="42"/>
|
||||||
|
</defs>
|
||||||
|
<clipPath id="SVGID_00000097489272735381870970000015716550008865822343_">
|
||||||
|
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
|
||||||
|
</clipPath>
|
||||||
|
<g style="clip-path:url(#SVGID_00000097489272735381870970000015716550008865822343_);">
|
||||||
|
<defs>
|
||||||
|
<rect id="SVGID_00000084515526535015927220000011441361349608841099_" y="0" width="362.41" height="42"/>
|
||||||
|
</defs>
|
||||||
|
<clipPath id="SVGID_00000005241618409923234440000016758378329632926897_">
|
||||||
|
<use xlink:href="#SVGID_00000084515526535015927220000011441361349608841099_" style="overflow:visible;"/>
|
||||||
|
</clipPath>
|
||||||
|
<path style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);" d="M62.35,23.65l-9.06-22.2H41.24
|
||||||
|
v15.26C39.28,7.17,30.89,0,20.84,0C9.33,0,0,9.4,0,21c0,11.59,9.33,21,20.84,21c10.05,0,18.44-7.17,20.4-16.71v15.07h9.45V19.18
|
||||||
|
l8.07,21.18h7.19l8.07-21.18v21.18h9.45V1.45H71.42L62.35,23.65z M20.84,32.57C14.5,32.57,9.36,27.39,9.36,21
|
||||||
|
S14.5,9.43,20.84,9.43S32.33,14.61,32.33,21S27.19,32.57,20.84,32.57"/>
|
||||||
|
|
||||||
|
<path style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);fill-rule:evenodd;clip-rule:evenodd;" d="
|
||||||
|
M127.89,17.47h9.94c0,0,0-2.32-0.27-3.9c-0.27-1.58-0.84-3.09-2.45-4.37c-1.62-1.27-5.01-1.81-6.65-2.11
|
||||||
|
c-1.65-0.3-7.16-0.4-10.55-0.4s-8.27,0.29-10.37,0.73c-2.06,0.43-4.88,1.77-5.96,3.5c-0.75,1.18-1.85,3.52-1.85,6.13
|
||||||
|
c0,2.65,0.36,5.14,1.09,6.45c0.71,1.26,1.41,2.03,2.58,2.7c1.18,0.67,3.44,1.01,6.32,1.14c2.85,0.13,6.22,0.19,8.93,0.27
|
||||||
|
c2.75,0.09,6.41,0.25,7.89,0.36c1.63,0.12,2.35,1.15,2.35,2.19c0,1.05-0.5,1.83-1.54,2.19c-1.16,0.39-5.29,0.35-8.01,0.38
|
||||||
|
c-2.65,0.04-6.03-0.14-7.64-0.32c-1.34-0.15-2.16-1.23-2.32-2.77h-9.85c0,0,0.02,2.8,0.32,4.34c0.3,1.54,1.01,2.72,1.85,3.66
|
||||||
|
c0.84,0.94,1.68,1.41,3.05,1.85c1.38,0.44,7.76,0.87,13.5,0.87c5.74,0,10.58-0.07,12.43-0.37c1.84-0.31,3.86-0.98,4.93-1.82
|
||||||
|
c1.08-0.84,2.2-2.25,2.84-3.76c0.48-1.12,0.72-2.99,0.69-4.83c-0.04-1.85-0.57-4.87-1.54-6.18c-0.98-1.31-1.58-2.08-3.12-2.66
|
||||||
|
c-1.55-0.57-4.16-0.91-5.81-0.97c-1.64-0.07-6.95-0.23-9.54-0.3c-2.11-0.05-6.6-0.24-7.62-0.47c-0.93-0.21-1.54-0.64-1.54-1.92
|
||||||
|
c0-1.27,0.68-1.73,1.44-1.91c0.99-0.24,3.56-0.66,7.19-0.66c3.63,0,6.35,0.25,7.12,0.42c0.77,0.17,1.38,0.57,1.75,1.04
|
||||||
|
C127.82,16.46,127.89,17.47,127.89,17.47"/>
|
||||||
|
<polygon style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);" points="161.22,19.5 171.82,6.96
|
||||||
|
184.35,6.96 166.25,28.53 166.25,40.07 156.35,40.07 156.18,28.53 138.08,6.96 150.6,6.96 "/>
|
||||||
|
<polygon style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);" points="264.47,6.96 264.47,15.68
|
||||||
|
249.99,15.68 249.99,40.06 239.92,40.06 239.92,15.68 225.45,15.68 225.45,6.96 "/>
|
||||||
|
<polygon style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);" points="278.2,32.47 303.38,32.47
|
||||||
|
303.38,40.07 278.2,40.07 268.12,40.07 268.12,6.96 278.2,6.96 303.38,6.96 303.38,14.54 278.2,14.54 278.2,19.71 301.84,19.71
|
||||||
|
301.84,27.31 278.2,27.31 "/>
|
||||||
|
<path style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);" d="M335.48,40.06h-3.85l-12.17-21.95
|
||||||
|
c-0.11-0.21-0.28-0.5-0.53-0.45c-0.31,0.07-0.31,0.43-0.31,0.68v21.73h-10.08V6.96h15.72l11.09,20c0.03,0.06,0.06,0.09,0.12,0.08
|
||||||
|
c0.05,0.01,0.09-0.02,0.12-0.08l11.09-20h15.72v33.11h-10.07V18.34c0-0.25,0-0.61-0.31-0.68c-0.24-0.05-0.41,0.25-0.52,0.45
|
||||||
|
l-12.17,21.95H335.48z"/>
|
||||||
|
|
||||||
|
<path style="clip-path:url(#SVGID_00000005241618409923234440000016758378329632926897_);fill-rule:evenodd;clip-rule:evenodd;" d="
|
||||||
|
M212.27,17.47h9.94c0,0,0-2.32-0.27-3.9c-0.27-1.58-0.84-3.09-2.45-4.37c-1.61-1.27-5.01-1.81-6.65-2.11
|
||||||
|
c-1.65-0.3-7.15-0.4-10.54-0.4c-3.39,0-8.27,0.29-10.37,0.73c-2.06,0.43-4.88,1.77-5.97,3.5c-0.75,1.18-1.85,3.52-1.85,6.13
|
||||||
|
c0,2.65,0.36,5.14,1.09,6.45c0.71,1.26,1.41,2.03,2.58,2.7c1.18,0.67,3.44,1.01,6.32,1.14c2.85,0.13,6.22,0.19,8.93,0.27
|
||||||
|
c2.76,0.09,6.42,0.25,7.9,0.36c1.63,0.12,2.35,1.15,2.35,2.19c0,1.05-0.51,1.83-1.55,2.19c-1.15,0.39-5.29,0.35-8.01,0.38
|
||||||
|
c-2.65,0.04-6.03-0.14-7.64-0.32c-1.33-0.15-2.17-1.23-2.32-2.77h-9.85c0,0,0.02,2.8,0.32,4.34c0.3,1.54,1.01,2.72,1.85,3.66
|
||||||
|
c0.84,0.94,1.68,1.41,3.05,1.85c1.38,0.44,7.76,0.87,13.5,0.87c5.74,0,10.57-0.07,12.42-0.37c1.84-0.31,3.86-0.98,4.93-1.82
|
||||||
|
c1.08-0.84,2.2-2.25,2.84-3.76c0.48-1.12,0.72-2.99,0.69-4.83c-0.04-1.85-0.58-4.87-1.54-6.18c-0.98-1.31-1.58-2.08-3.12-2.66
|
||||||
|
c-1.55-0.57-4.16-0.91-5.81-0.97c-1.64-0.07-6.95-0.23-9.54-0.3c-2.11-0.05-6.6-0.24-7.62-0.47c-0.93-0.21-1.55-0.64-1.55-1.92
|
||||||
|
c0-1.27,0.69-1.73,1.45-1.91c0.99-0.24,3.56-0.66,7.19-0.66c3.63,0,6.35,0.25,7.12,0.42c0.77,0.17,1.38,0.57,1.75,1.04
|
||||||
|
C212.2,16.46,212.27,17.47,212.27,17.47"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.5 KiB |
15
dictation_client/src/assets/images/account_circle.svg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#A5A5A5;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M11.1,35.2c2.1-1.3,4.2-3.3,6.2-4s4.3-1.5,6.7-1.5s4.6,0.8,6.7,1.5s4.2,2.7,6.2,4c1.5-1.8,2.5-3.6,3.1-5.4
|
||||||
|
C40.7,28,41,26,41,24c0-4.8-1.6-8.9-4.9-12.1S28.8,7,24,7s-8.9,1.6-12.1,4.9S7,19.2,7,24c0,2,0.3,4,1,5.8
|
||||||
|
C8.6,31.6,9.6,33.5,11.1,35.2z M24,27.1c-2.1,0-3.9-0.7-5.3-2.1c-1.4-1.4-2.2-3.1-2.2-5.2s0.7-3.8,2.2-5.2s3.2-2.1,5.3-2.1
|
||||||
|
s3.9,0.7,5.3,2.1s2.2,3.1,2.2,5.2s-0.7,3.8-2.2,5.2C27.9,26.5,26.1,27.1,24,27.1z M24,44c-2.8,0-5.4-0.5-7.8-1.6
|
||||||
|
c-2.4-1-4.6-2.5-6.4-4.3c-1.8-1.8-3.2-3.9-4.3-6.4c-1-2.4-1.6-5-1.6-7.8s0.5-5.4,1.6-7.8c1-2.4,2.5-4.5,4.3-6.3s3.9-3.2,6.4-4.3
|
||||||
|
c2.4-1,5-1.6,7.8-1.6s5.4,0.5,7.8,1.6c2.4,1.1,4.5,2.5,6.3,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8s-0.5,5.3-1.6,7.8
|
||||||
|
c-1,2.4-2.5,4.5-4.3,6.4s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
13
dictation_client/src/assets/images/arrow_circle_left.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M24,31.3l2.1-2.1l-3.7-3.7h9.1v-3h-9.1l3.7-3.7L24,16.7L16.7,24L24,31.3z M24,44c-2.7,0-5.3-0.5-7.8-1.6
|
||||||
|
c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4C4.5,29.3,4,26.7,4,24c0-2.8,0.5-5.4,1.6-7.8s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4
|
||||||
|
c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4
|
||||||
|
s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z M24,41c4.7,0,8.8-1.7,12-5c3.3-3.3,5-7.3,5-12c0-4.7-1.6-8.7-5-12c-3.3-3.3-7.3-5-12-5
|
||||||
|
c-4.7,0-8.7,1.7-12,5s-5,7.3-5,12c0,4.7,1.7,8.7,5,12S19.3,41,24,41z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 999 B |
13
dictation_client/src/assets/images/arrow_circle_right.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M24,31.3l7.3-7.3L24,16.7l-2.1,2.1l3.7,3.7h-9.1v3h9.1l-3.7,3.7L24,31.3z M24,44c-2.7,0-5.3-0.5-7.8-1.6
|
||||||
|
c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4C4.5,29.3,4,26.7,4,24c0-2.8,0.5-5.4,1.6-7.8s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4
|
||||||
|
c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4
|
||||||
|
s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z M24,41c4.7,0,8.8-1.7,12-5c3.3-3.3,5-7.3,5-12c0-4.7-1.6-8.7-5-12c-3.3-3.3-7.3-5-12-5
|
||||||
|
c-4.7,0-8.7,1.7-12,5s-5,7.3-5,12c0,4.7,1.7,8.7,5,12S19.3,41,24,41z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 999 B |
1
dictation_client/src/assets/images/arrow_forward.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="m16,32l-2.1-2.1,12.4-12.4H0v-3h26.2L13.9,2.1l2.1-2.1,16,16-16,16Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 262 B |
11
dictation_client/src/assets/images/arrow_forward_blue.svg
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="_レイヤー_1" data-name="レイヤー 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-1 {
|
||||||
|
fill: #004086;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<path class="cls-1" d="m16,32l-2.1-2.1,12.4-12.4H0v-3h26.2L13.9,2.1l2.1-2.1,16,16-16,16Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 338 B |
14
dictation_client/src/assets/images/backup.svg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#A5A5A5;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M22.9,26.5h9c0.8,0,1.5-0.3,2.1-0.8c0.6-0.6,0.8-1.2,0.8-2s-0.3-1.5-0.8-2.1c-0.6-0.6-1.2-0.9-2.1-0.9h-0.6
|
||||||
|
l-0.1-0.5c-0.1-1-0.6-1.9-1.4-2.6s-1.7-1.1-2.8-1.1c-0.9,0-1.7,0.2-2.4,0.7c-0.7,0.4-1.2,1-1.5,1.8L23,19.3h-0.4
|
||||||
|
c-1,0-1.8,0.4-2.4,1.1c-0.7,0.7-1,1.6-1,2.5c0,1,0.4,1.8,1.1,2.5C21,26.1,21.9,26.5,22.9,26.5z M5,42c-0.8,0-1.5-0.3-2.1-0.9
|
||||||
|
C2.3,40.5,2,39.8,2,39V10.5h3V39h36.5v3H5z M11,36c-0.8,0-1.5-0.3-2.1-0.9C8.3,34.5,8,33.8,8,33V7c0-0.8,0.3-1.5,0.9-2.1
|
||||||
|
C9.5,4.3,10.2,4,11,4h13l3,3h16c0.8,0,1.5,0.3,2.1,0.9C45.7,8.5,46,9.2,46,10v23c0,0.8-0.3,1.5-0.9,2.1C44.5,35.7,43.8,36,43,36H11z
|
||||||
|
M11,33h32V10H25.8l-3-3H11V33z M11,33V7V33z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
15
dictation_client/src/assets/images/badge.svg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M7,44c-0.8,0-1.5-0.3-2.1-0.9C4.3,42.5,4,41.8,4,41V17c0-0.8,0.3-1.5,0.9-2.1C5.5,14.3,6.2,14,7,14h11.9V7
|
||||||
|
c0-0.8,0.3-1.5,0.9-2.1S21.1,4,21.9,4h4.4c0.8,0,1.5,0.3,2.1,0.9c0.6,0.6,0.9,1.3,0.9,2.1v7H41c0.8,0,1.5,0.3,2.1,0.9
|
||||||
|
c0.6,0.6,0.9,1.3,0.9,2.1v24c0,0.8-0.3,1.5-0.9,2.1C42.5,43.7,41.8,44,41,44H7z M11.6,35.7h12V35c0-0.6-0.2-1.1-0.5-1.6
|
||||||
|
c-0.3-0.5-0.7-0.8-1.1-0.9c-1.1-0.4-1.9-0.6-2.5-0.7c-0.6-0.1-1.2-0.2-1.8-0.2c-0.6,0-1.3,0.1-2,0.2c-0.7,0.1-1.5,0.4-2.4,0.7
|
||||||
|
c-0.5,0.2-0.9,0.5-1.2,0.9c-0.3,0.5-0.4,1-0.4,1.6V35.7z M28.4,32.3h8.5v-2.5h-8.5V32.3z M17.7,29.8c0.8,0,1.4-0.3,1.9-0.8
|
||||||
|
c0.5-0.5,0.8-1.2,0.8-1.9s-0.3-1.4-0.8-1.9c-0.5-0.5-1.2-0.8-1.9-0.8c-0.8,0-1.4,0.3-1.9,0.8c-0.5,0.5-0.8,1.2-0.8,1.9
|
||||||
|
s0.3,1.4,0.8,1.9C16.3,29.5,16.9,29.8,17.7,29.8z M28.4,26.6h8.5v-2.5h-8.5V26.6z M21.9,17h4.4V7h-4.4V17z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
13
dictation_client/src/assets/images/block.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.6.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M24,44c-2.8,0-5.4-0.5-7.8-1.6c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4S4,26.8,4,24s0.5-5.4,1.6-7.8
|
||||||
|
s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.2,4,24,4s5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8
|
||||||
|
s-0.5,5.4-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z M24,41c4.7,0,8.8-1.6,12.1-4.9
|
||||||
|
C39.4,32.8,41,28.7,41,24c0-2-0.3-4-1-5.8c-0.7-1.9-1.7-3.6-3-5.1l-24,24c1.5,1.3,3.2,2.3,5.1,3C20,40.7,22,41,24,41z M11.1,34.9
|
||||||
|
L35,11c-1.5-1.3-3.2-2.3-5.1-3S26,7,24,7c-4.7,0-8.8,1.6-12.1,4.9S7,19.3,7,24c0,2,0.4,4,1.1,5.9S9.8,33.4,11.1,34.9z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1006 B |
15
dictation_client/src/assets/images/check_circle.svg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#A5A5A5;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M21,28.5l-4.9-4.9c-0.3-0.3-0.7-0.5-1.1-0.5s-0.8,0.2-1.1,0.5c-0.3,0.3-0.5,0.7-0.5,1.1c0,0.4,0.2,0.8,0.5,1.1
|
||||||
|
L20,32c0.3,0.3,0.6,0.5,1,0.5s0.7-0.1,1-0.5l12-12c0.3-0.3,0.4-0.7,0.4-1.1c0-0.4-0.2-0.8-0.5-1.1c-0.3-0.3-0.7-0.5-1.1-0.5
|
||||||
|
c-0.4,0-0.8,0.2-1.2,0.5L21,28.5z M24,44c-2.8,0-5.5-0.5-7.9-1.5c-2.4-1-4.6-2.4-6.4-4.2s-3.2-3.9-4.2-6.4S4,26.8,4,24
|
||||||
|
c0-2.8,0.5-5.4,1.5-7.9S8,11.6,9.8,9.8s3.9-3.2,6.4-4.2S21.2,4,24,4c2.8,0,5.4,0.5,7.9,1.6s4.5,2.4,6.4,4.2c1.8,1.8,3.2,3.9,4.2,6.3
|
||||||
|
s1.5,5,1.5,7.9c0,2.8-0.5,5.5-1.5,7.9s-2.5,4.6-4.2,6.4c-1.8,1.8-3.9,3.2-6.4,4.2C29.4,43.5,26.8,44,24,44z M24,41
|
||||||
|
c4.8,0,8.9-1.6,12.1-4.9S41,28.8,41,24s-1.6-8.9-4.9-12.1S28.8,7,24,7s-8.9,1.6-12.1,4.9S7,19.2,7,24s1.6,8.9,4.9,12.1
|
||||||
|
S19.2,41,24,41z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
12
dictation_client/src/assets/images/check_circle_fill.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M21.1,33.1l14.1-14.2l-2.3-2.2L21.1,28.5l-6-6l-2.2,2.2L21.1,33.1z M24,44c-2.7,0-5.3-0.5-7.8-1.6
|
||||||
|
c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4C4.5,29.3,4,26.7,4,24c0-2.8,0.5-5.4,1.6-7.8s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4
|
||||||
|
c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4
|
||||||
|
s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 840 B |
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="m17,24.5l-4.9-4.9c-.3-.3-.7-.5-1.1-.5s-.8.2-1.1.5-.5.7-.5,1.1.2.8.5,1.1l6.1,6.2c.3.3.6.5,1,.5s.7-.1,1-.5l12-12c.3-.3.4-.7.4-1.1s-.2-.8-.5-1.1c-.3-.3-.7-.5-1.1-.5s-.8.2-1.2.5l-10.6,10.7Zm3,15.5c-2.8,0-5.5-.5-7.9-1.5s-4.6-2.4-6.4-4.2-3.2-3.9-4.2-6.4-1.5-5.1-1.5-7.9.5-5.4,1.5-7.9,2.5-4.5,4.3-6.3,3.9-3.2,6.4-4.2,5-1.6,7.8-1.6,5.4.5,7.9,1.6c2.5,1.1,4.5,2.4,6.4,4.2,1.8,1.8,3.2,3.9,4.2,6.3s1.5,5,1.5,7.9-.5,5.5-1.5,7.9c-1,2.4-2.5,4.6-4.2,6.4-1.8,1.8-3.9,3.2-6.4,4.2-2.5,1-5.1,1.5-7.9,1.5Zm0-3c4.8,0,8.9-1.6,12.1-4.9s4.9-7.3,4.9-12.1-1.6-8.9-4.9-12.1-7.3-4.9-12.1-4.9-8.9,1.6-12.1,4.9-4.9,7.3-4.9,12.1,1.6,8.9,4.9,12.1,7.3,4.9,12.1,4.9Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 828 B |
10
dictation_client/src/assets/images/check_fill.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M39.6,4.4H8.4C6,4.4,4,6.4,4,8.8v30.4c0,2.4,2,4.3,4.4,4.3h31.1c2.5,0,4.4-2,4.4-4.3V8.8
|
||||||
|
C44,6.4,42,4.4,39.6,4.4z M19.6,34.9L8.4,24l3.1-3.1l8,7.8l16.9-16.5l3.1,3.1L19.6,34.9z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 620 B |
14
dictation_client/src/assets/images/check_outline.svg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.7.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{display:none;fill:#282828;}
|
||||||
|
.st1{fill:#A5A5A5;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M39.6,4.4H8.4C6,4.4,4,6.4,4,8.8v30.4c0,2.4,2,4.3,4.4,4.3h31.1c2.5,0,4.4-2,4.4-4.3V8.8
|
||||||
|
C44,6.4,42,4.4,39.6,4.4z M19.6,34.9L8.4,24l3.1-3.1l8,7.8l16.9-16.5l3.1,3.1L19.6,34.9z"/>
|
||||||
|
<path class="st1" d="M7.4,43.8c-0.9,0-1.6-0.3-2.3-1c-0.7-0.7-1-1.4-1-2.3v-33c0-0.9,0.3-1.6,1-2.3c0.7-0.6,1.4-0.9,2.3-0.9h33.1
|
||||||
|
c0.9,0,1.6,0.3,2.3,1s1,1.4,1,2.3v33.1c0,0.9-0.3,1.6-1,2.3c-0.7,0.7-1.4,1-2.3,1L7.4,43.8L7.4,43.8z M7.4,40.5h33.1V7.4H7.4V40.5
|
||||||
|
L7.4,40.5z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 912 B |
13
dictation_client/src/assets/images/circle.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#A5A5A5;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M24,44c-2.7,0-5.3-0.5-7.8-1.6c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4S4,26.7,4,24c0-2.8,0.5-5.4,1.6-7.8
|
||||||
|
s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8
|
||||||
|
c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z M24,41c4.7,0,8.8-1.7,12-5
|
||||||
|
c3.3-3.3,5-7.3,5-12c0-4.7-1.6-8.8-5-12.1C32.8,8.6,28.7,7,24,7c-4.7,0-8.7,1.6-12,4.9S7,19.3,7,24c0,4.7,1.7,8.7,5,12
|
||||||
|
S19.3,41,24,41z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 924 B |
10
dictation_client/src/assets/images/close.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 27.3 27.3" style="enable-background:new 0 0 27.3 27.3;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M2.1,27.4l-2.1-2.1l11.6-11.6L0.1,2l2.1-2.1l11.5,11.6L25.2,0l2.1,2.1L15.8,13.6l11.6,11.5l-2.1,2.1L13.7,15.7
|
||||||
|
L2.1,27.4z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 575 B |
1
dictation_client/src/assets/images/close_white.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 27.3 27.3"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="m2.1,27.3l-2.1-2.1,11.55-11.55L0,2.1,2.1,0l11.55,11.55L25.2,0l2.1,2.1-11.55,11.55,11.55,11.55-2.1,2.1-11.55-11.55L2.1,27.3Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 324 B |
11
dictation_client/src/assets/images/delete.svg
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M13.1,42c-0.8,0-1.5-0.3-2.1-0.9c-0.6-0.6-0.9-1.3-0.9-2.1V10.5H8v-3h9.4V6h13.2v1.5H40v3h-2V39
|
||||||
|
c0,0.8-0.3,1.5-0.9,2.1C36.5,41.7,35.8,42,35,42H13.1z M35,10.5H13.1V39H35V10.5z M18.4,34.7h3v-20h-3V34.7z M26.6,34.7h3v-20h-3
|
||||||
|
V34.7z M13.1,10.5V39V10.5z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 695 B |
11
dictation_client/src/assets/images/edit.svg
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M9,39h2.2l22.2-22.1l-2.2-2.2L9,36.8V39z M39.7,14.7l-6.4-6.4l2.1-2.1c0.6-0.6,1.3-0.9,2.1-0.9
|
||||||
|
c0.8,0,1.5,0.3,2.1,0.9l2.2,2.2c0.6,0.6,0.9,1.3,0.9,2.1c0,0.8-0.3,1.5-0.9,2.1L39.7,14.7z M37.6,16.8L12.4,42H6v-6.4l25.2-25.2
|
||||||
|
L37.6,16.8z M32.2,15.7l-1.1-1.1l2.2,2.2L32.2,15.7z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 717 B |
11
dictation_client/src/assets/images/email_check.svg
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#A5A5A5;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M31.6,44l-8.1-8l2.1-2.2l5.9,5.9l12.2-12.2l2.2,2.1L31.6,44z M23.9,21.6L40.6,11H7.2L23.9,21.6z M23.9,24.6
|
||||||
|
L7,13.8v22.6h12.8l3,3H7c-0.8,0-1.5-0.3-2.1-0.9S4,37.2,4,36.4V11c0-0.8,0.3-1.5,0.9-2.1C5.5,8.3,6.2,8,7,8h33.8
|
||||||
|
c0.8,0,1.5,0.3,2.1,0.9c0.6,0.6,0.9,1.3,0.9,2.1v12.2l-3,3V13.8L23.9,24.6z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 736 B |
13
dictation_client/src/assets/images/finished.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#00B4AA;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M24,44c-2.8,0-5.5-0.5-7.9-1.5s-4.6-2.4-6.4-4.2S6.5,34.4,5.5,32S4,26.8,4,24s0.5-5.4,1.5-7.8S8,11.6,9.8,9.8
|
||||||
|
s3.9-3.2,6.4-4.2S21.2,4,24,4c2.5,0,4.8,0.4,7,1.2s4.1,1.9,5.9,3.3l-2.2,2.1c-1.5-1.2-3.1-2.1-4.9-2.7C28,7.3,26.1,7,24,7
|
||||||
|
c-4.8,0-8.9,1.6-12.1,4.9S7,19.2,7,24s1.6,8.9,4.9,12.1S19.2,41,24,41s8.9-1.6,12.1-4.9S41,28.8,41,24c0-1-0.1-2-0.2-2.9
|
||||||
|
c-0.2-1-0.4-1.9-0.7-2.8l2.3-2.3c0.5,1.2,0.9,2.5,1.2,3.8s0.4,2.7,0.4,4.1c0,2.8-0.5,5.5-1.5,7.9s-2.5,4.5-4.2,6.3s-3.9,3.2-6.4,4.2
|
||||||
|
C29.4,43.5,26.8,44,24,44z M21.1,33.1l-8.3-8.3l2.2-2.2l6,6L41.8,7.8l2.3,2.2L21.1,33.1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1009 B |
13
dictation_client/src/assets/images/history.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M23.9,42c-5,0-9.2-1.8-12.7-5.3C7.7,33.2,6,28.9,6,23.9h3c0,4.2,1.4,7.7,4.3,10.7S19.7,39,23.9,39
|
||||||
|
c4.2,0,7.8-1.5,10.8-4.5c2.9-3,4.4-6.6,4.4-10.8c0-4.1-1.5-7.6-4.5-10.5S28,9,23.9,9c-2.3,0-4.4,0.5-6.4,1.5s-3.7,2.4-5.2,4.1h5.3v3
|
||||||
|
H7.1V7.2h3v5.3c1.7-2,3.8-3.6,6.2-4.8S21.2,6,23.9,6c2.5,0,4.9,0.5,7,1.4c2.2,0.9,4.1,2.2,5.8,3.8c1.7,1.6,3,3.5,3.9,5.7
|
||||||
|
s1.4,4.5,1.4,7s-0.5,4.8-1.4,7s-2.2,4.1-3.9,5.8c-1.6,1.6-3.6,2.9-5.8,3.9C28.7,41.5,26.4,42,23.9,42z M30.2,32.1l-7.7-7.6V13.8h3
|
||||||
|
v9.5l6.9,6.7L30.2,32.1z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 944 B |
14
dictation_client/src/assets/images/inprogress.svg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#FF5A33;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M26.4,44v-3c1.2-0.2,2.3-0.5,3.5-1c1.1-0.5,2.2-1.1,3.3-1.9l2.1,2.2c-1.3,1-2.8,1.8-4.2,2.4
|
||||||
|
C29.5,43.3,28,43.8,26.4,44z M21.9,44c-4.6-0.7-8.3-2.7-11.3-6.1s-4.5-7.4-4.5-12.1c0-2.5,0.5-4.8,1.4-7s2.2-4.1,3.9-5.7
|
||||||
|
c1.6-1.6,3.5-2.9,5.7-3.8s4.5-1.4,7-1.4h1l-4-3.9l2.2-2.2L31,9.3L23.4,17l-2.2-2.2l4-4h-1c-4.2,0-7.8,1.4-10.7,4.3
|
||||||
|
s-4.3,6.4-4.3,10.7c0,3.9,1.2,7.2,3.6,10s5.5,4.5,9.1,5.2V44z M38.4,37.2L36.2,35c0.8-1,1.4-2.1,1.8-3.2s0.8-2.4,0.9-3.7h3
|
||||||
|
c-0.2,1.7-0.7,3.3-1.3,4.9C40.1,34.5,39.3,35.9,38.4,37.2z M42,23.6h-3c-0.2-1.2-0.5-2.3-0.9-3.5s-1.1-2.3-1.8-3.4l2.2-2.1
|
||||||
|
c1,1.3,1.8,2.8,2.3,4.3C41.4,20.3,41.8,21.9,42,23.6z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
15
dictation_client/src/assets/images/key.svg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 49.1" style="enable-background:new 0 0 48 49.1;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M20.3,34c-0.7,0.8-1.6,1.2-2.6,1.2c-1,0-1.9-0.3-2.7-1c-0.8-0.7-1.2-1.6-1.2-2.6c0-1,0.3-1.9,1-2.7
|
||||||
|
c0.7-0.8,1.6-1.2,2.6-1.2s1.9,0.3,2.7,1c0.8,0.7,1.2,1.6,1.2,2.6S21,33.3,20.3,34z M27.3,40.6c-2.5,2.7-5.6,4.1-9.3,4.2
|
||||||
|
c-3.7,0.1-6.9-1.1-9.6-3.6s-4.1-5.7-4.2-9.3c-0.1-3.7,1.1-6.9,3.6-9.6c1.8-1.9,3.9-3.2,6.2-3.8c2.3-0.6,4.8-0.4,7.4,0.5L35,4.5
|
||||||
|
l8.9-0.3l-0.2,12.6L37.7,18L37,24l-5.3,0.8l-1.9,2.1c1,2.2,1.3,4.5,1,6.9S29.3,38.4,27.3,40.6L27.3,40.6z M24.8,38.3
|
||||||
|
c1.5-1.6,2.3-3.5,2.5-5.8s-0.3-4.4-1.6-6.3l4.3-4.6l3.9-0.5l0.8-6l5.6-1l0-6.5l-4,0.1L22.3,22.9c-1.8-1.1-3.9-1.5-6.2-1.2
|
||||||
|
s-4.3,1.2-5.8,2.9c-1.9,2-2.8,4.4-2.7,7.2c0.1,2.7,1.1,5.1,3.2,7c2,1.9,4.4,2.8,7.2,2.7C20.6,41.4,22.9,40.3,24.8,38.3L24.8,38.3z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
13
dictation_client/src/assets/images/lock.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 40 40" style="enable-background:new 0 0 40 40;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M9.5,36.7c-0.8,0-1.4-0.3-2-0.8c-0.5-0.5-0.8-1.2-0.8-2V16.3c0-0.8,0.3-1.4,0.8-2c0.5-0.5,1.2-0.8,2-0.8H12V9.7
|
||||||
|
c0-2.2,0.8-4.1,2.4-5.7c1.6-1.6,3.5-2.4,5.7-2.4c2.2,0,4.1,0.8,5.7,2.4C27.3,5.6,28,7.5,28,9.7v3.8h2.5c0.8,0,1.4,0.3,2,0.8
|
||||||
|
c0.5,0.5,0.8,1.2,0.8,2v17.6c0,0.8-0.3,1.4-0.8,2c-0.5,0.5-1.2,0.8-2,0.8H9.5z M20,28.3c0.9,0,1.7-0.3,2.3-0.9c0.6-0.6,1-1.4,1-2.3
|
||||||
|
c0-0.9-0.3-1.6-1-2.3c-0.6-0.7-1.4-1-2.3-1s-1.7,0.3-2.3,1c-0.6,0.7-1,1.4-1,2.3c0,0.9,0.3,1.6,1,2.2C18.3,28,19.1,28.3,20,28.3z
|
||||||
|
M14.7,13.5h10.6V9.7c0-1.4-0.5-2.7-1.5-3.7S21.5,4.5,20,4.5S17.3,5,16.2,6s-1.5,2.3-1.5,3.7V13.5z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
14
dictation_client/src/assets/images/lock_open.svg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M11,16.3h19.5v-4.8c0-1.8-0.6-3.3-1.9-4.6C27.3,5.6,25.8,5,24,5c-1.8,0-3.3,0.6-4.6,1.9
|
||||||
|
c-1.3,1.3-1.9,2.8-1.9,4.6h-3c0-2.6,0.9-4.9,2.8-6.7C19.1,2.9,21.4,2,24,2s4.9,0.9,6.7,2.8s2.8,4.1,2.8,6.7v4.8H37
|
||||||
|
c0.8,0,1.5,0.3,2.1,0.9c0.6,0.6,0.9,1.3,0.9,2.1V41c0,0.8-0.3,1.5-0.9,2.1C38.5,43.7,37.8,44,37,44H11c-0.8,0-1.5-0.3-2.1-0.9
|
||||||
|
C8.3,42.5,8,41.8,8,41V19.3c0-0.8,0.3-1.5,0.9-2.1C9.5,16.6,10.2,16.3,11,16.3z M11,41h26V19.3H11V41z M24,34c1.1,0,2-0.4,2.7-1.1
|
||||||
|
c0.8-0.7,1.1-1.6,1.1-2.6c0-1-0.4-1.9-1.1-2.7s-1.7-1.2-2.7-1.2s-2,0.4-2.7,1.2s-1.1,1.7-1.1,2.8c0,1,0.4,1.9,1.1,2.6S22.9,34,24,34
|
||||||
|
z M11,41V19.3V41z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
19
dictation_client/src/assets/images/mn_change.svg
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M19.7,23.6c-2.3,0-4.3-0.7-5.8-2.2s-2.2-3.4-2.2-5.8s0.7-4.3,2.2-5.8s3.4-2.2,5.8-2.2s4.3,0.7,5.8,2.2
|
||||||
|
s2.2,3.4,2.2,5.8s-0.7,4.3-2.2,5.8S22.1,23.6,19.7,23.6z M2.7,40.7v-5c0-1.2,0.3-2.4,0.9-3.4s1.5-1.8,2.7-2.3c2.6-1.1,4.9-2,7.1-2.5
|
||||||
|
s4.3-0.7,6.3-0.7H21c-0.2,0.5-0.4,1-0.5,1.5s-0.2,1.1-0.3,1.7h-0.5c-2.1,0-4.1,0.2-6,0.7s-4,1.2-6.1,2.2c-0.6,0.3-1,0.7-1.3,1.2
|
||||||
|
c-0.3,0.5-0.4,1-0.4,1.6v1.8h14.3c0.2,0.6,0.4,1.2,0.6,1.7c0.2,0.5,0.6,1,0.9,1.5H2.7z M34,43.1l-0.5-3.5c-0.6-0.2-1.2-0.4-1.8-0.8
|
||||||
|
s-1.1-0.7-1.6-1.1l-2.9,0.6l-1.3-2.2l2.5-2.3c-0.1-0.3-0.1-0.8-0.1-1.3s0-1,0.1-1.3l-2.5-2.3l1.3-2.2l2.9,0.6c0.4-0.4,1-0.8,1.6-1.1
|
||||||
|
c0.6-0.3,1.2-0.6,1.8-0.8l0.5-3.5h2.9l0.5,3.5c0.6,0.2,1.2,0.4,1.8,0.8c0.6,0.3,1.1,0.7,1.6,1.1l2.9-0.6l1.3,2.2L42.6,31
|
||||||
|
c0.1,0.3,0.1,0.8,0.1,1.3s0,1-0.1,1.3l2.5,2.3l-1.3,2.2l-2.9-0.6c-0.4,0.4-1,0.8-1.6,1.1c-0.6,0.3-1.2,0.6-1.8,0.8l-0.5,3.5H34z
|
||||||
|
M35.4,36.6c1.3,0,2.3-0.4,3.1-1.2s1.2-1.8,1.2-3.1c0-1.3-0.4-2.3-1.2-3.1c-0.8-0.8-1.8-1.2-3.1-1.2c-1.3,0-2.3,0.4-3.1,1.2
|
||||||
|
c-0.8,0.8-1.2,1.8-1.2,3.1c0,1.3,0.4,2.3,1.2,3.1C33.1,36.3,34.1,36.6,35.4,36.6z M19.7,20.4c1.4,0,2.5-0.5,3.4-1.4s1.4-2.1,1.4-3.4
|
||||||
|
s-0.5-2.5-1.4-3.4c-0.9-0.9-2.1-1.4-3.4-1.4s-2.5,0.5-3.4,1.4c-0.9,0.9-1.4,2.1-1.4,3.4s0.5,2.5,1.4,3.4
|
||||||
|
C17.2,20,18.4,20.4,19.7,20.4z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
15
dictation_client/src/assets/images/mn_file.svg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M30.1,39.4h1.9v-7h-1.9V39.4z M31,30.6c0.2,0,0.5-0.1,0.7-0.3c0.2-0.2,0.3-0.4,0.3-0.7s-0.1-0.5-0.3-0.7
|
||||||
|
c-0.2-0.2-0.4-0.3-0.7-0.3c-0.3,0-0.5,0.1-0.7,0.3c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7C30.5,30.5,30.7,30.6,31,30.6z
|
||||||
|
M10,8.1v13.8v-0.2v18.2V8.1v8.7V8.1z M14.6,26.8h7.8c0.4-0.5,0.8-1,1.3-1.5c0.5-0.5,1-0.9,1.5-1.3H14.6V26.8z M14.6,34.7h5.7
|
||||||
|
c-0.1-0.4-0.1-0.9-0.1-1.4c0-0.5,0.1-1,0.1-1.4h-5.8V34.7z M10,42.7c-0.7,0-1.4-0.3-2-0.8s-0.8-1.2-0.8-2V8.1c0-0.7,0.3-1.4,0.8-2
|
||||||
|
s1.2-0.8,2-0.8h16.8l10.2,10.2v7.2c-0.4-0.2-0.9-0.4-1.4-0.5c-0.5-0.2-0.9-0.3-1.4-0.4v-5.1h-8.8V8.1H10v31.7h12.1
|
||||||
|
c0.3,0.5,0.7,1,1.1,1.5c0.4,0.5,0.9,0.9,1.4,1.3H10z M32.2,24.5c2.5,0,4.6,0.9,6.4,2.6c1.8,1.8,2.6,3.9,2.6,6.4s-0.9,4.6-2.6,6.4
|
||||||
|
c-1.8,1.8-3.9,2.6-6.4,2.6s-4.6-0.9-6.4-2.6c-1.8-1.8-2.6-3.9-2.6-6.4s0.9-4.6,2.6-6.4C27.5,25.4,29.7,24.5,32.2,24.5z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
13
dictation_client/src/assets/images/mn_play.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M19.1,32.5L32.5,24l-13.4-8.5V32.5z M24,44c-2.7,0-5.3-0.5-7.8-1.6c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4
|
||||||
|
C4.5,29.3,4,26.7,4,24c0-2.8,0.5-5.4,1.6-7.8s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3
|
||||||
|
s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z
|
||||||
|
M24,41c4.7,0,8.8-1.7,12-5c3.3-3.3,5-7.3,5-12c0-4.7-1.6-8.7-5-12c-3.3-3.3-7.3-5-12-5c-4.7,0-8.7,1.7-12,5s-5,7.3-5,12
|
||||||
|
c0,4.7,1.7,8.7,5,12S19.3,41,24,41z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 963 B |
17
dictation_client/src/assets/images/pending.svg
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#A5A5A5;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M13.3,26.5c0.7,0,1.3-0.2,1.8-0.7s0.7-1.1,0.7-1.8c0-0.7-0.2-1.3-0.7-1.8s-1.1-0.7-1.8-0.7s-1.3,0.2-1.8,0.7
|
||||||
|
s-0.7,1.1-0.7,1.8c0,0.7,0.2,1.3,0.7,1.8S12.6,26.5,13.3,26.5z M24,26.5c0.7,0,1.3-0.2,1.8-0.7s0.7-1.1,0.7-1.8
|
||||||
|
c0-0.7-0.2-1.3-0.7-1.8s-1.1-0.7-1.8-0.7c-0.7,0-1.3,0.2-1.8,0.7s-0.7,1.1-0.7,1.8c0,0.7,0.2,1.3,0.7,1.8S23.3,26.5,24,26.5z
|
||||||
|
M34.7,26.5c0.7,0,1.3-0.2,1.8-0.7s0.7-1.1,0.7-1.8c0-0.7-0.2-1.3-0.7-1.8s-1.1-0.7-1.8-0.7s-1.3,0.2-1.8,0.7s-0.7,1.1-0.7,1.8
|
||||||
|
c0,0.7,0.2,1.3,0.7,1.8S34,26.5,34.7,26.5z M24,44c-2.8,0-5.3-0.5-7.8-1.6c-2.4-1-4.5-2.5-6.4-4.3s-3.2-3.9-4.3-6.4
|
||||||
|
c-1-2.4-1.5-5-1.5-7.7s0.5-5.4,1.6-7.8c1-2.4,2.5-4.5,4.3-6.3s3.9-3.2,6.4-4.3C18.7,4.5,21.3,4,24,4s5.4,0.5,7.8,1.6
|
||||||
|
c2.4,1,4.5,2.5,6.3,4.3s3.2,3.9,4.3,6.4c1.1,2.4,1.6,5,1.6,7.8s-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.5-4.3,6.4c-1.8,1.8-3.9,3.2-6.4,4.3
|
||||||
|
C29.4,43.5,26.8,44,24,44z M24,41c4.7,0,8.7-1.7,12-5s5-7.3,5-12.1s-1.6-8.7-4.9-12C32.8,8.6,28.7,7,24,7s-8.7,1.6-12,4.9
|
||||||
|
S7,19.3,7,24s1.7,8.7,5,12S19.3,41,24,41z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
15
dictation_client/src/assets/images/person_add.svg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M36.5,28v-6.5H30v-3h6.5V12h3v6.5H46v3h-6.5V28H36.5z M18,23.9c-2.2,0-4-0.7-5.4-2.1s-2.1-3.2-2.1-5.4
|
||||||
|
s0.7-4,2.1-5.4s3.2-2.1,5.4-2.1s4,0.7,5.4,2.1c1.4,1.4,2.1,3.2,2.1,5.4s-0.7,4-2.1,5.4C22,23.2,20.2,23.9,18,23.9z M2,40v-4.7
|
||||||
|
c0-1.2,0.3-2.2,0.9-3.2c0.6-0.9,1.4-1.7,2.5-2.1c2.5-1.1,4.7-1.9,6.7-2.3C14,27.2,16,27,18,27c2,0,4,0.2,5.9,0.7
|
||||||
|
c1.9,0.4,4.2,1.2,6.7,2.3c1.1,0.5,1.9,1.2,2.6,2.2c0.6,0.9,0.9,2,0.9,3.1V40H2z M5,37h26v-1.7c0-0.5-0.1-1-0.4-1.5
|
||||||
|
c-0.3-0.5-0.7-0.8-1.2-1.1c-2.4-1.1-4.4-1.8-6-2.2C21.7,30.2,19.9,30,18,30s-3.7,0.2-5.4,0.5c-1.6,0.3-3.7,1.1-6,2.2
|
||||||
|
c-0.5,0.2-0.9,0.6-1.2,1.1S5,34.8,5,35.3V37z M18,20.9c1.3,0,2.4-0.4,3.2-1.3s1.3-1.9,1.3-3.2s-0.4-2.4-1.3-3.2
|
||||||
|
c-0.9-0.8-1.9-1.3-3.2-1.3c-1.3,0-2.4,0.4-3.2,1.3c-0.9,0.9-1.3,1.9-1.3,3.2s0.4,2.4,1.3,3.2C15.6,20.5,16.7,20.9,18,20.9z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
11
dictation_client/src/assets/images/post_add.svg
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M9,42c-0.8,0-1.5-0.3-2.1-0.9C6.3,40.5,6,39.8,6,39V9c0-0.8,0.3-1.5,0.9-2.1S8.2,6,9,6h19.7v3H9v30h30V19.3h3
|
||||||
|
V39c0,0.8-0.3,1.5-0.9,2.1C40.5,41.7,39.8,42,39,42H9z M16.1,34.1v-3H32v3H16.1z M16.1,27.8v-3H32v3H16.1z M16.1,21.4v-3H32v3H16.1z
|
||||||
|
M34.6,17.8v-4.4h-4.4v-3h4.4V6h3v4.4H42v3h-4.4v4.4H34.6z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 741 B |
12
dictation_client/src/assets/images/progress_activit.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.6.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#999999;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M24,44c-2.8,0-5.4-0.5-7.9-1.5s-4.5-2.5-6.3-4.2s-3.2-3.9-4.2-6.4S4,26.8,4,24s0.5-5.4,1.6-7.9S8,11.6,9.8,9.8
|
||||||
|
s3.9-3.2,6.3-4.2S21.2,4,24,4c0.4,0,0.8,0.2,1.1,0.4c0.3,0.3,0.4,0.7,0.4,1.1s-0.1,0.8-0.4,1.1C24.8,6.8,24.4,7,24,7
|
||||||
|
c-4.7,0-8.7,1.7-12,5s-5,7.3-5,12s1.7,8.7,5,12s7.3,5,12,5s8.7-1.7,12-5s5-7.3,5-12c0-0.4,0.2-0.8,0.5-1c0.3-0.3,0.7-0.5,1-0.5
|
||||||
|
c0.4,0,0.8,0.1,1,0.5c0.3,0.3,0.5,0.6,0.5,1c0,2.8-0.5,5.4-1.5,7.9s-2.5,4.6-4.2,6.4s-3.9,3.2-6.4,4.2S26.8,44,24,44z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 897 B |
12
dictation_client/src/assets/images/report.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#A5A5A5;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M24,36.1c0.5,0,1-0.2,1.5-0.6s0.6-0.9,0.6-1.5c0-0.6-0.2-1-0.6-1.5s-0.9-0.6-1.5-0.6s-1,0.2-1.5,0.6
|
||||||
|
c-0.5,0.4-0.6,0.9-0.6,1.5c0,0.6,0.2,1,0.6,1.5C23,35.9,23.5,36.1,24,36.1z M22.2,27.6h3.5V12.1h-3.5V27.6z M15.1,45.6L2.8,33.2
|
||||||
|
V15.5L15.1,3.1h17.7l12.4,12.4v17.7L32.8,45.6H15.1z M16.6,42.1h14.8l10.3-10.4V17L31.4,6.6H16.6L6.2,17v14.8L16.6,42.1L16.6,42.1z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 801 B |
1
dictation_client/src/assets/images/report_white.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><svg id="_レイヤー_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42.52 42.52"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="m21.26,33.01c.55,0,1.03-.21,1.45-.62s.62-.9.62-1.45-.21-1.03-.62-1.45-.9-.62-1.45-.62-1.03.21-1.45.62-.62.9-.62,1.45.21,1.03.62,1.45.9.62,1.45.62Zm-1.77-8.5h3.54v-15.53h-3.54v15.53Zm-7.09,18.01L0,30.12V12.4L12.4,0h17.72l12.4,12.4v17.72l-12.4,12.4H12.4Zm1.48-3.54h14.76l10.33-10.33v-14.76L28.64,3.54h-14.76L3.54,13.88v14.76l10.33,10.33Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 538 B |
11
dictation_client/src/assets/images/table.svg
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M17.5,37H41v-6.8H17.5V37z M7,17.8h7.5V11H7V17.8z M7,27.2h7.5v-6.4H7V27.2z M7,37h7.5v-6.8H7V37z M17.5,27.2
|
||||||
|
H41v-6.4H17.5V27.2z M17.5,17.8H41V11H17.5V17.8z M7,40c-0.8,0-1.5-0.3-2.1-0.9C4.3,38.5,4,37.8,4,37V11c0-0.8,0.3-1.5,0.9-2.1
|
||||||
|
S6.2,8,7,8h34c0.8,0,1.5,0.3,2.1,0.9C43.7,9.5,44,10.2,44,11v26c0,0.8-0.3,1.5-0.9,2.1C42.5,39.7,41.8,40,41,40H7z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 790 B |
BIN
dictation_client/src/assets/images/top-bg.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
11
dictation_client/src/assets/images/undo.svg
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#282828;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M14,38v-3h14.5c2.3,0,4.3-0.8,6-2.3c1.7-1.5,2.5-3.5,2.5-5.8s-0.8-4.2-2.5-5.8c-1.7-1.5-3.7-2.3-6-2.3H13.7
|
||||||
|
l5.7,5.7l-2.1,2.1L8,17.3L17.3,8l2.1,2.1l-5.7,5.7h14.7c3.2,0,5.9,1.1,8.2,3.2c2.3,2.1,3.4,4.8,3.4,7.9s-1.1,5.8-3.4,7.9
|
||||||
|
c-2.3,2.1-5,3.2-8.2,3.2H14z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 699 B |
13
dictation_client/src/assets/images/uploaded.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||||
|
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#0084B2;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M16.9,31.3H32c1.6,0,2.9-0.5,4-1.5s1.7-2.2,1.7-3.7s-0.6-2.7-1.7-3.7S33.5,21,32,21c-0.2-2.1-1-3.8-2.4-5.3
|
||||||
|
s-3.1-2.2-5.2-2.2c-1.7,0-3.3,0.5-4.7,1.4c-1.4,0.9-2.4,2.3-2.8,3.9c-1.8,0-3.3,0.6-4.6,1.8s-1.9,2.7-1.9,4.5s0.6,3.2,1.9,4.5
|
||||||
|
C13.5,30.7,15.1,31.3,16.9,31.3z M24,44c-2.7,0-5.3-0.5-7.8-1.6c-2.4-1-4.6-2.5-6.4-4.3s-3.2-3.9-4.3-6.4c-1-2.4-1.5-5-1.5-7.7
|
||||||
|
c0-2.8,0.5-5.4,1.6-7.8s2.5-4.6,4.3-6.4s3.9-3.2,6.4-4.3S21.3,4,24,4c2.8,0,5.4,0.5,7.8,1.6s4.6,2.5,6.4,4.3s3.2,3.9,4.3,6.4
|
||||||
|
c1.1,2.4,1.6,5,1.6,7.8c0,2.7-0.5,5.3-1.6,7.8c-1,2.4-2.5,4.6-4.3,6.4s-3.9,3.2-6.4,4.3C29.4,43.5,26.8,44,24,44z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |