Compare commits
	
		
			13 Commits
		
	
	
		
			js-in-ts
			...
			add-loadin
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | d3bc3a796b | ||
|   | 9e64af4793 | ||
|   | b581f539e2 | ||
|   | aac1295c10 | ||
|   | e8f2802ee0 | ||
|   | 75b3730a70 | ||
|   | af29dc9c3f | ||
|   | 181cb5f335 | ||
|   | 94e560c262 | ||
|   | f802061722 | ||
|   | 58a7f6eec6 | ||
|   | 5e11d3cc4d | ||
|   | 399fb8312a | 
| @@ -29,6 +29,7 @@ rm -rf .env | ||||
| echo " | ||||
| PORT=$WEB_PORT | ||||
| REACT_APP_GRAPHQL_URL=http://localhost:$BACKEND_PORT/graphql | ||||
| REACT_APP_NOTIFICATIONS_URL=https://notifications.automatisch.io | ||||
| " >> .env | ||||
| cd $CURRENT_DIR | ||||
|  | ||||
|   | ||||
| @@ -7,12 +7,4 @@ module.exports = { | ||||
|     'plugin:@typescript-eslint/recommended', | ||||
|     'prettier', | ||||
|   ], | ||||
|   overrides: [ | ||||
|     { | ||||
|       files: ['**/*.test.ts', '**/test/**/*.ts'], | ||||
|       rules: { | ||||
|         '@typescript-eslint/ban-ts-comment': ['off'], | ||||
|       }, | ||||
|     }, | ||||
|   ], | ||||
| }; | ||||
|   | ||||
							
								
								
									
										48
									
								
								.github/workflows/backend.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										48
									
								
								.github/workflows/backend.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,48 +0,0 @@ | ||||
| name: Automatisch Backend Tests | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|   pull_request: | ||||
|   workflow_dispatch: | ||||
|  | ||||
| jobs: | ||||
|   test: | ||||
|     timeout-minutes: 60 | ||||
|     runs-on: | ||||
|       - ubuntu-latest | ||||
|     services: | ||||
|       postgres: | ||||
|         image: postgres:14.5-alpine | ||||
|         env: | ||||
|           POSTGRES_DB: automatisch_test | ||||
|           POSTGRES_USER: automatisch_test_user | ||||
|           POSTGRES_PASSWORD: automatisch_test_user_password | ||||
|         options: >- | ||||
|           --health-cmd "pg_isready -U automatisch_test_user -d automatisch_test" | ||||
|           --health-interval 10s | ||||
|           --health-timeout 5s | ||||
|           --health-retries 5 | ||||
|         ports: | ||||
|           - 5432:5432 | ||||
|       redis: | ||||
|         image: redis:7.0.4-alpine | ||||
|         options: >- | ||||
|           --health-cmd "redis-cli ping" | ||||
|           --health-interval 10s | ||||
|           --health-timeout 5s | ||||
|           --health-retries 5 | ||||
|         ports: | ||||
|           - 6379:6379 | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: 18 | ||||
|       - name: Install dependencies | ||||
|         run: cd packages/backend && yarn | ||||
|       - name: Copy .env-example.test file to .env.test | ||||
|         run: cd packages/backend && cp .env-example.test .env.test | ||||
|       - name: Run tests | ||||
|         run: cd packages/backend && yarn test | ||||
							
								
								
									
										8
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,11 +1,5 @@ | ||||
| name: Automatisch CI | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|   pull_request: | ||||
|   workflow_dispatch: | ||||
|  | ||||
| on: [push] | ||||
| jobs: | ||||
|   linter: | ||||
|     runs-on: ubuntu-latest | ||||
|   | ||||
							
								
								
									
										121
									
								
								.github/workflows/playwright.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										121
									
								
								.github/workflows/playwright.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,121 +0,0 @@ | ||||
| name: Automatisch UI Tests | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - 'packages/backend/**' | ||||
|       - 'packages/e2e-tests/**' | ||||
|       - 'packages/web/**' | ||||
|       - '!packages/backend/src/apps/**' | ||||
|   workflow_dispatch: | ||||
|  | ||||
| env: | ||||
|   ENCRYPTION_KEY: sample_encryption_key | ||||
|   WEBHOOK_SECRET_KEY: sample_webhook_secret_key | ||||
|   APP_SECRET_KEY: sample_app_secret_key | ||||
|   POSTGRES_HOST: localhost | ||||
|   POSTGRES_DATABASE: automatisch | ||||
|   POSTGRES_PORT: 5432 | ||||
|   POSTGRES_USERNAME: automatisch_user | ||||
|   POSTGRES_PASSWORD: automatisch_password | ||||
|   REDIS_HOST: localhost | ||||
|   APP_ENV: production | ||||
|   LICENSE_KEY: dummy_license_key | ||||
|  | ||||
| jobs: | ||||
|   test: | ||||
|     timeout-minutes: 60 | ||||
|     runs-on: | ||||
|       - ubuntu-latest | ||||
|     services: | ||||
|       postgres: | ||||
|         image: postgres:14.5-alpine | ||||
|         env: | ||||
|           POSTGRES_DB: automatisch | ||||
|           POSTGRES_USER: automatisch_user | ||||
|           POSTGRES_PASSWORD: automatisch_password | ||||
|         options: >- | ||||
|           --health-cmd "pg_isready -U automatisch_user -d automatisch" | ||||
|           --health-interval 10s | ||||
|           --health-timeout 5s | ||||
|           --health-retries 5 | ||||
|         ports: | ||||
|           - 5432:5432 | ||||
|       redis: | ||||
|         image: redis:7.0.4-alpine | ||||
|         options: >- | ||||
|           --health-cmd "redis-cli ping" | ||||
|           --health-interval 10s | ||||
|           --health-timeout 5s | ||||
|           --health-retries 5 | ||||
|         ports: | ||||
|           - 6379:6379 | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: 18 | ||||
|       - name: Install dependencies | ||||
|         run: yarn && yarn lerna bootstrap | ||||
|       - name: Install Playwright Browsers | ||||
|         run: yarn playwright install --with-deps | ||||
|       - name: Build Automatisch | ||||
|         run: yarn lerna run --scope=@*/{web,backend,cli} build | ||||
|         env: | ||||
|           # Keep this until we clean up warnings in build processes | ||||
|           CI: false | ||||
|       - name: Migrate database | ||||
|         working-directory: ./packages/backend | ||||
|         run: yarn db:migrate --migrations-directory ./dist/src/db/migrations | ||||
|       - name: Seed user | ||||
|         working-directory: ./packages/backend | ||||
|         run: yarn db:seed:user & | ||||
|       - name: Install certutils | ||||
|         run: sudo apt install -y libnss3-tools | ||||
|       - name: Install mkcert | ||||
|         run: | | ||||
|           curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64" \ | ||||
|           && chmod +x mkcert-v*-linux-amd64 \ | ||||
|           && sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert | ||||
|       - name: Install root certificate via mkcert | ||||
|         run: mkcert -install | ||||
|       - name: Create certificate | ||||
|         run: mkcert automatisch.io "*.automatisch.io" localhost 127.0.0.1 ::1 | ||||
|         working-directory: ./packages/e2e-tests | ||||
|       - name: Set CAROOT environment variable | ||||
|         run: echo "NODE_EXTRA_CA_CERTS=$(mkcert -CAROOT)/rootCA.pem" >> "$GITHUB_ENV" | ||||
|       - name: Override license server with local server | ||||
|         run: sudo echo "127.0.0.1 license.automatisch.io" | sudo tee -a /etc/hosts | ||||
|       - name: Run local license server | ||||
|         working-directory: ./packages/e2e-tests | ||||
|         run: sudo yarn start-mock-license-server & | ||||
|       - name: Run Automatisch | ||||
|         run: yarn start & | ||||
|         working-directory: ./packages/backend | ||||
|       - name: Run Automatisch worker | ||||
|         run: node dist/src/worker.js & | ||||
|         working-directory: ./packages/backend | ||||
|       - name: Setup upterm session | ||||
|         if: false | ||||
|         uses: lhotari/action-upterm@v1 | ||||
|         with: | ||||
|           limit-access-to-actor: true | ||||
|           limit-access-to-users: barinali | ||||
|       - name: Run Playwright tests | ||||
|         working-directory: ./packages/e2e-tests | ||||
|         env: | ||||
|           LOGIN_EMAIL: user@automatisch.io | ||||
|           LOGIN_PASSWORD: sample | ||||
|           BASE_URL: http://localhost:3000 | ||||
|           GITHUB_CLIENT_ID: 1c0417daf898adfbd99a | ||||
|           GITHUB_CLIENT_SECRET: 3328fa814dd582ccd03dbe785cfd683fb8da92b3 | ||||
|         run: yarn test | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: always() | ||||
|         with: | ||||
|           name: playwright-report | ||||
|           path: packages/e2e-tests/test-results | ||||
|           retention-days: 30 | ||||
| @@ -1 +0,0 @@ | ||||
| 16.15.0 | ||||
							
								
								
									
										5
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +1,4 @@ | ||||
| { | ||||
|   "editor.formatOnSave": true, | ||||
|   "editor.defaultFormatter": "esbenp.prettier-vscode", | ||||
|   "[javascript]": { | ||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
|   } | ||||
|   "editor.defaultFormatter": "esbenp.prettier-vscode" | ||||
| } | ||||
|   | ||||
| @@ -4,7 +4,7 @@ WORKDIR /automatisch | ||||
|  | ||||
| RUN \ | ||||
|   apk --no-cache add --virtual build-dependencies python3 build-base && \ | ||||
|   yarn global add @automatisch/cli@0.10.0 --network-timeout 1000000 && \ | ||||
|   yarn global add @automatisch/cli@0.7.1 --network-timeout 1000000 && \ | ||||
|   rm -rf /usr/local/share/.cache/ && \ | ||||
|   apk del build-dependencies | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| # syntax=docker/dockerfile:1 | ||||
| FROM automatischio/automatisch:0.10.0 | ||||
| FROM automatischio/automatisch:0.7.1 | ||||
| WORKDIR /automatisch | ||||
|  | ||||
| RUN apk add --no-cache openssl dos2unix | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|   "packages": [ | ||||
|     "packages/*" | ||||
|   ], | ||||
|   "version": "0.10.0", | ||||
|   "version": "0.7.1", | ||||
|   "npmClient": "yarn", | ||||
|   "useWorkspaces": true, | ||||
|   "command": { | ||||
|   | ||||
| @@ -1,15 +0,0 @@ | ||||
| APP_ENV=test | ||||
| HOST=localhost | ||||
| PROTOCOL=http | ||||
| PORT=3000 | ||||
| LOG_LEVEL=debug | ||||
| ENCRYPTION_KEY=sample_encryption_key | ||||
| WEBHOOK_SECRET_KEY=sample_webhook_secret_key | ||||
| APP_SECRET_KEY=sample_app_secret_key | ||||
| POSTGRES_HOST=localhost | ||||
| POSTGRES_DATABASE=automatisch_test | ||||
| POSTGRES_PORT=5432 | ||||
| POSTGRES_USERNAME=automatisch_test_user | ||||
| POSTGRES_PASSWORD=automatisch_test_user_password | ||||
| REDIS_HOST=localhost | ||||
| AUTOMATISCH_CLOUD=true | ||||
| @@ -3,16 +3,36 @@ import logger from '../../src/helpers/logger'; | ||||
| import client from './client'; | ||||
| import User from '../../src/models/user'; | ||||
| import Role from '../../src/models/role'; | ||||
| import Permission from '../../src/models/permission'; | ||||
| import '../../src/config/orm'; | ||||
|  | ||||
| async function fetchAdminRole() { | ||||
|   const role = await Role | ||||
|     .query() | ||||
|     .where({ | ||||
|       key: 'admin' | ||||
|     }) | ||||
|     .limit(1) | ||||
|     .first(); | ||||
| async function seedPermissionsIfNeeded() { | ||||
|   const existingPermissions = await Permission.query().limit(1).first(); | ||||
|  | ||||
|   if (!existingPermissions) return; | ||||
|  | ||||
|   const getPermission = (subject: string, actions: string[]) => actions.map(action => ({ subject, action })); | ||||
|  | ||||
|   await Permission.query().insert([ | ||||
|     ...getPermission('Connection', ['create', 'read', 'delete', 'update']), | ||||
|     ...getPermission('Execution', ['read']), | ||||
|     ...getPermission('Flow', ['create', 'delete', 'publish', 'read', 'update']), | ||||
|     ...getPermission('Role', ['create', 'delete', 'read', 'update']), | ||||
|     ...getPermission('User', ['create', 'delete', 'read', 'update']), | ||||
|   ]) | ||||
| } | ||||
|  | ||||
| async function createOrFetchRole() { | ||||
|   const role = await Role.query().limit(1).first(); | ||||
|  | ||||
|   if (!role) { | ||||
|     const createdRole = await Role.query().insertAndFetch({ | ||||
|       name: 'Admin', | ||||
|       key: 'admin', | ||||
|     }); | ||||
|  | ||||
|     return createdRole; | ||||
|   } | ||||
|  | ||||
|   return role; | ||||
| } | ||||
| @@ -23,7 +43,9 @@ export async function createUser( | ||||
| ) { | ||||
|   const UNIQUE_VIOLATION_CODE = '23505'; | ||||
|  | ||||
|   const role = await fetchAdminRole(); | ||||
|   await seedPermissionsIfNeeded(); | ||||
|  | ||||
|   const role = await createOrFetchRole(); | ||||
|   const userParams = { | ||||
|     email, | ||||
|     password, | ||||
|   | ||||
| @@ -1,9 +0,0 @@ | ||||
| /** @type {import('ts-jest').JestConfigWithTsJest} */ | ||||
| module.exports = { | ||||
|   preset: 'ts-jest', | ||||
|   testEnvironment: 'node', | ||||
|   setupFilesAfterEnv: ['./test/setup/global-hooks.ts'], | ||||
|   globalTeardown: './test/setup/global-teardown.ts', | ||||
|   collectCoverage: true, | ||||
|   collectCoverageFrom: ['src/graphql/queries/*.ts'], | ||||
| }; | ||||
| @@ -1,7 +1,6 @@ | ||||
| import { knexSnakeCaseMappers } from 'objection'; | ||||
| import appConfig from './src/config/app'; | ||||
|  | ||||
| const fileExtension = appConfig.isDev || appConfig.isTest ? 'ts' : 'js'; | ||||
| const fileExtension = appConfig.isDev ? 'ts' : 'js'; | ||||
|  | ||||
| const knexConfig = { | ||||
|   client: 'pg', | ||||
| @@ -24,7 +23,6 @@ const knexConfig = { | ||||
|   seeds: { | ||||
|     directory: __dirname + '/src/db/seeds', | ||||
|   }, | ||||
|   ...(appConfig.isTest ? knexSnakeCaseMappers() : {}), | ||||
| }; | ||||
|  | ||||
| export default knexConfig; | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@automatisch/backend", | ||||
|   "version": "0.10.0", | ||||
|   "version": "0.7.1", | ||||
|   "license": "See LICENSE file", | ||||
|   "description": "The open source Zapier alternative. Build workflow automation without spending time and money.", | ||||
|   "scripts": { | ||||
| @@ -9,8 +9,7 @@ | ||||
|     "build": "tsc && yarn copy-statics", | ||||
|     "build:watch": "nodemon --watch 'src/**/*.ts' --watch 'bin/**/*.ts' --exec yarn build --ext ts", | ||||
|     "start": "node dist/src/server.js", | ||||
|     "pretest": "APP_ENV=test ts-node ./test/setup/prepare-test-env.ts", | ||||
|     "test": "APP_ENV=test jest --verbose", | ||||
|     "test": "ava", | ||||
|     "lint": "eslint . --ignore-path ../../.eslintignore", | ||||
|     "db:create": "ts-node ./bin/database/create.ts", | ||||
|     "db:seed:user": "ts-node ./bin/database/seed-user.ts", | ||||
| @@ -23,7 +22,7 @@ | ||||
|     "prebuild": "rm -rf ./dist" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@automatisch/web": "^0.10.0", | ||||
|     "@automatisch/web": "^0.7.1", | ||||
|     "@bull-board/express": "^3.10.1", | ||||
|     "@casl/ability": "^6.5.0", | ||||
|     "@graphql-tools/graphql-file-loader": "^7.3.4", | ||||
| @@ -32,13 +31,11 @@ | ||||
|     "@rudderstack/rudder-sdk-node": "^1.1.2", | ||||
|     "@sentry/node": "^7.42.0", | ||||
|     "@sentry/tracing": "^7.42.0", | ||||
|     "@types/accounting": "^0.4.2", | ||||
|     "@types/luxon": "^2.3.1", | ||||
|     "@types/passport": "^1.0.12", | ||||
|     "@types/xmlrpc": "^1.3.7", | ||||
|     "accounting": "^0.4.1", | ||||
|     "ajv-formats": "^2.1.1", | ||||
|     "axios": "1.6.0", | ||||
|     "axios": "0.24.0", | ||||
|     "bcrypt": "^5.0.1", | ||||
|     "bullmq": "^3.0.0", | ||||
|     "copyfiles": "^2.4.1", | ||||
| @@ -56,26 +53,19 @@ | ||||
|     "graphql-type-json": "^0.3.2", | ||||
|     "handlebars": "^4.7.7", | ||||
|     "http-errors": "~1.6.3", | ||||
|     "http-proxy-agent": "^7.0.0", | ||||
|     "https-proxy-agent": "^7.0.1", | ||||
|     "jsonwebtoken": "^9.0.0", | ||||
|     "knex": "^2.4.0", | ||||
|     "libphonenumber-js": "^1.10.48", | ||||
|     "lodash.get": "^4.4.2", | ||||
|     "luxon": "2.5.2", | ||||
|     "memory-cache": "^0.2.0", | ||||
|     "morgan": "^1.10.0", | ||||
|     "multer": "1.4.5-lts.1", | ||||
|     "node-html-markdown": "^1.3.0", | ||||
|     "nodemailer": "6.7.0", | ||||
|     "oauth-1.0a": "^2.2.6", | ||||
|     "objection": "^3.0.0", | ||||
|     "passport": "^0.6.0", | ||||
|     "pg": "^8.7.1", | ||||
|     "php-serialize": "^4.0.2", | ||||
|     "pluralize": "^8.0.0", | ||||
|     "raw-body": "^2.5.2", | ||||
|     "showdown": "^2.1.0", | ||||
|     "stripe": "^11.13.0", | ||||
|     "winston": "^3.7.1", | ||||
|     "xmlrpc": "^1.3.2" | ||||
| @@ -116,15 +106,13 @@ | ||||
|     "url": "https://github.com/automatisch/automatisch/issues" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@automatisch/types": "^0.10.0", | ||||
|     "@faker-js/faker": "^8.1.0", | ||||
|     "@automatisch/types": "^0.7.1", | ||||
|     "@types/bcrypt": "^5.0.0", | ||||
|     "@types/bull": "^3.15.8", | ||||
|     "@types/cors": "^2.8.12", | ||||
|     "@types/crypto-js": "^4.0.2", | ||||
|     "@types/express": "^4.17.15", | ||||
|     "@types/http-errors": "^1.8.1", | ||||
|     "@types/jest": "^29.5.5", | ||||
|     "@types/jsonwebtoken": "^8.5.8", | ||||
|     "@types/lodash.get": "^4.4.6", | ||||
|     "@types/memory-cache": "^0.2.2", | ||||
| @@ -134,17 +122,23 @@ | ||||
|     "@types/nodemailer": "^6.4.4", | ||||
|     "@types/pg": "^8.6.1", | ||||
|     "@types/pino": "^7.0.5", | ||||
|     "@types/pluralize": "^0.0.30", | ||||
|     "@types/showdown": "^2.0.1", | ||||
|     "@types/supertest": "^2.0.14", | ||||
|     "jest": "^29.7.0", | ||||
|     "ava": "^3.15.0", | ||||
|     "nodemon": "^2.0.13", | ||||
|     "sinon": "^11.1.2", | ||||
|     "supertest": "^6.3.3", | ||||
|     "ts-jest": "^29.1.1", | ||||
|     "ts-node": "^10.2.1", | ||||
|     "ts-node-dev": "^1.1.8" | ||||
|   }, | ||||
|   "ava": { | ||||
|     "files": [ | ||||
|       "test/**/*" | ||||
|     ], | ||||
|     "extensions": [ | ||||
|       "ts" | ||||
|     ], | ||||
|     "require": [ | ||||
|       "ts-node/register" | ||||
|     ] | ||||
|   }, | ||||
|   "publishConfig": { | ||||
|     "access": "public" | ||||
|   } | ||||
|   | ||||
| @@ -33,7 +33,6 @@ injectBullBoardHandler(app, serverAdapter); | ||||
| appAssetsHandler(app); | ||||
|  | ||||
| app.use(morgan); | ||||
|  | ||||
| app.use( | ||||
|   express.json({ | ||||
|     limit: appConfig.requestBodySizeLimit, | ||||
|   | ||||
| @@ -1,35 +0,0 @@ | ||||
| import defineAction from '../../../../helpers/define-action'; | ||||
|  | ||||
| export default defineAction({ | ||||
|   name: 'Add Template', | ||||
|   key: 'addTemplate', | ||||
|   description: | ||||
|     'Creates an attachment of a specified object by given parent ID.', | ||||
|   arguments: [ | ||||
|     { | ||||
|       label: 'Templete Data', | ||||
|       key: 'templateData', | ||||
|       type: 'string' as const, | ||||
|       required: true, | ||||
|       variables: true, | ||||
|       description: 'The content of your new Template in XML/HTML format.', | ||||
|     }, | ||||
|   ], | ||||
|  | ||||
|   async run($) { | ||||
|     const templateData = $.step.parameters.templateData as string; | ||||
|  | ||||
|     const base64Data = Buffer.from(templateData).toString('base64'); | ||||
|     const dataURI = `data:application/xml;base64,${base64Data}`; | ||||
|  | ||||
|     const body = JSON.stringify({ template: dataURI }); | ||||
|  | ||||
|     const response = await $.http.post('/template', body, { | ||||
|       headers: { | ||||
|         'Content-Type': 'application/json', | ||||
|       }, | ||||
|     }); | ||||
|  | ||||
|     $.setActionItem({ raw: response.data }); | ||||
|   }, | ||||
| }); | ||||
| @@ -1,3 +0,0 @@ | ||||
| import addTemplate from './add-template'; | ||||
|  | ||||
| export default [addTemplate]; | ||||
| @@ -1,444 +0,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" | ||||
| 	 width="100%" viewBox="0 0 1173 1173" enable-background="new 0 0 1173 1173" xml:space="preserve"> | ||||
| <path fill="#73348B" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M1174.000000,208.000000  | ||||
| 	C1174.000000,529.969421 1174.000000,851.938782 1174.000000,1173.954102  | ||||
| 	C783.067810,1173.954102 392.135559,1173.954102 1.101677,1173.954102  | ||||
| 	C1.101677,783.104980 1.101677,392.209930 1.101677,1.000000  | ||||
| 	C322.697510,1.000000 644.395142,1.000000 966.516235,1.467920  | ||||
| 	C966.918274,68.235474 966.895691,134.535110 966.877258,200.834747  | ||||
| 	C966.875183,208.314804 966.885986,208.322311 974.623108,208.322571  | ||||
| 	C1038.924072,208.324631 1103.225098,208.326889 1167.526123,208.310104  | ||||
| 	C1169.684082,208.309540 1171.842041,208.107910 1174.000000,208.000000  | ||||
| M824.469116,403.972260  | ||||
| 	C830.640320,396.844513 836.811584,389.716736 843.084839,382.471130  | ||||
| 	C813.026611,353.649353 780.256958,329.661011 741.486328,314.979523  | ||||
| 	C680.713013,291.966217 618.102173,287.454407 554.867737,301.133331  | ||||
| 	C463.817413,320.829376 397.312988,373.276550 356.951416,457.320282  | ||||
| 	C326.804779,520.093689 319.957764,586.465027 335.155365,654.111511  | ||||
| 	C358.404633,757.597168 419.946594,829.052856 520.224731,865.190979  | ||||
| 	C575.706055,885.185242 632.887451,885.395691 690.185303,873.820862  | ||||
| 	C753.158081,861.099548 803.501465,826.733521 847.328979,780.124756  | ||||
| 	C825.522522,758.991638 803.799194,737.939087 781.866882,716.683960  | ||||
| 	C775.039185,722.581055 767.314697,729.376404 759.459290,736.016846  | ||||
| 	C716.790833,772.086792 668.088501,791.050049 611.649048,788.182129  | ||||
| 	C555.974548,785.353088 510.796692,761.934998 476.366638,718.347046  | ||||
| 	C450.585236,685.708313 437.160706,648.031494 433.752258,606.690613  | ||||
| 	C430.193268,563.523926 437.309692,522.406311 457.904602,484.052490  | ||||
| 	C496.945190,411.347198 573.378845,374.580780 654.712402,388.765686  | ||||
| 	C691.388062,395.162079 723.361389,411.383057 752.404175,434.001740  | ||||
| 	C761.432556,441.033173 770.043213,448.601013 779.130859,456.160980  | ||||
| 	C794.123657,438.910675 809.069336,421.714569 824.469116,403.972260  | ||||
| M401.126434,1003.500000  | ||||
| 	C401.122375,996.333740 401.039398,989.166199 401.152191,982.001770  | ||||
| 	C401.198700,979.046997 400.149170,977.760315 397.091583,977.847290  | ||||
| 	C392.096008,977.989441 387.061035,978.231079 382.102264,977.778320  | ||||
| 	C376.825531,977.296387 375.754608,979.441406 375.775360,984.315125  | ||||
| 	C375.949005,1025.145630 375.873474,1065.977417 375.874237,1106.808716  | ||||
| 	C375.874329,1113.141724 375.994049,1119.477539 375.836487,1125.806519  | ||||
| 	C375.755646,1129.053101 376.993805,1130.258667 380.217560,1130.162231  | ||||
| 	C385.712311,1129.997559 391.222198,1129.953491 396.712982,1130.175049  | ||||
| 	C400.378265,1130.322998 401.327179,1128.650757 401.160339,1125.375610  | ||||
| 	C400.987305,1121.979004 401.121826,1118.566772 401.121826,1114.051758  | ||||
| 	C403.029083,1115.849609 404.038116,1116.655273 404.875366,1117.611572  | ||||
| 	C423.297913,1138.649780 456.085083,1135.565308 472.987305,1118.665161  | ||||
| 	C494.109619,1097.545654 495.745544,1057.582886 476.289124,1034.845947  | ||||
| 	C458.642456,1014.223816 423.619873,1010.312439 404.695007,1033.663574  | ||||
| 	C403.933044,1034.603882 402.896790,1035.321899 401.126709,1036.922485  | ||||
| 	C401.126709,1025.377563 401.126709,1014.938782 401.126434,1003.500000  | ||||
| M1021.364685,1102.039429  | ||||
| 	C1034.668091,1125.202515 1054.950562,1134.733032 1081.114746,1132.114380  | ||||
| 	C1116.971191,1128.525757 1140.394165,1093.509888 1130.352783,1058.871704  | ||||
| 	C1120.842163,1026.064697 1084.911865,1009.039368 1051.827393,1021.662964  | ||||
| 	C1020.072083,1033.779419 1006.094421,1069.964478 1021.364685,1102.039429  | ||||
| M513.859009,1053.461792  | ||||
| 	C508.981232,1065.614258 508.319275,1078.089722 511.612946,1090.667114  | ||||
| 	C518.928467,1118.602539 545.601379,1135.665771 576.077942,1132.138428  | ||||
| 	C615.868713,1127.533081 639.243103,1085.250000 621.290771,1049.613525  | ||||
| 	C609.925598,1027.053101 590.627502,1017.015625 565.767517,1017.961548  | ||||
| 	C541.582703,1018.881775 524.357849,1030.779541 513.859009,1053.461792  | ||||
| M853.945312,1105.526489  | ||||
| 	C844.979370,1111.390137 835.234131,1113.082764 824.789001,1110.928833  | ||||
| 	C812.187134,1108.330078 801.815186,1096.424561 801.983032,1084.128296  | ||||
| 	C803.915649,1084.128296 805.872803,1084.128418 807.829956,1084.128296  | ||||
| 	C827.828918,1084.128174 847.827942,1084.128174 867.826904,1084.128052  | ||||
| 	C883.022278,1084.128052 883.416565,1084.089355 881.911011,1068.743774  | ||||
| 	C877.873352,1027.588623 845.873840,1010.303040 812.589294,1020.461792  | ||||
| 	C788.140564,1027.923828 771.315674,1053.597778 776.625183,1086.417480  | ||||
| 	C782.995667,1125.795166 822.767029,1141.211426 855.517578,1128.350586  | ||||
| 	C864.166870,1124.953979 871.321899,1119.494873 877.282959,1111.812744  | ||||
| 	C872.197815,1107.281738 867.508911,1103.103882 862.714783,1098.832153  | ||||
| 	C859.777344,1101.088501 857.158447,1103.100098 853.945312,1105.526489  | ||||
| M183.035294,1022.439941  | ||||
| 	C178.726364,1024.044678 174.417435,1025.649414 169.759094,1027.384277  | ||||
| 	C172.080597,1034.339355 174.168320,1040.594116 176.396927,1047.270874  | ||||
| 	C178.710007,1046.498047 180.428452,1045.982422 182.104675,1045.354126  | ||||
| 	C192.414581,1041.489502 203.049866,1039.981567 214.012650,1041.017212  | ||||
| 	C228.197418,1042.357178 237.230057,1053.265137 234.370621,1065.622192  | ||||
| 	C233.945877,1065.733521 233.456528,1066.014160 233.019272,1065.948486  | ||||
| 	C231.544067,1065.726807 230.081848,1065.406616 228.624466,1065.080322  | ||||
| 	C213.432663,1061.679199 198.251007,1060.834473 183.260117,1065.925537  | ||||
| 	C168.246078,1071.024536 160.203674,1082.376099 160.159256,1097.991577  | ||||
| 	C160.116211,1113.124634 168.617416,1125.277100 183.512024,1129.868774  | ||||
| 	C201.272339,1135.343872 217.762161,1132.975952 231.922165,1119.980591  | ||||
| 	C232.681229,1119.283936 233.598526,1118.759888 234.998825,1117.756470  | ||||
| 	C234.998825,1120.660034 235.167923,1122.828491 234.961670,1124.960815  | ||||
| 	C234.595810,1128.743408 235.836517,1130.435547 239.938004,1130.198853  | ||||
| 	C245.253296,1129.892090 250.601852,1130.021362 255.931290,1130.154541  | ||||
| 	C258.904449,1130.228760 260.057526,1129.146118 260.038300,1126.091797  | ||||
| 	C259.899628,1104.095337 260.293976,1082.087280 259.708466,1060.104492  | ||||
| 	C259.149353,1039.110596 247.823425,1025.003418 228.752792,1020.447083  | ||||
| 	C213.662979,1016.841919 198.651810,1018.154236 183.035294,1022.439941  | ||||
| M652.674988,1084.500000  | ||||
| 	C652.676819,1097.990356 652.774353,1111.481812 652.619568,1124.970337  | ||||
| 	C652.575684,1128.797485 653.756165,1130.430420 657.763428,1130.184448  | ||||
| 	C662.243225,1129.909424 666.753052,1130.130493 671.249817,1130.123413  | ||||
| 	C677.988098,1130.112915 677.994995,1130.108398 677.998840,1123.280029  | ||||
| 	C678.009644,1104.127197 677.813293,1084.971313 678.088196,1065.822388  | ||||
| 	C678.289795,1051.782104 687.650574,1041.728882 700.475464,1040.969238  | ||||
| 	C714.725037,1040.125244 723.562256,1047.280884 725.706665,1061.495361  | ||||
| 	C726.002808,1063.458374 725.985596,1065.479614 725.987732,1067.474121  | ||||
| 	C726.007690,1086.627075 726.075562,1105.780396 725.937012,1124.932373  | ||||
| 	C725.910034,1128.659790 726.763428,1130.436401 730.909912,1130.197876  | ||||
| 	C736.388123,1129.882690 741.898499,1130.048462 747.393127,1130.132080  | ||||
| 	C750.111389,1130.173340 751.333618,1129.085205 751.318970,1126.315796  | ||||
| 	C751.187561,1101.504028 751.651367,1076.672607 750.778564,1051.887817  | ||||
| 	C750.329590,1039.136963 743.986084,1028.674927 732.321106,1022.254761  | ||||
| 	C716.863159,1013.746887 695.690918,1017.041931 683.479919,1029.807129  | ||||
| 	C681.911743,1031.446533 680.418274,1033.157227 677.994934,1035.817871  | ||||
| 	C677.994934,1031.179810 677.847046,1027.753906 678.037964,1024.347046  | ||||
| 	C678.215881,1021.172424 677.140076,1019.820496 673.800659,1019.952393  | ||||
| 	C668.645813,1020.156006 663.460022,1020.260315 658.319153,1019.922363  | ||||
| 	C653.942261,1019.634521 652.544373,1021.128174 652.590515,1025.542358  | ||||
| 	C652.792175,1044.859741 652.675354,1064.180542 652.674988,1084.500000  | ||||
| M119.317238,1046.101074  | ||||
| 	C122.268578,1048.446411 125.219917,1050.791626 127.387344,1052.514038  | ||||
| 	C132.109711,1048.247925 136.374313,1044.289062 140.759842,1040.468872  | ||||
| 	C144.010681,1037.637085 143.275986,1035.555298 140.351669,1032.810791  | ||||
| 	C125.930077,1019.275879 108.562424,1015.442383 89.835030,1018.619995  | ||||
| 	C58.671745,1023.907654 39.333969,1050.496826 43.188984,1083.193359  | ||||
| 	C45.926426,1106.411377 59.195229,1122.338257 81.478561,1129.875244  | ||||
| 	C103.477272,1137.315918 128.440613,1130.652588 142.387802,1114.456543  | ||||
| 	C144.090958,1112.478760 144.008331,1111.254517 142.279175,1109.447876  | ||||
| 	C138.256943,1105.245117 134.418365,1100.866577 130.299011,1096.332031  | ||||
| 	C121.771889,1103.853394 113.867172,1109.740845 103.144859,1110.191895  | ||||
| 	C92.244728,1110.650269 83.239876,1107.153076 76.138634,1098.826416  | ||||
| 	C65.223991,1086.028564 65.297775,1064.157593 76.319031,1051.184937  | ||||
| 	C87.046638,1038.557983 103.476791,1036.430054 119.317238,1046.101074  | ||||
| M353.950317,1043.008423  | ||||
| 	C354.006683,1036.186401 353.906464,1029.358154 354.180176,1022.544922  | ||||
| 	C354.335571,1018.677124 352.771240,1017.653687 349.151764,1017.919495  | ||||
| 	C335.330078,1018.934265 325.588013,1026.116211 318.604279,1037.643921  | ||||
| 	C317.750885,1039.052734 316.890594,1040.457275 316.033447,1041.863770  | ||||
| 	C315.121674,1035.918945 314.900055,1030.423950 315.194824,1024.956665  | ||||
| 	C315.413696,1020.897034 313.799438,1019.733093 309.981384,1019.938782  | ||||
| 	C305.168030,1020.198242 300.312347,1020.256714 295.507935,1019.924500  | ||||
| 	C291.198883,1019.626587 289.697205,1020.959900 289.777374,1025.465820  | ||||
| 	C290.040833,1040.276245 289.874969,1055.094116 289.875153,1069.909180  | ||||
| 	C289.875397,1088.219849 289.984222,1106.531616 289.796387,1124.840332  | ||||
| 	C289.753448,1129.024658 291.144775,1130.494019 295.243988,1130.181030  | ||||
| 	C298.884857,1129.903076 302.564056,1130.154053 306.225861,1130.119141  | ||||
| 	C316.127838,1130.024902 314.970276,1131.203003 315.137146,1121.384644  | ||||
| 	C315.383026,1106.919067 314.932556,1092.386353 316.201233,1078.007690  | ||||
| 	C317.784821,1060.059814 328.779388,1048.418091 344.942749,1045.376465  | ||||
| 	C347.832062,1044.832642 350.733795,1044.354858 353.950317,1043.008423  | ||||
| M970.561462,1130.149170  | ||||
| 	C976.347717,1130.149170 982.133972,1130.149170 988.190430,1130.149170  | ||||
| 	C988.190430,1093.234131 988.190430,1056.859741 988.190430,1020.333618  | ||||
| 	C979.702515,1020.333618 971.488037,1020.333618 963.325317,1020.333618  | ||||
| 	C963.325317,1057.058838 963.325317,1093.449585 963.325317,1130.149170  | ||||
| 	C965.622131,1130.149170 967.600586,1130.149170 970.561462,1130.149170  | ||||
| M931.087708,1129.856323  | ||||
| 	C931.087708,1120.373291 931.087708,1110.890259 931.087708,1101.511963  | ||||
| 	C922.010315,1101.511963 913.093201,1101.511963 904.095581,1101.511963  | ||||
| 	C904.095581,1111.126099 904.095581,1120.382812 904.095581,1130.103516  | ||||
| 	C912.953064,1130.103516 921.562012,1130.103516 931.087708,1129.856323  | ||||
| M989.143494,1000.348511  | ||||
| 	C989.143494,993.401855 989.143494,986.455139 989.143494,979.396606  | ||||
| 	C979.834900,979.396606 970.989380,979.396606 962.400879,979.396606  | ||||
| 	C962.400879,987.527710 962.400879,995.258179 962.400879,1003.146362  | ||||
| 	C970.452820,1003.146362 978.106445,1003.221008 985.755371,1003.064941  | ||||
| 	C986.887451,1003.041870 987.997314,1001.928955 989.143494,1000.348511  | ||||
| z"/> | ||||
| <path fill="#B497C6" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M1174.000000,207.750000  | ||||
| 	C1171.842041,208.107910 1169.684082,208.309540 1167.526123,208.310104  | ||||
| 	C1103.225098,208.326889 1038.924072,208.324631 974.623108,208.322571  | ||||
| 	C966.885986,208.322311 966.875183,208.314804 966.877258,200.834747  | ||||
| 	C966.895691,134.535110 966.918274,68.235474 966.969849,1.467920  | ||||
| 	C967.000000,1.000000 967.500000,1.000000 967.892212,1.300326  | ||||
| 	C968.620972,1.969603 968.943176,2.352815 969.295898,2.705561  | ||||
| 	C1036.645020,70.060425 1103.995605,137.413895 1171.356201,204.757263  | ||||
| 	C1172.170776,205.571564 1173.115845,206.255310 1174.000000,207.000000  | ||||
| 	C1174.000000,207.000000 1174.000000,207.500000 1174.000000,207.750000  | ||||
| z"/> | ||||
| <path fill="#FFFFFF" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M1174.000000,206.533020  | ||||
| 	C1173.115845,206.255310 1172.170776,205.571564 1171.356201,204.757263  | ||||
| 	C1103.995605,137.413895 1036.645020,70.060425 969.295898,2.705561  | ||||
| 	C968.943176,2.352815 968.620972,1.969603 968.142212,1.300326  | ||||
| 	C1036.594238,1.000000 1105.188599,1.000000 1174.000000,1.000000  | ||||
| 	C1174.000000,69.355194 1174.000000,137.710617 1174.000000,206.533020  | ||||
| z"/> | ||||
| <path fill="#FFFFFF" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M824.242065,404.245361  | ||||
| 	C809.069336,421.714569 794.123657,438.910675 779.130859,456.160980  | ||||
| 	C770.043213,448.601013 761.432556,441.033173 752.404175,434.001740  | ||||
| 	C723.361389,411.383057 691.388062,395.162079 654.712402,388.765686  | ||||
| 	C573.378845,374.580780 496.945190,411.347198 457.904602,484.052490  | ||||
| 	C437.309692,522.406311 430.193268,563.523926 433.752258,606.690613  | ||||
| 	C437.160706,648.031494 450.585236,685.708313 476.366638,718.347046  | ||||
| 	C510.796692,761.934998 555.974548,785.353088 611.649048,788.182129  | ||||
| 	C668.088501,791.050049 716.790833,772.086792 759.459290,736.016846  | ||||
| 	C767.314697,729.376404 775.039185,722.581055 781.866882,716.683960  | ||||
| 	C803.799194,737.939087 825.522522,758.991638 847.328979,780.124756  | ||||
| 	C803.501465,826.733521 753.158081,861.099548 690.185303,873.820862  | ||||
| 	C632.887451,885.395691 575.706055,885.185242 520.224731,865.190979  | ||||
| 	C419.946594,829.052856 358.404633,757.597168 335.155365,654.111511  | ||||
| 	C319.957764,586.465027 326.804779,520.093689 356.951416,457.320282  | ||||
| 	C397.312988,373.276550 463.817413,320.829376 554.867737,301.133331  | ||||
| 	C618.102173,287.454407 680.713013,291.966217 741.486328,314.979523  | ||||
| 	C780.256958,329.661011 813.026611,353.649353 843.084839,382.471130  | ||||
| 	C836.811584,389.716736 830.640320,396.844513 824.242065,404.245361  | ||||
| z"/> | ||||
| <path fill="#B496C6" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M401.126587,1004.000000  | ||||
| 	C401.126709,1014.938782 401.126709,1025.377563 401.126709,1036.922485  | ||||
| 	C402.896790,1035.321899 403.933044,1034.603882 404.695007,1033.663574  | ||||
| 	C423.619873,1010.312439 458.642456,1014.223816 476.289124,1034.845947  | ||||
| 	C495.745544,1057.582886 494.109619,1097.545654 472.987305,1118.665161  | ||||
| 	C456.085083,1135.565308 423.297913,1138.649780 404.875366,1117.611572  | ||||
| 	C404.038116,1116.655273 403.029083,1115.849609 401.121826,1114.051758  | ||||
| 	C401.121826,1118.566772 400.987305,1121.979004 401.160339,1125.375610  | ||||
| 	C401.327179,1128.650757 400.378265,1130.322998 396.712982,1130.175049  | ||||
| 	C391.222198,1129.953491 385.712311,1129.997559 380.217560,1130.162231  | ||||
| 	C376.993805,1130.258667 375.755646,1129.053101 375.836487,1125.806519  | ||||
| 	C375.994049,1119.477539 375.874329,1113.141724 375.874237,1106.808716  | ||||
| 	C375.873474,1065.977417 375.949005,1025.145630 375.775360,984.315125  | ||||
| 	C375.754608,979.441406 376.825531,977.296387 382.102264,977.778320  | ||||
| 	C387.061035,978.231079 392.096008,977.989441 397.091583,977.847290  | ||||
| 	C400.149170,977.760315 401.198700,979.046997 401.152191,982.001770  | ||||
| 	C401.039398,989.166199 401.122375,996.333740 401.126587,1004.000000  | ||||
| M401.102875,1069.011719  | ||||
| 	C400.098053,1078.886963 401.329559,1088.256470 407.101685,1096.684570  | ||||
| 	C420.591766,1116.381714 449.957458,1114.592529 459.843262,1092.900513  | ||||
| 	C462.811829,1086.386719 463.929352,1078.394409 463.659058,1071.163086  | ||||
| 	C462.954895,1052.325073 448.612427,1039.179199 431.024689,1039.892334  | ||||
| 	C416.229248,1040.492432 405.168213,1050.977661 401.102875,1069.011719  | ||||
| z"/> | ||||
| <path fill="#FEFDFE" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M1021.202576,1101.701294  | ||||
| 	C1006.094421,1069.964478 1020.072083,1033.779419 1051.827393,1021.662964  | ||||
| 	C1084.911865,1009.039368 1120.842163,1026.064697 1130.352783,1058.871704  | ||||
| 	C1140.394165,1093.509888 1116.971191,1128.525757 1081.114746,1132.114380  | ||||
| 	C1054.950562,1134.733032 1034.668091,1125.202515 1021.202576,1101.701294  | ||||
| M1063.986572,1041.223145  | ||||
| 	C1048.638306,1046.359863 1041.596069,1057.693604 1040.531982,1073.203491  | ||||
| 	C1038.714111,1099.699341 1064.766113,1118.165283 1088.315552,1107.193970  | ||||
| 	C1103.746460,1100.005005 1111.074951,1080.915771 1105.178711,1063.268677  | ||||
| 	C1099.385498,1045.930298 1083.597778,1037.239746 1063.986572,1041.223145  | ||||
| z"/> | ||||
| <path fill="#B396C5" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M513.996948,1053.104736  | ||||
| 	C524.357849,1030.779541 541.582703,1018.881775 565.767517,1017.961548  | ||||
| 	C590.627502,1017.015625 609.925598,1027.053101 621.290771,1049.613525  | ||||
| 	C639.243103,1085.250000 615.868713,1127.533081 576.077942,1132.138428  | ||||
| 	C545.601379,1135.665771 518.928467,1118.602539 511.612946,1090.667114  | ||||
| 	C508.319275,1078.089722 508.981232,1065.614258 513.996948,1053.104736  | ||||
| M562.260620,1040.444092  | ||||
| 	C546.615784,1043.979858 537.547485,1054.070801 535.297913,1070.447632  | ||||
| 	C533.121765,1086.289917 541.953796,1102.308838 555.941284,1107.888672  | ||||
| 	C570.341492,1113.633301 586.898376,1109.268066 595.135681,1096.926514  | ||||
| 	C603.733704,1084.044556 604.355286,1070.265991 596.774170,1056.799438  | ||||
| 	C589.497620,1043.873901 577.771179,1038.791748 562.260620,1040.444092  | ||||
| z"/> | ||||
| <path fill="#B396C5" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M854.242432,1105.319092  | ||||
| 	C857.158447,1103.100098 859.777344,1101.088501 862.714783,1098.832153  | ||||
| 	C867.508911,1103.103882 872.197815,1107.281738 877.282959,1111.812744  | ||||
| 	C871.321899,1119.494873 864.166870,1124.953979 855.517578,1128.350586  | ||||
| 	C822.767029,1141.211426 782.995667,1125.795166 776.625183,1086.417480  | ||||
| 	C771.315674,1053.597778 788.140564,1027.923828 812.589294,1020.461792  | ||||
| 	C845.873840,1010.303040 877.873352,1027.588623 881.911011,1068.743774  | ||||
| 	C883.416565,1084.089355 883.022278,1084.128052 867.826904,1084.128052  | ||||
| 	C847.827942,1084.128174 827.828918,1084.128174 807.829956,1084.128296  | ||||
| 	C805.872803,1084.128418 803.915649,1084.128296 801.983032,1084.128296  | ||||
| 	C801.815186,1096.424561 812.187134,1108.330078 824.789001,1110.928833  | ||||
| 	C835.234131,1113.082764 844.979370,1111.390137 854.242432,1105.319092  | ||||
| M807.682800,1067.153442  | ||||
| 	C823.922729,1067.153442 840.162659,1067.153442 856.360352,1067.153442  | ||||
| 	C857.024231,1051.490723 843.821167,1038.060181 828.868347,1038.415405  | ||||
| 	C814.209839,1038.763672 800.809204,1052.746582 801.885498,1066.903320  | ||||
| 	C803.478333,1066.985229 805.112427,1067.069336 807.682800,1067.153442  | ||||
| z"/> | ||||
| <path fill="#B396C6" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M183.418549,1022.317383  | ||||
| 	C198.651810,1018.154236 213.662979,1016.841919 228.752792,1020.447083  | ||||
| 	C247.823425,1025.003418 259.149353,1039.110596 259.708466,1060.104492  | ||||
| 	C260.293976,1082.087280 259.899628,1104.095337 260.038300,1126.091797  | ||||
| 	C260.057526,1129.146118 258.904449,1130.228760 255.931290,1130.154541  | ||||
| 	C250.601852,1130.021362 245.253296,1129.892090 239.938004,1130.198853  | ||||
| 	C235.836517,1130.435547 234.595810,1128.743408 234.961670,1124.960815  | ||||
| 	C235.167923,1122.828491 234.998825,1120.660034 234.998825,1117.756470  | ||||
| 	C233.598526,1118.759888 232.681229,1119.283936 231.922165,1119.980591  | ||||
| 	C217.762161,1132.975952 201.272339,1135.343872 183.512024,1129.868774  | ||||
| 	C168.617416,1125.277100 160.116211,1113.124634 160.159256,1097.991577  | ||||
| 	C160.203674,1082.376099 168.246078,1071.024536 183.260117,1065.925537  | ||||
| 	C198.251007,1060.834473 213.432663,1061.679199 228.624466,1065.080322  | ||||
| 	C230.081848,1065.406616 231.544067,1065.726807 233.019272,1065.948486  | ||||
| 	C233.456528,1066.014160 233.945877,1065.733521 234.370621,1065.622192  | ||||
| 	C237.230057,1053.265137 228.197418,1042.357178 214.012650,1041.017212  | ||||
| 	C203.049866,1039.981567 192.414581,1041.489502 182.104675,1045.354126  | ||||
| 	C180.428452,1045.982422 178.710007,1046.498047 176.396927,1047.270874  | ||||
| 	C174.168320,1040.594116 172.080597,1034.339355 169.759094,1027.384277  | ||||
| 	C174.417435,1025.649414 178.726364,1024.044678 183.418549,1022.317383  | ||||
| M222.614487,1110.282959  | ||||
| 	C232.280441,1105.292969 236.480362,1097.197876 235.760620,1086.535889  | ||||
| 	C235.661087,1085.061401 234.448975,1082.775879 233.263031,1082.397217  | ||||
| 	C220.997086,1078.481323 208.516418,1076.766968 196.064621,1081.398193  | ||||
| 	C188.557663,1084.190308 184.559586,1090.745972 185.061066,1098.121948  | ||||
| 	C185.541321,1105.185791 190.386749,1110.687134 198.052612,1112.792114  | ||||
| 	C206.277649,1115.050659 214.217789,1113.966431 222.614487,1110.282959  | ||||
| z"/> | ||||
| <path fill="#B497C6" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M652.674561,1084.000000  | ||||
| 	C652.675354,1064.180542 652.792175,1044.859741 652.590515,1025.542358  | ||||
| 	C652.544373,1021.128174 653.942261,1019.634521 658.319153,1019.922363  | ||||
| 	C663.460022,1020.260315 668.645813,1020.156006 673.800659,1019.952393  | ||||
| 	C677.140076,1019.820496 678.215881,1021.172424 678.037964,1024.347046  | ||||
| 	C677.847046,1027.753906 677.994934,1031.179810 677.994934,1035.817871  | ||||
| 	C680.418274,1033.157227 681.911743,1031.446533 683.479919,1029.807129  | ||||
| 	C695.690918,1017.041931 716.863159,1013.746887 732.321106,1022.254761  | ||||
| 	C743.986084,1028.674927 750.329590,1039.136963 750.778564,1051.887817  | ||||
| 	C751.651367,1076.672607 751.187561,1101.504028 751.318970,1126.315796  | ||||
| 	C751.333618,1129.085205 750.111389,1130.173340 747.393127,1130.132080  | ||||
| 	C741.898499,1130.048462 736.388123,1129.882690 730.909912,1130.197876  | ||||
| 	C726.763428,1130.436401 725.910034,1128.659790 725.937012,1124.932373  | ||||
| 	C726.075562,1105.780396 726.007690,1086.627075 725.987732,1067.474121  | ||||
| 	C725.985596,1065.479614 726.002808,1063.458374 725.706665,1061.495361  | ||||
| 	C723.562256,1047.280884 714.725037,1040.125244 700.475464,1040.969238  | ||||
| 	C687.650574,1041.728882 678.289795,1051.782104 678.088196,1065.822388  | ||||
| 	C677.813293,1084.971313 678.009644,1104.127197 677.998840,1123.280029  | ||||
| 	C677.994995,1130.108398 677.988098,1130.112915 671.249817,1130.123413  | ||||
| 	C666.753052,1130.130493 662.243225,1129.909424 657.763428,1130.184448  | ||||
| 	C653.756165,1130.430420 652.575684,1128.797485 652.619568,1124.970337  | ||||
| 	C652.774353,1111.481812 652.676819,1097.990356 652.674561,1084.000000  | ||||
| z"/> | ||||
| <path fill="#B396C5" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M119.017403,1045.897461  | ||||
| 	C103.476791,1036.430054 87.046638,1038.557983 76.319031,1051.184937  | ||||
| 	C65.297775,1064.157593 65.223991,1086.028564 76.138634,1098.826416  | ||||
| 	C83.239876,1107.153076 92.244728,1110.650269 103.144859,1110.191895  | ||||
| 	C113.867172,1109.740845 121.771889,1103.853394 130.299011,1096.332031  | ||||
| 	C134.418365,1100.866577 138.256943,1105.245117 142.279175,1109.447876  | ||||
| 	C144.008331,1111.254517 144.090958,1112.478760 142.387802,1114.456543  | ||||
| 	C128.440613,1130.652588 103.477272,1137.315918 81.478561,1129.875244  | ||||
| 	C59.195229,1122.338257 45.926426,1106.411377 43.188984,1083.193359  | ||||
| 	C39.333969,1050.496826 58.671745,1023.907654 89.835030,1018.619995  | ||||
| 	C108.562424,1015.442383 125.930077,1019.275879 140.351669,1032.810791  | ||||
| 	C143.275986,1035.555298 144.010681,1037.637085 140.759842,1040.468872  | ||||
| 	C136.374313,1044.289062 132.109711,1048.247925 127.387344,1052.514038  | ||||
| 	C125.219917,1050.791626 122.268578,1048.446411 119.017403,1045.897461  | ||||
| z"/> | ||||
| <path fill="#B497C6" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M353.790070,1043.427490  | ||||
| 	C350.733795,1044.354858 347.832062,1044.832642 344.942749,1045.376465  | ||||
| 	C328.779388,1048.418091 317.784821,1060.059814 316.201233,1078.007690  | ||||
| 	C314.932556,1092.386353 315.383026,1106.919067 315.137146,1121.384644  | ||||
| 	C314.970276,1131.203003 316.127838,1130.024902 306.225861,1130.119141  | ||||
| 	C302.564056,1130.154053 298.884857,1129.903076 295.243988,1130.181030  | ||||
| 	C291.144775,1130.494019 289.753448,1129.024658 289.796387,1124.840332  | ||||
| 	C289.984222,1106.531616 289.875397,1088.219849 289.875153,1069.909180  | ||||
| 	C289.874969,1055.094116 290.040833,1040.276245 289.777374,1025.465820  | ||||
| 	C289.697205,1020.959900 291.198883,1019.626587 295.507935,1019.924500  | ||||
| 	C300.312347,1020.256714 305.168030,1020.198242 309.981384,1019.938782  | ||||
| 	C313.799438,1019.733093 315.413696,1020.897034 315.194824,1024.956665  | ||||
| 	C314.900055,1030.423950 315.121674,1035.918945 316.033447,1041.863770  | ||||
| 	C316.890594,1040.457275 317.750885,1039.052734 318.604279,1037.643921  | ||||
| 	C325.588013,1026.116211 335.330078,1018.934265 349.151764,1017.919495  | ||||
| 	C352.771240,1017.653687 354.335571,1018.677124 354.180176,1022.544922  | ||||
| 	C353.906464,1029.358154 354.006683,1036.186401 353.790070,1043.427490  | ||||
| z"/> | ||||
| <path fill="#FFFFFF" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M970.070190,1130.149170  | ||||
| 	C967.600586,1130.149170 965.622131,1130.149170 963.325317,1130.149170  | ||||
| 	C963.325317,1093.449585 963.325317,1057.058838 963.325317,1020.333618  | ||||
| 	C971.488037,1020.333618 979.702515,1020.333618 988.190430,1020.333618  | ||||
| 	C988.190430,1056.859741 988.190430,1093.234131 988.190430,1130.149170  | ||||
| 	C982.133972,1130.149170 976.347717,1130.149170 970.070190,1130.149170  | ||||
| z"/> | ||||
| <path fill="#FCFBFD" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M930.629333,1129.979980  | ||||
| 	C921.562012,1130.103516 912.953064,1130.103516 904.095581,1130.103516  | ||||
| 	C904.095581,1120.382812 904.095581,1111.126099 904.095581,1101.511963  | ||||
| 	C913.093201,1101.511963 922.010315,1101.511963 931.087708,1101.511963  | ||||
| 	C931.087708,1110.890259 931.087708,1120.373291 930.629333,1129.979980  | ||||
| z"/> | ||||
| <path fill="#FFFFFF" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M989.130493,1000.834351  | ||||
| 	C987.997314,1001.928955 986.887451,1003.041870 985.755371,1003.064941  | ||||
| 	C978.106445,1003.221008 970.452820,1003.146362 962.400879,1003.146362  | ||||
| 	C962.400879,995.258179 962.400879,987.527710 962.400879,979.396606  | ||||
| 	C970.989380,979.396606 979.834900,979.396606 989.143494,979.396606  | ||||
| 	C989.143494,986.455139 989.143494,993.401855 989.130493,1000.834351  | ||||
| z"/> | ||||
| <path fill="#73358B" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M401.167480,1068.572754  | ||||
| 	C405.168213,1050.977661 416.229248,1040.492432 431.024689,1039.892334  | ||||
| 	C448.612427,1039.179199 462.954895,1052.325073 463.659058,1071.163086  | ||||
| 	C463.929352,1078.394409 462.811829,1086.386719 459.843262,1092.900513  | ||||
| 	C449.957458,1114.592529 420.591766,1116.381714 407.101685,1096.684570  | ||||
| 	C401.329559,1088.256470 400.098053,1078.886963 401.167480,1068.572754  | ||||
| z"/> | ||||
| <path fill="#74368C" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M1064.389893,1041.130493  | ||||
| 	C1083.597778,1037.239746 1099.385498,1045.930298 1105.178711,1063.268677  | ||||
| 	C1111.074951,1080.915771 1103.746460,1100.005005 1088.315552,1107.193970  | ||||
| 	C1064.766113,1118.165283 1038.714111,1099.699341 1040.531982,1073.203491  | ||||
| 	C1041.596069,1057.693604 1048.638306,1046.359863 1064.389893,1041.130493  | ||||
| z"/> | ||||
| <path fill="#73358B" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M562.688843,1040.359863  | ||||
| 	C577.771179,1038.791748 589.497620,1043.873901 596.774170,1056.799438  | ||||
| 	C604.355286,1070.265991 603.733704,1084.044556 595.135681,1096.926514  | ||||
| 	C586.898376,1109.268066 570.341492,1113.633301 555.941284,1107.888672  | ||||
| 	C541.953796,1102.308838 533.121765,1086.289917 535.297913,1070.447632  | ||||
| 	C537.547485,1054.070801 546.615784,1043.979858 562.688843,1040.359863  | ||||
| z"/> | ||||
| <path fill="#74358C" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M807.214600,1067.153320  | ||||
| 	C805.112427,1067.069336 803.478333,1066.985229 801.885498,1066.903320  | ||||
| 	C800.809204,1052.746582 814.209839,1038.763672 828.868347,1038.415405  | ||||
| 	C843.821167,1038.060181 857.024231,1051.490723 856.360352,1067.153442  | ||||
| 	C840.162659,1067.153442 823.922729,1067.153442 807.214600,1067.153320  | ||||
| z"/> | ||||
| <path fill="#74358C" opacity="1.000000" stroke="none"  | ||||
| 	d=" | ||||
| M222.282150,1110.464844  | ||||
| 	C214.217789,1113.966431 206.277649,1115.050659 198.052612,1112.792114  | ||||
| 	C190.386749,1110.687134 185.541321,1105.185791 185.061066,1098.121948  | ||||
| 	C184.559586,1090.745972 188.557663,1084.190308 196.064621,1081.398193  | ||||
| 	C208.516418,1076.766968 220.997086,1078.481323 233.263031,1082.397217  | ||||
| 	C234.448975,1082.775879 235.661087,1085.061401 235.760620,1086.535889  | ||||
| 	C236.480362,1097.197876 232.280441,1105.292969 222.282150,1110.464844  | ||||
| z"/> | ||||
| </svg> | ||||
| Before Width: | Height: | Size: 26 KiB | 
| @@ -1,33 +0,0 @@ | ||||
| import verifyCredentials from './verify-credentials'; | ||||
| import isStillVerified from './is-still-verified'; | ||||
|  | ||||
| export default { | ||||
|   fields: [ | ||||
|     { | ||||
|       key: 'screenName', | ||||
|       label: 'Screen Name', | ||||
|       type: 'string' as const, | ||||
|       required: true, | ||||
|       readOnly: false, | ||||
|       value: null, | ||||
|       placeholder: null, | ||||
|       description: | ||||
|         'Screen name of your connection to be used on Automatisch UI.', | ||||
|       clickToCopy: false, | ||||
|     }, | ||||
|     { | ||||
|       key: 'apiKey', | ||||
|       label: 'API Key', | ||||
|       type: 'string' as const, | ||||
|       required: true, | ||||
|       readOnly: false, | ||||
|       value: null, | ||||
|       placeholder: null, | ||||
|       description: 'Carbone API key of your account.', | ||||
|       clickToCopy: false, | ||||
|     }, | ||||
|   ], | ||||
|  | ||||
|   verifyCredentials, | ||||
|   isStillVerified, | ||||
| }; | ||||
| @@ -1,9 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
| import verifyCredentials from './verify-credentials'; | ||||
|  | ||||
| const isStillVerified = async ($: IGlobalVariable) => { | ||||
|   await verifyCredentials($); | ||||
|   return true; | ||||
| }; | ||||
|  | ||||
| export default isStillVerified; | ||||
| @@ -1,12 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
|  | ||||
| const verifyCredentials = async ($: IGlobalVariable) => { | ||||
|   await $.http.get('/templates'); | ||||
|  | ||||
|   await $.auth.set({ | ||||
|     screenName: $.auth.data.screenName, | ||||
|     apiKey: $.auth.data.apiKey, | ||||
|   }); | ||||
| }; | ||||
|  | ||||
| export default verifyCredentials; | ||||
| @@ -1,12 +0,0 @@ | ||||
| import { TBeforeRequest } from '@automatisch/types'; | ||||
|  | ||||
| const addAuthHeader: TBeforeRequest = ($, requestConfig) => { | ||||
|   if ($.auth.data?.apiKey) { | ||||
|     requestConfig.headers.Authorization = `Bearer ${$.auth.data.apiKey}`; | ||||
|     requestConfig.headers['carbone-version'] = '4'; | ||||
|   } | ||||
|  | ||||
|   return requestConfig; | ||||
| }; | ||||
|  | ||||
| export default addAuthHeader; | ||||
| @@ -1,18 +0,0 @@ | ||||
| import defineApp from '../../helpers/define-app'; | ||||
| import addAuthHeader from './common/add-auth-header'; | ||||
| import auth from './auth'; | ||||
| import actions from './actions'; | ||||
|  | ||||
| export default defineApp({ | ||||
|   name: 'Carbone', | ||||
|   key: 'carbone', | ||||
|   iconUrl: '{BASE_URL}/apps/carbone/assets/favicon.svg', | ||||
|   authDocUrl: 'https://automatisch.io/docs/apps/carbone/connection', | ||||
|   supportsConnections: true, | ||||
|   baseUrl: 'https://carbone.io', | ||||
|   apiBaseUrl: 'https://api.carbone.io', | ||||
|   primaryColor: '6f42c1', | ||||
|   beforeRequest: [addAuthHeader], | ||||
|   auth, | ||||
|   actions, | ||||
| }); | ||||
| @@ -1,102 +0,0 @@ | ||||
| import defineAction from '../../../../helpers/define-action'; | ||||
|  | ||||
| export default defineAction({ | ||||
|   name: 'Create a scheduled event', | ||||
|   key: 'createScheduledEvent', | ||||
|   description: 'Creates a scheduled event', | ||||
|   arguments: [ | ||||
|     { | ||||
|       label: 'Type', | ||||
|       key: 'entityType', | ||||
|       type: 'dropdown' as const, | ||||
|       required: true, | ||||
|       variables: true, | ||||
|       options: [ | ||||
|         { label: 'Stage channel', value: 1 }, | ||||
|         { label: 'Voice channel', value: 2 }, | ||||
|         { label: 'External', value: 3 } | ||||
|       ], | ||||
|       additionalFields: { | ||||
|         type: 'query', | ||||
|         name: 'getDynamicFields', | ||||
|         arguments: [ | ||||
|           { | ||||
|             name: 'key', | ||||
|             value: 'listExternalScheduledEventFields', | ||||
|           }, | ||||
|           { | ||||
|             name: 'parameters.entityType', | ||||
|             value: '{parameters.entityType}', | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }, | ||||
|     { | ||||
|       label: 'Name', | ||||
|       key: 'name', | ||||
|       type: 'string' as const, | ||||
|       required: true, | ||||
|       variables: true, | ||||
|     }, | ||||
|     { | ||||
|       label: 'Description', | ||||
|       key: 'description', | ||||
|       type: 'string' as const, | ||||
|       required: false, | ||||
|       variables: true, | ||||
|     }, | ||||
|     { | ||||
|       label: 'Image', | ||||
|       key: 'image', | ||||
|       type: 'string' as const, | ||||
|       required: false, | ||||
|       description: 'Image as DataURI scheme [data:image/<jpeg/png/gif>;base64,BASE64_ENCODED_<JPEG/PNG/GIF>_IMAGE_DATA]', | ||||
|       variables: true, | ||||
|     }, | ||||
|   ], | ||||
|  | ||||
|   async run($) { | ||||
|     type entity_metadata = { | ||||
|       location: string | ||||
|     } | ||||
|  | ||||
|     type guild_event = { | ||||
|       channel_id: number, | ||||
|       name: string, | ||||
|       privacy_level: number, | ||||
|       scheduled_start_time: string, | ||||
|       scheduled_end_time?: string, | ||||
|       description?: string, | ||||
|       entity_type?: number, | ||||
|       entity_metadata?: entity_metadata, | ||||
|       image?: string, //data:image/jpeg;base64,BASE64_ENCODED_JPEG_IMAGE_DATA | ||||
|     } | ||||
|  | ||||
|  | ||||
|     const data: guild_event = { | ||||
|       channel_id: $.step.parameters.channel_id as number, | ||||
|       name: $.step.parameters.name as string, | ||||
|       privacy_level: 2, | ||||
|       scheduled_start_time: $.step.parameters.scheduledStartTime as string, | ||||
|       scheduled_end_time: $.step.parameters.scheduledEndTime as string, | ||||
|       description: $.step.parameters.description as string, | ||||
|       entity_type: $.step.parameters.entityType as number, | ||||
|       image: $.step.parameters.image as string, | ||||
|     }; | ||||
|  | ||||
|     const isExternal = $.step.parameters.entityType === 3; | ||||
|     if (isExternal) { | ||||
|       data.entity_metadata = { | ||||
|         location: $.step.parameters.location as string, | ||||
|       }; | ||||
|       data.channel_id = null; | ||||
|     } | ||||
|  | ||||
|     const response = await $.http?.post( | ||||
|       `/guilds/${$.auth.data.guildId}/scheduled-events`, | ||||
|       data | ||||
|     ); | ||||
|  | ||||
|     $.setActionItem({ raw: response.data }); | ||||
|   }, | ||||
| }); | ||||
| @@ -1,4 +1,3 @@ | ||||
| import sendMessageToChannel from './send-message-to-channel'; | ||||
| import createScheduledEvent from './create-scheduled-event'; | ||||
|  | ||||
| export default [sendMessageToChannel, createScheduledEvent]; | ||||
| export default [sendMessageToChannel]; | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
| import listChannels from './list-channels'; | ||||
| import listVoiceChannels from './list-voice-channels'; | ||||
|  | ||||
| export default [listChannels, listVoiceChannels]; | ||||
| export default [listChannels]; | ||||
|   | ||||
| @@ -1,34 +0,0 @@ | ||||
| import { IGlobalVariable, IJSONObject } from '@automatisch/types'; | ||||
|  | ||||
| export default { | ||||
|   name: 'List voice channels', | ||||
|   key: 'listVoiceChannels', | ||||
|  | ||||
|   async run($: IGlobalVariable) { | ||||
|     const channels: { | ||||
|       data: IJSONObject[]; | ||||
|       error: IJSONObject | null; | ||||
|     } = { | ||||
|       data: [], | ||||
|       error: null, | ||||
|     }; | ||||
|  | ||||
|     const response = await $.http.get( | ||||
|       `/guilds/${$.auth.data.guildId}/channels` | ||||
|     ); | ||||
|  | ||||
|     channels.data = response.data | ||||
|       .filter((channel: IJSONObject) => { | ||||
|         // filter in voice and stage channels only | ||||
|         return channel.type === 2 || channel.type === 13; | ||||
|       }) | ||||
|       .map((channel: IJSONObject) => { | ||||
|         return { | ||||
|           value: channel.id, | ||||
|           name: channel.name, | ||||
|         }; | ||||
|       }); | ||||
|  | ||||
|     return channels; | ||||
|   }, | ||||
| }; | ||||
| @@ -1,3 +0,0 @@ | ||||
| import listExternalScheduledEventFields from './list-external-scheduled-event-fields'; | ||||
|  | ||||
| export default [listExternalScheduledEventFields]; | ||||
| @@ -1,83 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
| export default { | ||||
|   name: 'List external scheduled event fields', | ||||
|   key: 'listExternalScheduledEventFields', | ||||
|  | ||||
|   async run($: IGlobalVariable) { | ||||
|     const isExternal = $.step.parameters.entityType === 3; | ||||
|  | ||||
|     if (isExternal) { | ||||
|       return [ | ||||
|         { | ||||
|           label: 'Location', | ||||
|           key: 'location', | ||||
|           type: 'string' as const, | ||||
|           required: true, | ||||
|           description: 'The location of the event (1-100 characters). This will be omitted if type is NOT EXTERNAL', | ||||
|           variables: true, | ||||
|         }, | ||||
|         { | ||||
|           label: 'Start-Time', | ||||
|           key: 'scheduledStartTime', | ||||
|           type: 'string' as const, | ||||
|           required: true, | ||||
|           description: 'The time the event will start [ISO8601]', | ||||
|           variables: true, | ||||
|         }, | ||||
|         { | ||||
|           label: 'End-Time', | ||||
|           key: 'scheduledEndTime', | ||||
|           type: 'string' as const, | ||||
|           required: true, | ||||
|           description: 'The time the event will end [ISO8601]. This will be omitted if type is NOT EXTERNAL', | ||||
|           variables: true, | ||||
|         }, | ||||
|       ]; | ||||
|     } | ||||
|  | ||||
|     return [ | ||||
|       { | ||||
|         label: 'Channel', | ||||
|         key: 'channel_id', | ||||
|         type: 'dropdown' as const, | ||||
|         required: true, | ||||
|         description: 'Pick a voice or stage channel to link the event to. This will be omitted if type is EXTERNAL', | ||||
|         variables: true, | ||||
|         source: { | ||||
|           type: 'query', | ||||
|           name: 'getDynamicData', | ||||
|           arguments: [ | ||||
|             { | ||||
|               name: 'key', | ||||
|               value: 'listVoiceChannels', | ||||
|             }, | ||||
|           ], | ||||
|         }, | ||||
|       }, | ||||
|       { | ||||
|         label: 'Location', | ||||
|         key: 'location', | ||||
|         type: 'string' as const, | ||||
|         required: false, | ||||
|         description: 'The location of the event (1-100 characters). This will be omitted if type is NOT EXTERNAL', | ||||
|         variables: true, | ||||
|       }, | ||||
|       { | ||||
|         label: 'Start-Time', | ||||
|         key: 'scheduledStartTime', | ||||
|         type: 'string' as const, | ||||
|         required: true, | ||||
|         description: 'The time the event will start [ISO8601]', | ||||
|         variables: true, | ||||
|       }, | ||||
|       { | ||||
|         label: 'End-Time', | ||||
|         key: 'scheduledEndTime', | ||||
|         type: 'string' as const, | ||||
|         required: false, | ||||
|         description: 'The time the event will end [ISO8601]. This will be omitted if type is NOT EXTERNAL', | ||||
|         variables: true, | ||||
|       }, | ||||
|     ]; | ||||
|   }, | ||||
| }; | ||||
| @@ -4,7 +4,6 @@ import auth from './auth'; | ||||
| import dynamicData from './dynamic-data'; | ||||
| import actions from './actions'; | ||||
| import triggers from './triggers'; | ||||
| import dynamicFields from './dynamic-fields'; | ||||
|  | ||||
| export default defineApp({ | ||||
|   name: 'Discord', | ||||
| @@ -18,7 +17,6 @@ export default defineApp({ | ||||
|   beforeRequest: [addAuthHeader], | ||||
|   auth, | ||||
|   dynamicData, | ||||
|   dynamicFields, | ||||
|   triggers, | ||||
|   actions, | ||||
| }); | ||||
|   | ||||
| @@ -1,4 +1,3 @@ | ||||
| import Crypto from 'crypto'; | ||||
| import isEmpty from 'lodash/isEmpty'; | ||||
| import defineTrigger from '../../../../helpers/define-trigger'; | ||||
| import webhookFilters from '../../common/webhook-filters'; | ||||
| @@ -20,17 +19,6 @@ export default defineTrigger({ | ||||
|     }, | ||||
|   ], | ||||
|  | ||||
|   async run($) { | ||||
|     const dataItem = { | ||||
|       raw: $.request.body, | ||||
|       meta: { | ||||
|         internalId: Crypto.randomUUID(), | ||||
|       }, | ||||
|     }; | ||||
|  | ||||
|     $.pushTriggerItem(dataItem); | ||||
|   }, | ||||
|  | ||||
|   async testRun($) { | ||||
|     const lastExecutionStep = await $.getLastExecutionStep(); | ||||
|  | ||||
|   | ||||
| @@ -1,49 +0,0 @@ | ||||
| import defineAction from '../../../../helpers/define-action'; | ||||
|  | ||||
| import formatDateTime from './transformers/format-date-time'; | ||||
|  | ||||
| const transformers = { | ||||
|   formatDateTime, | ||||
| }; | ||||
|  | ||||
| export default defineAction({ | ||||
|   name: 'Date / Time', | ||||
|   key: 'date-time', | ||||
|   description: 'Perform date and time related transformations on your data.', | ||||
|   arguments: [ | ||||
|     { | ||||
|       label: 'Transform', | ||||
|       key: 'transform', | ||||
|       type: 'dropdown' as const, | ||||
|       required: true, | ||||
|       variables: true, | ||||
|       options: [{ label: 'Format Date / Time', value: 'formatDateTime' }], | ||||
|       additionalFields: { | ||||
|         type: 'query', | ||||
|         name: 'getDynamicFields', | ||||
|         arguments: [ | ||||
|           { | ||||
|             name: 'key', | ||||
|             value: 'listTransformOptions', | ||||
|           }, | ||||
|           { | ||||
|             name: 'parameters.transform', | ||||
|             value: '{parameters.transform}', | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }, | ||||
|   ], | ||||
|  | ||||
|   async run($) { | ||||
|     const transformerName = $.step.parameters | ||||
|       .transform as keyof typeof transformers; | ||||
|     const output = transformers[transformerName]($); | ||||
|  | ||||
|     $.setActionItem({ | ||||
|       raw: { | ||||
|         output, | ||||
|       }, | ||||
|     }); | ||||
|   }, | ||||
| }); | ||||
| @@ -1,23 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
| import { DateTime } from 'luxon'; | ||||
|  | ||||
| const formatDateTime = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|  | ||||
|   const fromFormat = $.step.parameters.fromFormat as string; | ||||
|   const fromTimezone = $.step.parameters.fromTimezone as string; | ||||
|  | ||||
|   const inputDateTime = DateTime.fromFormat(input, fromFormat, { | ||||
|     zone: fromTimezone, | ||||
|     setZone: true, | ||||
|   }); | ||||
|  | ||||
|   const toFormat = $.step.parameters.toFormat as string; | ||||
|   const toTimezone = $.step.parameters.toTimezone as string; | ||||
|  | ||||
|   const outputDateTime = inputDateTime.setZone(toTimezone).toFormat(toFormat); | ||||
|  | ||||
|   return outputDateTime; | ||||
| }; | ||||
|  | ||||
| export default formatDateTime; | ||||
| @@ -1,5 +0,0 @@ | ||||
| import text from './text'; | ||||
| import numbers from './numbers'; | ||||
| import dateTime from './date-time'; | ||||
|  | ||||
| export default [text, numbers, dateTime]; | ||||
| @@ -1,61 +0,0 @@ | ||||
| import defineAction from '../../../../helpers/define-action'; | ||||
|  | ||||
| import performMathOperation from './transformers/perform-math-operation'; | ||||
| import randomNumber from './transformers/random-number'; | ||||
| import formatNumber from './transformers/format-number'; | ||||
| import formatPhoneNumber from './transformers/format-phone-number'; | ||||
|  | ||||
| const transformers = { | ||||
|   performMathOperation, | ||||
|   randomNumber, | ||||
|   formatNumber, | ||||
|   formatPhoneNumber, | ||||
| }; | ||||
|  | ||||
| export default defineAction({ | ||||
|   name: 'Numbers', | ||||
|   key: 'numbers', | ||||
|   description: | ||||
|     'Transform numbers to perform math operations, generate random numbers, format numbers, and much more.', | ||||
|   arguments: [ | ||||
|     { | ||||
|       label: 'Transform', | ||||
|       key: 'transform', | ||||
|       type: 'dropdown' as const, | ||||
|       required: true, | ||||
|       variables: true, | ||||
|       options: [ | ||||
|         { label: 'Perform Math Operation', value: 'performMathOperation' }, | ||||
|         { label: 'Random Number', value: 'randomNumber' }, | ||||
|         { label: 'Format Number', value: 'formatNumber' }, | ||||
|         { label: 'Format Phone Number', value: 'formatPhoneNumber' }, | ||||
|       ], | ||||
|       additionalFields: { | ||||
|         type: 'query', | ||||
|         name: 'getDynamicFields', | ||||
|         arguments: [ | ||||
|           { | ||||
|             name: 'key', | ||||
|             value: 'listTransformOptions', | ||||
|           }, | ||||
|           { | ||||
|             name: 'parameters.transform', | ||||
|             value: '{parameters.transform}', | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }, | ||||
|   ], | ||||
|  | ||||
|   async run($) { | ||||
|     const transformerName = $.step.parameters | ||||
|       .transform as keyof typeof transformers; | ||||
|     const output = transformers[transformerName]($); | ||||
|  | ||||
|     $.setActionItem({ | ||||
|       raw: { | ||||
|         output, | ||||
|       }, | ||||
|     }); | ||||
|   }, | ||||
| }); | ||||
| @@ -1,28 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
| import accounting from 'accounting'; | ||||
|  | ||||
| const formatNumber = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|   const inputDecimalMark = $.step.parameters.inputDecimalMark as string; | ||||
|   const toFormat = $.step.parameters.toFormat as string; | ||||
|  | ||||
|   const normalizedNumber = accounting.unformat(input, inputDecimalMark); | ||||
|   const decimalPart = normalizedNumber.toString().split('.')[1]; | ||||
|   const precision = decimalPart ? decimalPart.length : 0; | ||||
|  | ||||
|   if (toFormat === '0') { | ||||
|     // Comma for grouping & period for decimal | ||||
|     return accounting.formatNumber(normalizedNumber, precision, ',', '.'); | ||||
|   } else if (toFormat === '1') { | ||||
|     // Period for grouping & comma for decimal | ||||
|     return accounting.formatNumber(normalizedNumber, precision, '.', ','); | ||||
|   } else if (toFormat === '2') { | ||||
|     // Space for grouping & period for decimal | ||||
|     return accounting.formatNumber(normalizedNumber, precision, ' ', '.'); | ||||
|   } else if (toFormat === '3') { | ||||
|     // Space for grouping & comma for decimal | ||||
|     return accounting.formatNumber(normalizedNumber, precision, ' ', ','); | ||||
|   } | ||||
| }; | ||||
|  | ||||
| export default formatNumber; | ||||
| @@ -1,24 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
| import parsePhoneNumber, { CountryCode } from 'libphonenumber-js'; | ||||
|  | ||||
| const formatPhoneNumber = ($: IGlobalVariable) => { | ||||
|   const phoneNumber = $.step.parameters.phoneNumber as string; | ||||
|   const toFormat = $.step.parameters.toFormat as string; | ||||
|   const phoneNumberCountryCode = ($.step.parameters.phoneNumberCountryCode || | ||||
|     'US') as CountryCode; | ||||
|  | ||||
|   const parsedPhoneNumber = parsePhoneNumber( | ||||
|     phoneNumber, | ||||
|     phoneNumberCountryCode | ||||
|   ); | ||||
|  | ||||
|   if (toFormat === 'e164') { | ||||
|     return parsedPhoneNumber.format('E.164'); | ||||
|   } else if (toFormat === 'international') { | ||||
|     return parsedPhoneNumber.formatInternational(); | ||||
|   } else if (toFormat === 'national') { | ||||
|     return parsedPhoneNumber.formatNational(); | ||||
|   } | ||||
| }; | ||||
|  | ||||
| export default formatPhoneNumber; | ||||
| @@ -1,23 +0,0 @@ | ||||
| import { IGlobalVariable, IJSONObject } from '@automatisch/types'; | ||||
| import { add, divide, multiply, subtract } from 'lodash'; | ||||
|  | ||||
| const mathOperation = ($: IGlobalVariable) => { | ||||
|   const mathOperation = $.step.parameters.mathOperation as string; | ||||
|   const values = ($.step.parameters.values as IJSONObject[]).map((value) => | ||||
|     Number(value.input) | ||||
|   ) as number[]; | ||||
|  | ||||
|   if (mathOperation === 'add') { | ||||
|     return values.reduce((acc, curr) => add(acc, curr), 0); | ||||
|   } else if (mathOperation === 'divide') { | ||||
|     return values.reduce((acc, curr) => divide(acc, curr)); | ||||
|   } else if (mathOperation === 'makeNegative') { | ||||
|     return values.map((value) => -value); | ||||
|   } else if (mathOperation === 'multiply') { | ||||
|     return values.reduce((acc, curr) => multiply(acc, curr), 1); | ||||
|   } else if (mathOperation === 'subtract') { | ||||
|     return values.reduce((acc, curr) => subtract(acc, curr)); | ||||
|   } | ||||
| }; | ||||
|  | ||||
| export default mathOperation; | ||||
| @@ -1,15 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
|  | ||||
| const randomNumber = ($: IGlobalVariable) => { | ||||
|   const lowerRange = Number($.step.parameters.lowerRange); | ||||
|   const upperRange = Number($.step.parameters.upperRange); | ||||
|   const decimalPoints = Number($.step.parameters.decimalPoints) || 0; | ||||
|  | ||||
|   return Number( | ||||
|     (Math.random() * (upperRange - lowerRange) + lowerRange).toFixed( | ||||
|       decimalPoints | ||||
|     ) | ||||
|   ); | ||||
| }; | ||||
|  | ||||
| export default randomNumber; | ||||
| @@ -1,79 +0,0 @@ | ||||
| import defineAction from '../../../../helpers/define-action'; | ||||
|  | ||||
| import capitalize from './transformers/capitalize'; | ||||
| import extractEmailAddress from './transformers/extract-email-address'; | ||||
| import extractNumber from './transformers/extract-number'; | ||||
| import htmlToMarkdown from './transformers/html-to-markdown'; | ||||
| import lowercase from './transformers/lowercase'; | ||||
| import markdownToHtml from './transformers/markdown-to-html'; | ||||
| import pluralize from './transformers/pluralize'; | ||||
| import replace from './transformers/replace'; | ||||
| import trimWhitespace from './transformers/trim-whitespace'; | ||||
| import useDefaultValue from './transformers/use-default-value'; | ||||
|  | ||||
| const transformers = { | ||||
|   capitalize, | ||||
|   extractEmailAddress, | ||||
|   extractNumber, | ||||
|   htmlToMarkdown, | ||||
|   lowercase, | ||||
|   markdownToHtml, | ||||
|   pluralize, | ||||
|   replace, | ||||
|   trimWhitespace, | ||||
|   useDefaultValue, | ||||
| }; | ||||
|  | ||||
| export default defineAction({ | ||||
|   name: 'Text', | ||||
|   key: 'text', | ||||
|   description: | ||||
|     'Transform text data to capitalize, extract emails, apply default value, and much more.', | ||||
|   arguments: [ | ||||
|     { | ||||
|       label: 'Transform', | ||||
|       key: 'transform', | ||||
|       type: 'dropdown' as const, | ||||
|       required: true, | ||||
|       variables: true, | ||||
|       options: [ | ||||
|         { label: 'Capitalize', value: 'capitalize' }, | ||||
|         { label: 'Convert HTML to Markdown', value: 'htmlToMarkdown' }, | ||||
|         { label: 'Convert Markdown to HTML', value: 'markdownToHtml' }, | ||||
|         { label: 'Extract Email Address', value: 'extractEmailAddress' }, | ||||
|         { label: 'Extract Number', value: 'extractNumber' }, | ||||
|         { label: 'Lowercase', value: 'lowercase' }, | ||||
|         { label: 'Pluralize', value: 'pluralize' }, | ||||
|         { label: 'Replace', value: 'replace' }, | ||||
|         { label: 'Trim Whitespace', value: 'trimWhitespace' }, | ||||
|         { label: 'Use Default Value', value: 'useDefaultValue' }, | ||||
|       ], | ||||
|       additionalFields: { | ||||
|         type: 'query', | ||||
|         name: 'getDynamicFields', | ||||
|         arguments: [ | ||||
|           { | ||||
|             name: 'key', | ||||
|             value: 'listTransformOptions', | ||||
|           }, | ||||
|           { | ||||
|             name: 'parameters.transform', | ||||
|             value: '{parameters.transform}', | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }, | ||||
|   ], | ||||
|  | ||||
|   async run($) { | ||||
|     const transformerName = $.step.parameters | ||||
|       .transform as keyof typeof transformers; | ||||
|     const output = transformers[transformerName]($); | ||||
|  | ||||
|     $.setActionItem({ | ||||
|       raw: { | ||||
|         output, | ||||
|       }, | ||||
|     }); | ||||
|   }, | ||||
| }); | ||||
| @@ -1,11 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
| import { capitalize as lodashCapitalize } from 'lodash'; | ||||
|  | ||||
| const capitalize = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|   const capitalizedInput = input.replace(/\w+/g, lodashCapitalize); | ||||
|  | ||||
|   return capitalizedInput; | ||||
| }; | ||||
|  | ||||
| export default capitalize; | ||||
| @@ -1,12 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
|  | ||||
| const extractEmailAddress = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|   const emailRegexp = | ||||
|     /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/; | ||||
|  | ||||
|   const email = input.match(emailRegexp); | ||||
|   return email ? email[0] : ''; | ||||
| }; | ||||
|  | ||||
| export default extractEmailAddress; | ||||
| @@ -1,26 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
|  | ||||
| const extractNumber = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|  | ||||
|   //  Example numbers that's supported: | ||||
|   //  123 | ||||
|   //  -123 | ||||
|   //  123456 | ||||
|   //  -123456 | ||||
|   //  121,234 | ||||
|   //  -121,234 | ||||
|   //  121.234 | ||||
|   //  -121.234 | ||||
|   //  1,234,567.89 | ||||
|   //  -1,234,567.89 | ||||
|   //  1.234.567,89 | ||||
|   //  -1.234.567,89 | ||||
|  | ||||
|   const numberRegexp = /-?((\d{1,3})+\.?,?)+/g; | ||||
|  | ||||
|   const numbers = input.match(numberRegexp); | ||||
|   return numbers ? numbers[0] : ''; | ||||
| }; | ||||
|  | ||||
| export default extractNumber; | ||||
| @@ -1,11 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
| import { NodeHtmlMarkdown } from 'node-html-markdown'; | ||||
|  | ||||
| const htmlToMarkdown = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|  | ||||
|   const markdown = NodeHtmlMarkdown.translate(input); | ||||
|   return markdown; | ||||
| }; | ||||
|  | ||||
| export default htmlToMarkdown; | ||||
| @@ -1,8 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
|  | ||||
| const lowercase = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|   return input.toLowerCase(); | ||||
| }; | ||||
|  | ||||
| export default lowercase; | ||||
| @@ -1,13 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
| import showdown from 'showdown'; | ||||
|  | ||||
| const converter = new showdown.Converter(); | ||||
|  | ||||
| const markdownToHtml = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|  | ||||
|   const html = converter.makeHtml(input); | ||||
|   return html; | ||||
| }; | ||||
|  | ||||
| export default markdownToHtml; | ||||
| @@ -1,9 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
| import pluralizeLibrary from 'pluralize'; | ||||
|  | ||||
| const pluralize = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|   return pluralizeLibrary(input); | ||||
| }; | ||||
|  | ||||
| export default pluralize; | ||||
| @@ -1,12 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
|  | ||||
| const replace = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|  | ||||
|   const find = $.step.parameters.find as string; | ||||
|   const replace = $.step.parameters.replace as string; | ||||
|  | ||||
|   return input.replaceAll(find, replace); | ||||
| }; | ||||
|  | ||||
| export default replace; | ||||
| @@ -1,8 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
|  | ||||
| const trimWhitespace = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|   return input.trim(); | ||||
| }; | ||||
|  | ||||
| export default trimWhitespace; | ||||
| @@ -1,13 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
|  | ||||
| const useDefaultValue = ($: IGlobalVariable) => { | ||||
|   const input = $.step.parameters.input as string; | ||||
|  | ||||
|   if (input && input.trim().length > 0) { | ||||
|     return input; | ||||
|   } | ||||
|  | ||||
|   return $.step.parameters.defaultValue as string; | ||||
| }; | ||||
|  | ||||
| export default useDefaultValue; | ||||
| @@ -1,3 +0,0 @@ | ||||
| <svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> | ||||
|   <path d="M4 4H20M4 12H20M4 20H20M4 8H14M4 16H14" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> | ||||
| </svg> | ||||
| Before Width: | Height: | Size: 243 B | 
| @@ -1,249 +0,0 @@ | ||||
| const phoneNumberCountryCodes = [ | ||||
|   { label: 'Ascension Island', value: 'AC' }, | ||||
|   { label: 'Andorra', value: 'AD' }, | ||||
|   { label: 'United Arab Emirates', value: 'AE' }, | ||||
|   { label: 'Afghanistan', value: 'AF' }, | ||||
|   { label: 'Antigua & Barbuda', value: 'AG' }, | ||||
|   { label: 'Anguilla', value: 'AI' }, | ||||
|   { label: 'Albania', value: 'AL' }, | ||||
|   { label: 'Armenia', value: 'AM' }, | ||||
|   { label: 'Angola', value: 'AO' }, | ||||
|   { label: 'Argentina', value: 'AR' }, | ||||
|   { label: 'American Samoa', value: 'AS' }, | ||||
|   { label: 'Austria', value: 'AT' }, | ||||
|   { label: 'Australia', value: 'AU' }, | ||||
|   { label: 'Aruba', value: 'AW' }, | ||||
|   { label: 'Åland Islands', value: 'AX' }, | ||||
|   { label: 'Azerbaijan', value: 'AZ' }, | ||||
|   { label: 'Bosnia & Herzegovina', value: 'BA' }, | ||||
|   { label: 'Barbados', value: 'BB' }, | ||||
|   { label: 'Bangladesh', value: 'BD' }, | ||||
|   { label: 'Belgium', value: 'BE' }, | ||||
|   { label: 'Burkina Faso', value: 'BF' }, | ||||
|   { label: 'Bulgaria', value: 'BG' }, | ||||
|   { label: 'Bahrain', value: 'BH' }, | ||||
|   { label: 'Burundi', value: 'BI' }, | ||||
|   { label: 'Benin', value: 'BJ' }, | ||||
|   { label: 'St. Barthélemy', value: 'BL' }, | ||||
|   { label: 'Bermuda', value: 'BM' }, | ||||
|   { label: 'Brunei', value: 'BN' }, | ||||
|   { label: 'Bolivia', value: 'BO' }, | ||||
|   { label: 'Caribbean Netherlands', value: 'BQ' }, | ||||
|   { label: 'Brazil', value: 'BR' }, | ||||
|   { label: 'Bahamas', value: 'BS' }, | ||||
|   { label: 'Bhutan', value: 'BT' }, | ||||
|   { label: 'Botswana', value: 'BW' }, | ||||
|   { label: 'Belarus', value: 'BY' }, | ||||
|   { label: 'Belize', value: 'BZ' }, | ||||
|   { label: 'Canada', value: 'CA' }, | ||||
|   { label: 'Cocos (Keeling) Islands', value: 'CC' }, | ||||
|   { label: 'Congo - Kinshasa', value: 'CD' }, | ||||
|   { label: 'Central African Republic', value: 'CF' }, | ||||
|   { label: 'Congo - Brazzaville', value: 'CG' }, | ||||
|   { label: 'Switzerland', value: 'CH' }, | ||||
|   { label: 'Côte d’Ivoire', value: 'CI' }, | ||||
|   { label: 'Cook Islands', value: 'CK' }, | ||||
|   { label: 'Chile', value: 'CL' }, | ||||
|   { label: 'Cameroon', value: 'CM' }, | ||||
|   { label: 'China', value: 'CN' }, | ||||
|   { label: 'Colombia', value: 'CO' }, | ||||
|   { label: 'Costa Rica', value: 'CR' }, | ||||
|   { label: 'Cuba', value: 'CU' }, | ||||
|   { label: 'Cape Verde', value: 'CV' }, | ||||
|   { label: 'Curaçao', value: 'CW' }, | ||||
|   { label: 'Christmas Island', value: 'CX' }, | ||||
|   { label: 'Cyprus', value: 'CY' }, | ||||
|   { label: 'Czechia', value: 'CZ' }, | ||||
|   { label: 'Germany', value: 'DE' }, | ||||
|   { label: 'Djibouti', value: 'DJ' }, | ||||
|   { label: 'Denmark', value: 'DK' }, | ||||
|   { label: 'Dominica', value: 'DM' }, | ||||
|   { label: 'Dominican Republic', value: 'DO' }, | ||||
|   { label: 'Algeria', value: 'DZ' }, | ||||
|   { label: 'Ecuador', value: 'EC' }, | ||||
|   { label: 'Estonia', value: 'EE' }, | ||||
|   { label: 'Egypt', value: 'EG' }, | ||||
|   { label: 'Western Sahara', value: 'EH' }, | ||||
|   { label: 'Eritrea', value: 'ER' }, | ||||
|   { label: 'Spain', value: 'ES' }, | ||||
|   { label: 'Ethiopia', value: 'ET' }, | ||||
|   { label: 'Finland', value: 'FI' }, | ||||
|   { label: 'Fiji', value: 'FJ' }, | ||||
|   { label: 'Falkland Islands (Islas Malvinas)', value: 'FK' }, | ||||
|   { label: 'Micronesia', value: 'FM' }, | ||||
|   { label: 'Faroe Islands', value: 'FO' }, | ||||
|   { label: 'France', value: 'FR' }, | ||||
|   { label: 'Gabon', value: 'GA' }, | ||||
|   { label: 'United Kingdom', value: 'GB' }, | ||||
|   { label: 'Grenada', value: 'GD' }, | ||||
|   { label: 'Georgia', value: 'GE' }, | ||||
|   { label: 'French Guiana', value: 'GF' }, | ||||
|   { label: 'Guernsey', value: 'GG' }, | ||||
|   { label: 'Ghana', value: 'GH' }, | ||||
|   { label: 'Gibraltar', value: 'GI' }, | ||||
|   { label: 'Greenland', value: 'GL' }, | ||||
|   { label: 'Gambia', value: 'GM' }, | ||||
|   { label: 'Guinea', value: 'GN' }, | ||||
|   { label: 'Guadeloupe', value: 'GP' }, | ||||
|   { label: 'Equatorial Guinea', value: 'GQ' }, | ||||
|   { label: 'Greece', value: 'GR' }, | ||||
|   { label: 'Guatemala', value: 'GT' }, | ||||
|   { label: 'Guam', value: 'GU' }, | ||||
|   { label: 'Guinea-Bissau', value: 'GW' }, | ||||
|   { label: 'Guyana', value: 'GY' }, | ||||
|   { label: 'Hong Kong', value: 'HK' }, | ||||
|   { label: 'Honduras', value: 'HN' }, | ||||
|   { label: 'Croatia', value: 'HR' }, | ||||
|   { label: 'Haiti', value: 'HT' }, | ||||
|   { label: 'Hungary', value: 'HU' }, | ||||
|   { label: 'Indonesia', value: 'ID' }, | ||||
|   { label: 'Ireland', value: 'IE' }, | ||||
|   { label: 'Israel', value: 'IL' }, | ||||
|   { label: 'Isle of Man', value: 'IM' }, | ||||
|   { label: 'India', value: 'IN' }, | ||||
|   { label: 'British Indian Ocean Territory', value: 'IO' }, | ||||
|   { label: 'Iraq', value: 'IQ' }, | ||||
|   { label: 'Iran', value: 'IR' }, | ||||
|   { label: 'Iceland', value: 'IS' }, | ||||
|   { label: 'Italy', value: 'IT' }, | ||||
|   { label: 'Jersey', value: 'JE' }, | ||||
|   { label: 'Jamaica', value: 'JM' }, | ||||
|   { label: 'Jordan', value: 'JO' }, | ||||
|   { label: 'Japan', value: 'JP' }, | ||||
|   { label: 'Kenya', value: 'KE' }, | ||||
|   { label: 'Kyrgyzstan', value: 'KG' }, | ||||
|   { label: 'Cambodia', value: 'KH' }, | ||||
|   { label: 'Kiribati', value: 'KI' }, | ||||
|   { label: 'Comoros', value: 'KM' }, | ||||
|   { label: 'St. Kitts & Nevis', value: 'KN' }, | ||||
|   { label: 'North Korea', value: 'KP' }, | ||||
|   { label: 'South Korea', value: 'KR' }, | ||||
|   { label: 'Kuwait', value: 'KW' }, | ||||
|   { label: 'Cayman Islands', value: 'KY' }, | ||||
|   { label: 'Kazakhstan', value: 'KZ' }, | ||||
|   { label: 'Laos', value: 'LA' }, | ||||
|   { label: 'Lebanon', value: 'LB' }, | ||||
|   { label: 'St. Lucia', value: 'LC' }, | ||||
|   { label: 'Liechtenstein', value: 'LI' }, | ||||
|   { label: 'Sri Lanka', value: 'LK' }, | ||||
|   { label: 'Liberia', value: 'LR' }, | ||||
|   { label: 'Lesotho', value: 'LS' }, | ||||
|   { label: 'Lithuania', value: 'LT' }, | ||||
|   { label: 'Luxembourg', value: 'LU' }, | ||||
|   { label: 'Latvia', value: 'LV' }, | ||||
|   { label: 'Libya', value: 'LY' }, | ||||
|   { label: 'Morocco', value: 'MA' }, | ||||
|   { label: 'Monaco', value: 'MC' }, | ||||
|   { label: 'Moldova', value: 'MD' }, | ||||
|   { label: 'Montenegro', value: 'ME' }, | ||||
|   { label: 'St. Martin', value: 'MF' }, | ||||
|   { label: 'Madagascar', value: 'MG' }, | ||||
|   { label: 'Marshall Islands', value: 'MH' }, | ||||
|   { label: 'North Macedonia', value: 'MK' }, | ||||
|   { label: 'Mali', value: 'ML' }, | ||||
|   { label: 'Myanmar (Burma)', value: 'MM' }, | ||||
|   { label: 'Mongolia', value: 'MN' }, | ||||
|   { label: 'Macao', value: 'MO' }, | ||||
|   { label: 'Northern Mariana Islands', value: 'MP' }, | ||||
|   { label: 'Martinique', value: 'MQ' }, | ||||
|   { label: 'Mauritania', value: 'MR' }, | ||||
|   { label: 'Montserrat', value: 'MS' }, | ||||
|   { label: 'Malta', value: 'MT' }, | ||||
|   { label: 'Mauritius', value: 'MU' }, | ||||
|   { label: 'Maldives', value: 'MV' }, | ||||
|   { label: 'Malawi', value: 'MW' }, | ||||
|   { label: 'Mexico', value: 'MX' }, | ||||
|   { label: 'Malaysia', value: 'MY' }, | ||||
|   { label: 'Mozambique', value: 'MZ' }, | ||||
|   { label: 'Namibia', value: 'NA' }, | ||||
|   { label: 'New Caledonia', value: 'NC' }, | ||||
|   { label: 'Niger', value: 'NE' }, | ||||
|   { label: 'Norfolk Island', value: 'NF' }, | ||||
|   { label: 'Nigeria', value: 'NG' }, | ||||
|   { label: 'Nicaragua', value: 'NI' }, | ||||
|   { label: 'Netherlands', value: 'NL' }, | ||||
|   { label: 'Norway', value: 'NO' }, | ||||
|   { label: 'Nepal', value: 'NP' }, | ||||
|   { label: 'Nauru', value: 'NR' }, | ||||
|   { label: 'Niue', value: 'NU' }, | ||||
|   { label: 'New Zealand', value: 'NZ' }, | ||||
|   { label: 'Oman', value: 'OM' }, | ||||
|   { label: 'Panama', value: 'PA' }, | ||||
|   { label: 'Peru', value: 'PE' }, | ||||
|   { label: 'French Polynesia', value: 'PF' }, | ||||
|   { label: 'Papua New Guinea', value: 'PG' }, | ||||
|   { label: 'Philippines', value: 'PH' }, | ||||
|   { label: 'Pakistan', value: 'PK' }, | ||||
|   { label: 'Poland', value: 'PL' }, | ||||
|   { label: 'St. Pierre & Miquelon', value: 'PM' }, | ||||
|   { label: 'Puerto Rico', value: 'PR' }, | ||||
|   { label: 'Palestine', value: 'PS' }, | ||||
|   { label: 'Portugal', value: 'PT' }, | ||||
|   { label: 'Palau', value: 'PW' }, | ||||
|   { label: 'Paraguay', value: 'PY' }, | ||||
|   { label: 'Qatar', value: 'QA' }, | ||||
|   { label: 'Réunion', value: 'RE' }, | ||||
|   { label: 'Romania', value: 'RO' }, | ||||
|   { label: 'Serbia', value: 'RS' }, | ||||
|   { label: 'Russia', value: 'RU' }, | ||||
|   { label: 'Rwanda', value: 'RW' }, | ||||
|   { label: 'Saudi Arabia', value: 'SA' }, | ||||
|   { label: 'Solomon Islands', value: 'SB' }, | ||||
|   { label: 'Seychelles', value: 'SC' }, | ||||
|   { label: 'Sudan', value: 'SD' }, | ||||
|   { label: 'Sweden', value: 'SE' }, | ||||
|   { label: 'Singapore', value: 'SG' }, | ||||
|   { label: 'St. Helena', value: 'SH' }, | ||||
|   { label: 'Slovenia', value: 'SI' }, | ||||
|   { label: 'Svalbard & Jan Mayen', value: 'SJ' }, | ||||
|   { label: 'Slovakia', value: 'SK' }, | ||||
|   { label: 'Sierra Leone', value: 'SL' }, | ||||
|   { label: 'San Marino', value: 'SM' }, | ||||
|   { label: 'Senegal', value: 'SN' }, | ||||
|   { label: 'Somalia', value: 'SO' }, | ||||
|   { label: 'Suriname', value: 'SR' }, | ||||
|   { label: 'South Sudan', value: 'SS' }, | ||||
|   { label: 'São Tomé & Príncipe', value: 'ST' }, | ||||
|   { label: 'El Salvador', value: 'SV' }, | ||||
|   { label: 'Sint Maarten', value: 'SX' }, | ||||
|   { label: 'Syria', value: 'SY' }, | ||||
|   { label: 'Eswatini', value: 'SZ' }, | ||||
|   { label: 'Tristan da Cunha', value: 'TA' }, | ||||
|   { label: 'Turks & Caicos Islands', value: 'TC' }, | ||||
|   { label: 'Chad', value: 'TD' }, | ||||
|   { label: 'Togo', value: 'TG' }, | ||||
|   { label: 'Thailand', value: 'TH' }, | ||||
|   { label: 'Tajikistan', value: 'TJ' }, | ||||
|   { label: 'Tokelau', value: 'TK' }, | ||||
|   { label: 'Timor-Leste', value: 'TL' }, | ||||
|   { label: 'Turkmenistan', value: 'TM' }, | ||||
|   { label: 'Tunisia', value: 'TN' }, | ||||
|   { label: 'Tonga', value: 'TO' }, | ||||
|   { label: 'Türkiye', value: 'TR' }, | ||||
|   { label: 'Trinidad & Tobago', value: 'TT' }, | ||||
|   { label: 'Tuvalu', value: 'TV' }, | ||||
|   { label: 'Taiwan', value: 'TW' }, | ||||
|   { label: 'Tanzania', value: 'TZ' }, | ||||
|   { label: 'Ukraine', value: 'UA' }, | ||||
|   { label: 'Uganda', value: 'UG' }, | ||||
|   { label: 'United States', value: 'US' }, | ||||
|   { label: 'Uruguay', value: 'UY' }, | ||||
|   { label: 'Uzbekistan', value: 'UZ' }, | ||||
|   { label: 'Vatican City', value: 'VA' }, | ||||
|   { label: 'St. Vincent & Grenadines', value: 'VC' }, | ||||
|   { label: 'Venezuela', value: 'VE' }, | ||||
|   { label: 'British Virgin Islands', value: 'VG' }, | ||||
|   { label: 'U.S. Virgin Islands', value: 'VI' }, | ||||
|   { label: 'Vietnam', value: 'VN' }, | ||||
|   { label: 'Vanuatu', value: 'VU' }, | ||||
|   { label: 'Wallis & Futuna', value: 'WF' }, | ||||
|   { label: 'Samoa', value: 'WS' }, | ||||
|   { label: 'Kosovo', value: 'XK' }, | ||||
|   { label: 'Yemen', value: 'YE' }, | ||||
|   { label: 'Mayotte', value: 'YT' }, | ||||
|   { label: 'South Africa', value: 'ZA' }, | ||||
|   { label: 'Zambia', value: 'ZM' }, | ||||
|   { label: 'Zimbabwe', value: 'ZW' }, | ||||
| ]; | ||||
|  | ||||
| export default phoneNumberCountryCodes; | ||||
| @@ -1,3 +0,0 @@ | ||||
| import listTransformOptions from './list-transform-options'; | ||||
|  | ||||
| export default [listTransformOptions]; | ||||
| @@ -1,51 +0,0 @@ | ||||
| import formatOptions from './options/format'; | ||||
| import timezoneOptions from './options/timezone'; | ||||
|  | ||||
| const formatDateTime = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'The datetime you want to format.', | ||||
|     variables: true, | ||||
|   }, | ||||
|   { | ||||
|     label: 'From Format', | ||||
|     key: 'fromFormat', | ||||
|     type: 'dropdown' as const, | ||||
|     required: true, | ||||
|     description: 'The format of the input.', | ||||
|     variables: true, | ||||
|     options: formatOptions, | ||||
|   }, | ||||
|   { | ||||
|     label: 'From Timezone', | ||||
|     key: 'fromTimezone', | ||||
|     type: 'dropdown' as const, | ||||
|     required: true, | ||||
|     description: 'The timezone of the input.', | ||||
|     variables: true, | ||||
|     options: timezoneOptions, | ||||
|   }, | ||||
|   { | ||||
|     label: 'To Format', | ||||
|     key: 'toFormat', | ||||
|     type: 'dropdown' as const, | ||||
|     required: true, | ||||
|     description: 'The format of the output.', | ||||
|     variables: true, | ||||
|     options: formatOptions, | ||||
|   }, | ||||
|   { | ||||
|     label: 'To Timezone', | ||||
|     key: 'toTimezone', | ||||
|     type: 'dropdown' as const, | ||||
|     required: true, | ||||
|     description: 'The timezone of the output.', | ||||
|     variables: true, | ||||
|     options: timezoneOptions, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default formatDateTime; | ||||
| @@ -1,64 +0,0 @@ | ||||
| const formatOptions = [ | ||||
|   { | ||||
|     label: 'ccc MMM dd HH:mm:ssZZZ yyyy (Wed Aug 23 12:25:36-0000 2023)', | ||||
|     value: 'ccc MMM dd HH:mm:ssZZZ yyyy', | ||||
|   }, | ||||
|   { | ||||
|     label: 'MMMM dd yyyy HH:mm:ss (August 23 2023 12:25:36)', | ||||
|     value: 'MMMM dd yyyy HH:mm:ss', | ||||
|   }, | ||||
|   { | ||||
|     label: 'MMMM dd yyyy (August 23 2023)', | ||||
|     value: 'MMMM dd yyyy', | ||||
|   }, | ||||
|   { | ||||
|     label: 'MMM dd yyyy (Aug 23 2023)', | ||||
|     value: 'MMM dd yyyy', | ||||
|   }, | ||||
|   { | ||||
|     label: 'yyyy-MM-dd HH:mm:ss ZZZ (2023-08-23 12:25:36 -0000)', | ||||
|     value: 'yyyy-MM-dd HH:mm:ss ZZZ', | ||||
|   }, | ||||
|   { | ||||
|     label: 'yyyy-MM-dd (2023-08-23)', | ||||
|     value: 'yyyy-MM-dd', | ||||
|   }, | ||||
|   { | ||||
|     label: 'MM-dd-yyyy (08-23-2023)', | ||||
|     value: 'MM-dd-yyyy', | ||||
|   }, | ||||
|   { | ||||
|     label: 'MM/dd/yyyy (08/23/2023)', | ||||
|     value: 'MM/dd/yyyy', | ||||
|   }, | ||||
|   { | ||||
|     label: 'MM/dd/yy (08/23/23)', | ||||
|     value: 'MM/dd/yy', | ||||
|   }, | ||||
|   { | ||||
|     label: 'dd-MM-yyyy (23-08-2023)', | ||||
|     value: 'dd-MM-yyyy', | ||||
|   }, | ||||
|   { | ||||
|     label: 'dd/MM/yyyy (23/08/2023)', | ||||
|     value: 'dd/MM/yyyy', | ||||
|   }, | ||||
|   { | ||||
|     label: 'dd/MM/yy (23/08/23)', | ||||
|     value: 'dd/MM/yy', | ||||
|   }, | ||||
|   { | ||||
|     label: 'MM-yyyy (08-2023)', | ||||
|     value: 'MM-yyyy', | ||||
|   }, | ||||
|   { | ||||
|     label: 'Unix timestamp in seconds (1694008283)', | ||||
|     value: 'X', | ||||
|   }, | ||||
|   { | ||||
|     label: 'Unix timestamp in milliseconds (1694008306315)', | ||||
|     value: 'x', | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default formatOptions; | ||||
| @@ -1,449 +0,0 @@ | ||||
| // The list from Intl.supportedValuesOf('timeZone') which is used by Luxon. | ||||
|  | ||||
| const timezoneOptions = [ | ||||
|   { label: 'Africa/Abidjan', value: 'Africa/Abidjan' }, | ||||
|   { label: 'Africa/Accra', value: 'Africa/Accra' }, | ||||
|   { label: 'Africa/Addis_Ababa', value: 'Africa/Addis_Ababa' }, | ||||
|   { label: 'Africa/Algiers', value: 'Africa/Algiers' }, | ||||
|   { label: 'Africa/Asmera', value: 'Africa/Asmera' }, | ||||
|   { label: 'Africa/Bamako', value: 'Africa/Bamako' }, | ||||
|   { label: 'Africa/Bangui', value: 'Africa/Bangui' }, | ||||
|   { label: 'Africa/Banjul', value: 'Africa/Banjul' }, | ||||
|   { label: 'Africa/Bissau', value: 'Africa/Bissau' }, | ||||
|   { label: 'Africa/Blantyre', value: 'Africa/Blantyre' }, | ||||
|   { label: 'Africa/Brazzaville', value: 'Africa/Brazzaville' }, | ||||
|   { label: 'Africa/Bujumbura', value: 'Africa/Bujumbura' }, | ||||
|   { label: 'Africa/Cairo', value: 'Africa/Cairo' }, | ||||
|   { label: 'Africa/Casablanca', value: 'Africa/Casablanca' }, | ||||
|   { label: 'Africa/Ceuta', value: 'Africa/Ceuta' }, | ||||
|   { label: 'Africa/Conakry', value: 'Africa/Conakry' }, | ||||
|   { label: 'Africa/Dakar', value: 'Africa/Dakar' }, | ||||
|   { label: 'Africa/Dar_es_Salaam', value: 'Africa/Dar_es_Salaam' }, | ||||
|   { label: 'Africa/Djibouti', value: 'Africa/Djibouti' }, | ||||
|   { label: 'Africa/Douala', value: 'Africa/Douala' }, | ||||
|   { label: 'Africa/El_Aaiun', value: 'Africa/El_Aaiun' }, | ||||
|   { label: 'Africa/Freetown', value: 'Africa/Freetown' }, | ||||
|   { label: 'Africa/Gaborone', value: 'Africa/Gaborone' }, | ||||
|   { label: 'Africa/Harare', value: 'Africa/Harare' }, | ||||
|   { label: 'Africa/Johannesburg', value: 'Africa/Johannesburg' }, | ||||
|   { label: 'Africa/Juba', value: 'Africa/Juba' }, | ||||
|   { label: 'Africa/Kampala', value: 'Africa/Kampala' }, | ||||
|   { label: 'Africa/Khartoum', value: 'Africa/Khartoum' }, | ||||
|   { label: 'Africa/Kigali', value: 'Africa/Kigali' }, | ||||
|   { label: 'Africa/Kinshasa', value: 'Africa/Kinshasa' }, | ||||
|   { label: 'Africa/Lagos', value: 'Africa/Lagos' }, | ||||
|   { label: 'Africa/Libreville', value: 'Africa/Libreville' }, | ||||
|   { label: 'Africa/Lome', value: 'Africa/Lome' }, | ||||
|   { label: 'Africa/Luanda', value: 'Africa/Luanda' }, | ||||
|   { label: 'Africa/Lubumbashi', value: 'Africa/Lubumbashi' }, | ||||
|   { label: 'Africa/Lusaka', value: 'Africa/Lusaka' }, | ||||
|   { label: 'Africa/Malabo', value: 'Africa/Malabo' }, | ||||
|   { label: 'Africa/Maputo', value: 'Africa/Maputo' }, | ||||
|   { label: 'Africa/Maseru', value: 'Africa/Maseru' }, | ||||
|   { label: 'Africa/Mbabane', value: 'Africa/Mbabane' }, | ||||
|   { label: 'Africa/Mogadishu', value: 'Africa/Mogadishu' }, | ||||
|   { label: 'Africa/Monrovia', value: 'Africa/Monrovia' }, | ||||
|   { label: 'Africa/Nairobi', value: 'Africa/Nairobi' }, | ||||
|   { label: 'Africa/Ndjamena', value: 'Africa/Ndjamena' }, | ||||
|   { label: 'Africa/Niamey', value: 'Africa/Niamey' }, | ||||
|   { label: 'Africa/Nouakchott', value: 'Africa/Nouakchott' }, | ||||
|   { label: 'Africa/Ouagadougou', value: 'Africa/Ouagadougou' }, | ||||
|   { label: 'Africa/Porto-Novo', value: 'Africa/Porto-Novo' }, | ||||
|   { label: 'Africa/Sao_Tome', value: 'Africa/Sao_Tome' }, | ||||
|   { label: 'Africa/Tripoli', value: 'Africa/Tripoli' }, | ||||
|   { label: 'Africa/Tunis', value: 'Africa/Tunis' }, | ||||
|   { label: 'Africa/Windhoek', value: 'Africa/Windhoek' }, | ||||
|   { label: 'America/Adak', value: 'America/Adak' }, | ||||
|   { label: 'America/Anchorage', value: 'America/Anchorage' }, | ||||
|   { label: 'America/Anguilla', value: 'America/Anguilla' }, | ||||
|   { label: 'America/Antigua', value: 'America/Antigua' }, | ||||
|   { label: 'America/Araguaina', value: 'America/Araguaina' }, | ||||
|   { label: 'America/Argentina/La_Rioja', value: 'America/Argentina/La_Rioja' }, | ||||
|   { | ||||
|     label: 'America/Argentina/Rio_Gallegos', | ||||
|     value: 'America/Argentina/Rio_Gallegos', | ||||
|   }, | ||||
|   { label: 'America/Argentina/Salta', value: 'America/Argentina/Salta' }, | ||||
|   { label: 'America/Argentina/San_Juan', value: 'America/Argentina/San_Juan' }, | ||||
|   { label: 'America/Argentina/San_Luis', value: 'America/Argentina/San_Luis' }, | ||||
|   { label: 'America/Argentina/Tucuman', value: 'America/Argentina/Tucuman' }, | ||||
|   { label: 'America/Argentina/Ushuaia', value: 'America/Argentina/Ushuaia' }, | ||||
|   { label: 'America/Aruba', value: 'America/Aruba' }, | ||||
|   { label: 'America/Asuncion', value: 'America/Asuncion' }, | ||||
|   { label: 'America/Bahia', value: 'America/Bahia' }, | ||||
|   { label: 'America/Bahia_Banderas', value: 'America/Bahia_Banderas' }, | ||||
|   { label: 'America/Barbados', value: 'America/Barbados' }, | ||||
|   { label: 'America/Belem', value: 'America/Belem' }, | ||||
|   { label: 'America/Belize', value: 'America/Belize' }, | ||||
|   { label: 'America/Blanc-Sablon', value: 'America/Blanc-Sablon' }, | ||||
|   { label: 'America/Boa_Vista', value: 'America/Boa_Vista' }, | ||||
|   { label: 'America/Bogota', value: 'America/Bogota' }, | ||||
|   { label: 'America/Boise', value: 'America/Boise' }, | ||||
|   { label: 'America/Buenos_Aires', value: 'America/Buenos_Aires' }, | ||||
|   { label: 'America/Cambridge_Bay', value: 'America/Cambridge_Bay' }, | ||||
|   { label: 'America/Campo_Grande', value: 'America/Campo_Grande' }, | ||||
|   { label: 'America/Cancun', value: 'America/Cancun' }, | ||||
|   { label: 'America/Caracas', value: 'America/Caracas' }, | ||||
|   { label: 'America/Catamarca', value: 'America/Catamarca' }, | ||||
|   { label: 'America/Cayenne', value: 'America/Cayenne' }, | ||||
|   { label: 'America/Cayman', value: 'America/Cayman' }, | ||||
|   { label: 'America/Chicago', value: 'America/Chicago' }, | ||||
|   { label: 'America/Chihuahua', value: 'America/Chihuahua' }, | ||||
|   { label: 'America/Ciudad_Juarez', value: 'America/Ciudad_Juarez' }, | ||||
|   { label: 'America/Coral_Harbour', value: 'America/Coral_Harbour' }, | ||||
|   { label: 'America/Cordoba', value: 'America/Cordoba' }, | ||||
|   { label: 'America/Costa_Rica', value: 'America/Costa_Rica' }, | ||||
|   { label: 'America/Creston', value: 'America/Creston' }, | ||||
|   { label: 'America/Cuiaba', value: 'America/Cuiaba' }, | ||||
|   { label: 'America/Curacao', value: 'America/Curacao' }, | ||||
|   { label: 'America/Danmarkshavn', value: 'America/Danmarkshavn' }, | ||||
|   { label: 'America/Dawson', value: 'America/Dawson' }, | ||||
|   { label: 'America/Dawson_Creek', value: 'America/Dawson_Creek' }, | ||||
|   { label: 'America/Denver', value: 'America/Denver' }, | ||||
|   { label: 'America/Detroit', value: 'America/Detroit' }, | ||||
|   { label: 'America/Dominica', value: 'America/Dominica' }, | ||||
|   { label: 'America/Edmonton', value: 'America/Edmonton' }, | ||||
|   { label: 'America/Eirunepe', value: 'America/Eirunepe' }, | ||||
|   { label: 'America/El_Salvador', value: 'America/El_Salvador' }, | ||||
|   { label: 'America/Fort_Nelson', value: 'America/Fort_Nelson' }, | ||||
|   { label: 'America/Fortaleza', value: 'America/Fortaleza' }, | ||||
|   { label: 'America/Glace_Bay', value: 'America/Glace_Bay' }, | ||||
|   { label: 'America/Godthab', value: 'America/Godthab' }, | ||||
|   { label: 'America/Goose_Bay', value: 'America/Goose_Bay' }, | ||||
|   { label: 'America/Grand_Turk', value: 'America/Grand_Turk' }, | ||||
|   { label: 'America/Grenada', value: 'America/Grenada' }, | ||||
|   { label: 'America/Guadeloupe', value: 'America/Guadeloupe' }, | ||||
|   { label: 'America/Guatemala', value: 'America/Guatemala' }, | ||||
|   { label: 'America/Guayaquil', value: 'America/Guayaquil' }, | ||||
|   { label: 'America/Guyana', value: 'America/Guyana' }, | ||||
|   { label: 'America/Halifax', value: 'America/Halifax' }, | ||||
|   { label: 'America/Havana', value: 'America/Havana' }, | ||||
|   { label: 'America/Hermosillo', value: 'America/Hermosillo' }, | ||||
|   { label: 'America/Indiana/Knox', value: 'America/Indiana/Knox' }, | ||||
|   { label: 'America/Indiana/Marengo', value: 'America/Indiana/Marengo' }, | ||||
|   { label: 'America/Indiana/Petersburg', value: 'America/Indiana/Petersburg' }, | ||||
|   { label: 'America/Indiana/Tell_City', value: 'America/Indiana/Tell_City' }, | ||||
|   { label: 'America/Indiana/Vevay', value: 'America/Indiana/Vevay' }, | ||||
|   { label: 'America/Indiana/Vincennes', value: 'America/Indiana/Vincennes' }, | ||||
|   { label: 'America/Indiana/Winamac', value: 'America/Indiana/Winamac' }, | ||||
|   { label: 'America/Indianapolis', value: 'America/Indianapolis' }, | ||||
|   { label: 'America/Inuvik', value: 'America/Inuvik' }, | ||||
|   { label: 'America/Iqaluit', value: 'America/Iqaluit' }, | ||||
|   { label: 'America/Jamaica', value: 'America/Jamaica' }, | ||||
|   { label: 'America/Jujuy', value: 'America/Jujuy' }, | ||||
|   { label: 'America/Juneau', value: 'America/Juneau' }, | ||||
|   { | ||||
|     label: 'America/Kentucky/Monticello', | ||||
|     value: 'America/Kentucky/Monticello', | ||||
|   }, | ||||
|   { label: 'America/Kralendijk', value: 'America/Kralendijk' }, | ||||
|   { label: 'America/La_Paz', value: 'America/La_Paz' }, | ||||
|   { label: 'America/Lima', value: 'America/Lima' }, | ||||
|   { label: 'America/Los_Angeles', value: 'America/Los_Angeles' }, | ||||
|   { label: 'America/Louisville', value: 'America/Louisville' }, | ||||
|   { label: 'America/Lower_Princes', value: 'America/Lower_Princes' }, | ||||
|   { label: 'America/Maceio', value: 'America/Maceio' }, | ||||
|   { label: 'America/Managua', value: 'America/Managua' }, | ||||
|   { label: 'America/Manaus', value: 'America/Manaus' }, | ||||
|   { label: 'America/Marigot', value: 'America/Marigot' }, | ||||
|   { label: 'America/Martinique', value: 'America/Martinique' }, | ||||
|   { label: 'America/Matamoros', value: 'America/Matamoros' }, | ||||
|   { label: 'America/Mazatlan', value: 'America/Mazatlan' }, | ||||
|   { label: 'America/Mendoza', value: 'America/Mendoza' }, | ||||
|   { label: 'America/Menominee', value: 'America/Menominee' }, | ||||
|   { label: 'America/Merida', value: 'America/Merida' }, | ||||
|   { label: 'America/Metlakatla', value: 'America/Metlakatla' }, | ||||
|   { label: 'America/Mexico_City', value: 'America/Mexico_City' }, | ||||
|   { label: 'America/Miquelon', value: 'America/Miquelon' }, | ||||
|   { label: 'America/Moncton', value: 'America/Moncton' }, | ||||
|   { label: 'America/Monterrey', value: 'America/Monterrey' }, | ||||
|   { label: 'America/Montevideo', value: 'America/Montevideo' }, | ||||
|   { label: 'America/Montserrat', value: 'America/Montserrat' }, | ||||
|   { label: 'America/Nassau', value: 'America/Nassau' }, | ||||
|   { label: 'America/New_York', value: 'America/New_York' }, | ||||
|   { label: 'America/Nipigon', value: 'America/Nipigon' }, | ||||
|   { label: 'America/Nome', value: 'America/Nome' }, | ||||
|   { label: 'America/Noronha', value: 'America/Noronha' }, | ||||
|   { | ||||
|     label: 'America/North_Dakota/Beulah', | ||||
|     value: 'America/North_Dakota/Beulah', | ||||
|   }, | ||||
|   { | ||||
|     label: 'America/North_Dakota/Center', | ||||
|     value: 'America/North_Dakota/Center', | ||||
|   }, | ||||
|   { | ||||
|     label: 'America/North_Dakota/New_Salem', | ||||
|     value: 'America/North_Dakota/New_Salem', | ||||
|   }, | ||||
|   { label: 'America/Ojinaga', value: 'America/Ojinaga' }, | ||||
|   { label: 'America/Panama', value: 'America/Panama' }, | ||||
|   { label: 'America/Pangnirtung', value: 'America/Pangnirtung' }, | ||||
|   { label: 'America/Paramaribo', value: 'America/Paramaribo' }, | ||||
|   { label: 'America/Phoenix', value: 'America/Phoenix' }, | ||||
|   { label: 'America/Port-au-Prince', value: 'America/Port-au-Prince' }, | ||||
|   { label: 'America/Port_of_Spain', value: 'America/Port_of_Spain' }, | ||||
|   { label: 'America/Porto_Velho', value: 'America/Porto_Velho' }, | ||||
|   { label: 'America/Puerto_Rico', value: 'America/Puerto_Rico' }, | ||||
|   { label: 'America/Punta_Arenas', value: 'America/Punta_Arenas' }, | ||||
|   { label: 'America/Rainy_River', value: 'America/Rainy_River' }, | ||||
|   { label: 'America/Rankin_Inlet', value: 'America/Rankin_Inlet' }, | ||||
|   { label: 'America/Recife', value: 'America/Recife' }, | ||||
|   { label: 'America/Regina', value: 'America/Regina' }, | ||||
|   { label: 'America/Resolute', value: 'America/Resolute' }, | ||||
|   { label: 'America/Rio_Branco', value: 'America/Rio_Branco' }, | ||||
|   { label: 'America/Santa_Isabel', value: 'America/Santa_Isabel' }, | ||||
|   { label: 'America/Santarem', value: 'America/Santarem' }, | ||||
|   { label: 'America/Santiago', value: 'America/Santiago' }, | ||||
|   { label: 'America/Santo_Domingo', value: 'America/Santo_Domingo' }, | ||||
|   { label: 'America/Sao_Paulo', value: 'America/Sao_Paulo' }, | ||||
|   { label: 'America/Scoresbysund', value: 'America/Scoresbysund' }, | ||||
|   { label: 'America/Sitka', value: 'America/Sitka' }, | ||||
|   { label: 'America/St_Barthelemy', value: 'America/St_Barthelemy' }, | ||||
|   { label: 'America/St_Johns', value: 'America/St_Johns' }, | ||||
|   { label: 'America/St_Kitts', value: 'America/St_Kitts' }, | ||||
|   { label: 'America/St_Lucia', value: 'America/St_Lucia' }, | ||||
|   { label: 'America/St_Thomas', value: 'America/St_Thomas' }, | ||||
|   { label: 'America/St_Vincent', value: 'America/St_Vincent' }, | ||||
|   { label: 'America/Swift_Current', value: 'America/Swift_Current' }, | ||||
|   { label: 'America/Tegucigalpa', value: 'America/Tegucigalpa' }, | ||||
|   { label: 'America/Thule', value: 'America/Thule' }, | ||||
|   { label: 'America/Thunder_Bay', value: 'America/Thunder_Bay' }, | ||||
|   { label: 'America/Tijuana', value: 'America/Tijuana' }, | ||||
|   { label: 'America/Toronto', value: 'America/Toronto' }, | ||||
|   { label: 'America/Tortola', value: 'America/Tortola' }, | ||||
|   { label: 'America/Vancouver', value: 'America/Vancouver' }, | ||||
|   { label: 'America/Whitehorse', value: 'America/Whitehorse' }, | ||||
|   { label: 'America/Winnipeg', value: 'America/Winnipeg' }, | ||||
|   { label: 'America/Yakutat', value: 'America/Yakutat' }, | ||||
|   { label: 'America/Yellowknife', value: 'America/Yellowknife' }, | ||||
|   { label: 'Antarctica/Casey', value: 'Antarctica/Casey' }, | ||||
|   { label: 'Antarctica/Davis', value: 'Antarctica/Davis' }, | ||||
|   { label: 'Antarctica/DumontDUrville', value: 'Antarctica/DumontDUrville' }, | ||||
|   { label: 'Antarctica/Macquarie', value: 'Antarctica/Macquarie' }, | ||||
|   { label: 'Antarctica/Mawson', value: 'Antarctica/Mawson' }, | ||||
|   { label: 'Antarctica/McMurdo', value: 'Antarctica/McMurdo' }, | ||||
|   { label: 'Antarctica/Palmer', value: 'Antarctica/Palmer' }, | ||||
|   { label: 'Antarctica/Rothera', value: 'Antarctica/Rothera' }, | ||||
|   { label: 'Antarctica/Syowa', value: 'Antarctica/Syowa' }, | ||||
|   { label: 'Antarctica/Troll', value: 'Antarctica/Troll' }, | ||||
|   { label: 'Antarctica/Vostok', value: 'Antarctica/Vostok' }, | ||||
|   { label: 'Arctic/Longyearbyen', value: 'Arctic/Longyearbyen' }, | ||||
|   { label: 'Asia/Aden', value: 'Asia/Aden' }, | ||||
|   { label: 'Asia/Almaty', value: 'Asia/Almaty' }, | ||||
|   { label: 'Asia/Amman', value: 'Asia/Amman' }, | ||||
|   { label: 'Asia/Anadyr', value: 'Asia/Anadyr' }, | ||||
|   { label: 'Asia/Aqtau', value: 'Asia/Aqtau' }, | ||||
|   { label: 'Asia/Aqtobe', value: 'Asia/Aqtobe' }, | ||||
|   { label: 'Asia/Ashgabat', value: 'Asia/Ashgabat' }, | ||||
|   { label: 'Asia/Atyrau', value: 'Asia/Atyrau' }, | ||||
|   { label: 'Asia/Baghdad', value: 'Asia/Baghdad' }, | ||||
|   { label: 'Asia/Bahrain', value: 'Asia/Bahrain' }, | ||||
|   { label: 'Asia/Baku', value: 'Asia/Baku' }, | ||||
|   { label: 'Asia/Bangkok', value: 'Asia/Bangkok' }, | ||||
|   { label: 'Asia/Barnaul', value: 'Asia/Barnaul' }, | ||||
|   { label: 'Asia/Beirut', value: 'Asia/Beirut' }, | ||||
|   { label: 'Asia/Bishkek', value: 'Asia/Bishkek' }, | ||||
|   { label: 'Asia/Brunei', value: 'Asia/Brunei' }, | ||||
|   { label: 'Asia/Calcutta', value: 'Asia/Calcutta' }, | ||||
|   { label: 'Asia/Chita', value: 'Asia/Chita' }, | ||||
|   { label: 'Asia/Choibalsan', value: 'Asia/Choibalsan' }, | ||||
|   { label: 'Asia/Colombo', value: 'Asia/Colombo' }, | ||||
|   { label: 'Asia/Damascus', value: 'Asia/Damascus' }, | ||||
|   { label: 'Asia/Dhaka', value: 'Asia/Dhaka' }, | ||||
|   { label: 'Asia/Dili', value: 'Asia/Dili' }, | ||||
|   { label: 'Asia/Dubai', value: 'Asia/Dubai' }, | ||||
|   { label: 'Asia/Dushanbe', value: 'Asia/Dushanbe' }, | ||||
|   { label: 'Asia/Famagusta', value: 'Asia/Famagusta' }, | ||||
|   { label: 'Asia/Gaza', value: 'Asia/Gaza' }, | ||||
|   { label: 'Asia/Hebron', value: 'Asia/Hebron' }, | ||||
|   { label: 'Asia/Hong_Kong', value: 'Asia/Hong_Kong' }, | ||||
|   { label: 'Asia/Hovd', value: 'Asia/Hovd' }, | ||||
|   { label: 'Asia/Irkutsk', value: 'Asia/Irkutsk' }, | ||||
|   { label: 'Asia/Jakarta', value: 'Asia/Jakarta' }, | ||||
|   { label: 'Asia/Jayapura', value: 'Asia/Jayapura' }, | ||||
|   { label: 'Asia/Jerusalem', value: 'Asia/Jerusalem' }, | ||||
|   { label: 'Asia/Kabul', value: 'Asia/Kabul' }, | ||||
|   { label: 'Asia/Kamchatka', value: 'Asia/Kamchatka' }, | ||||
|   { label: 'Asia/Karachi', value: 'Asia/Karachi' }, | ||||
|   { label: 'Asia/Katmandu', value: 'Asia/Katmandu' }, | ||||
|   { label: 'Asia/Khandyga', value: 'Asia/Khandyga' }, | ||||
|   { label: 'Asia/Krasnoyarsk', value: 'Asia/Krasnoyarsk' }, | ||||
|   { label: 'Asia/Kuala_Lumpur', value: 'Asia/Kuala_Lumpur' }, | ||||
|   { label: 'Asia/Kuching', value: 'Asia/Kuching' }, | ||||
|   { label: 'Asia/Kuwait', value: 'Asia/Kuwait' }, | ||||
|   { label: 'Asia/Macau', value: 'Asia/Macau' }, | ||||
|   { label: 'Asia/Magadan', value: 'Asia/Magadan' }, | ||||
|   { label: 'Asia/Makassar', value: 'Asia/Makassar' }, | ||||
|   { label: 'Asia/Manila', value: 'Asia/Manila' }, | ||||
|   { label: 'Asia/Muscat', value: 'Asia/Muscat' }, | ||||
|   { label: 'Asia/Nicosia', value: 'Asia/Nicosia' }, | ||||
|   { label: 'Asia/Novokuznetsk', value: 'Asia/Novokuznetsk' }, | ||||
|   { label: 'Asia/Novosibirsk', value: 'Asia/Novosibirsk' }, | ||||
|   { label: 'Asia/Omsk', value: 'Asia/Omsk' }, | ||||
|   { label: 'Asia/Oral', value: 'Asia/Oral' }, | ||||
|   { label: 'Asia/Phnom_Penh', value: 'Asia/Phnom_Penh' }, | ||||
|   { label: 'Asia/Pontianak', value: 'Asia/Pontianak' }, | ||||
|   { label: 'Asia/Pyongyang', value: 'Asia/Pyongyang' }, | ||||
|   { label: 'Asia/Qatar', value: 'Asia/Qatar' }, | ||||
|   { label: 'Asia/Qostanay', value: 'Asia/Qostanay' }, | ||||
|   { label: 'Asia/Qyzylorda', value: 'Asia/Qyzylorda' }, | ||||
|   { label: 'Asia/Rangoon', value: 'Asia/Rangoon' }, | ||||
|   { label: 'Asia/Riyadh', value: 'Asia/Riyadh' }, | ||||
|   { label: 'Asia/Saigon', value: 'Asia/Saigon' }, | ||||
|   { label: 'Asia/Sakhalin', value: 'Asia/Sakhalin' }, | ||||
|   { label: 'Asia/Samarkand', value: 'Asia/Samarkand' }, | ||||
|   { label: 'Asia/Seoul', value: 'Asia/Seoul' }, | ||||
|   { label: 'Asia/Shanghai', value: 'Asia/Shanghai' }, | ||||
|   { label: 'Asia/Singapore', value: 'Asia/Singapore' }, | ||||
|   { label: 'Asia/Srednekolymsk', value: 'Asia/Srednekolymsk' }, | ||||
|   { label: 'Asia/Taipei', value: 'Asia/Taipei' }, | ||||
|   { label: 'Asia/Tashkent', value: 'Asia/Tashkent' }, | ||||
|   { label: 'Asia/Tbilisi', value: 'Asia/Tbilisi' }, | ||||
|   { label: 'Asia/Tehran', value: 'Asia/Tehran' }, | ||||
|   { label: 'Asia/Thimphu', value: 'Asia/Thimphu' }, | ||||
|   { label: 'Asia/Tokyo', value: 'Asia/Tokyo' }, | ||||
|   { label: 'Asia/Tomsk', value: 'Asia/Tomsk' }, | ||||
|   { label: 'Asia/Ulaanbaatar', value: 'Asia/Ulaanbaatar' }, | ||||
|   { label: 'Asia/Urumqi', value: 'Asia/Urumqi' }, | ||||
|   { label: 'Asia/Ust-Nera', value: 'Asia/Ust-Nera' }, | ||||
|   { label: 'Asia/Vientiane', value: 'Asia/Vientiane' }, | ||||
|   { label: 'Asia/Vladivostok', value: 'Asia/Vladivostok' }, | ||||
|   { label: 'Asia/Yakutsk', value: 'Asia/Yakutsk' }, | ||||
|   { label: 'Asia/Yekaterinburg', value: 'Asia/Yekaterinburg' }, | ||||
|   { label: 'Asia/Yerevan', value: 'Asia/Yerevan' }, | ||||
|   { label: 'Atlantic/Azores', value: 'Atlantic/Azores' }, | ||||
|   { label: 'Atlantic/Bermuda', value: 'Atlantic/Bermuda' }, | ||||
|   { label: 'Atlantic/Canary', value: 'Atlantic/Canary' }, | ||||
|   { label: 'Atlantic/Cape_Verde', value: 'Atlantic/Cape_Verde' }, | ||||
|   { label: 'Atlantic/Faeroe', value: 'Atlantic/Faeroe' }, | ||||
|   { label: 'Atlantic/Madeira', value: 'Atlantic/Madeira' }, | ||||
|   { label: 'Atlantic/Reykjavik', value: 'Atlantic/Reykjavik' }, | ||||
|   { label: 'Atlantic/South_Georgia', value: 'Atlantic/South_Georgia' }, | ||||
|   { label: 'Atlantic/St_Helena', value: 'Atlantic/St_Helena' }, | ||||
|   { label: 'Atlantic/Stanley', value: 'Atlantic/Stanley' }, | ||||
|   { label: 'Australia/Adelaide', value: 'Australia/Adelaide' }, | ||||
|   { label: 'Australia/Brisbane', value: 'Australia/Brisbane' }, | ||||
|   { label: 'Australia/Broken_Hill', value: 'Australia/Broken_Hill' }, | ||||
|   { label: 'Australia/Currie', value: 'Australia/Currie' }, | ||||
|   { label: 'Australia/Darwin', value: 'Australia/Darwin' }, | ||||
|   { label: 'Australia/Eucla', value: 'Australia/Eucla' }, | ||||
|   { label: 'Australia/Hobart', value: 'Australia/Hobart' }, | ||||
|   { label: 'Australia/Lindeman', value: 'Australia/Lindeman' }, | ||||
|   { label: 'Australia/Lord_Howe', value: 'Australia/Lord_Howe' }, | ||||
|   { label: 'Australia/Melbourne', value: 'Australia/Melbourne' }, | ||||
|   { label: 'Australia/Perth', value: 'Australia/Perth' }, | ||||
|   { label: 'Australia/Sydney', value: 'Australia/Sydney' }, | ||||
|   { label: 'Europe/Amsterdam', value: 'Europe/Amsterdam' }, | ||||
|   { label: 'Europe/Andorra', value: 'Europe/Andorra' }, | ||||
|   { label: 'Europe/Astrakhan', value: 'Europe/Astrakhan' }, | ||||
|   { label: 'Europe/Athens', value: 'Europe/Athens' }, | ||||
|   { label: 'Europe/Belgrade', value: 'Europe/Belgrade' }, | ||||
|   { label: 'Europe/Berlin', value: 'Europe/Berlin' }, | ||||
|   { label: 'Europe/Bratislava', value: 'Europe/Bratislava' }, | ||||
|   { label: 'Europe/Brussels', value: 'Europe/Brussels' }, | ||||
|   { label: 'Europe/Bucharest', value: 'Europe/Bucharest' }, | ||||
|   { label: 'Europe/Budapest', value: 'Europe/Budapest' }, | ||||
|   { label: 'Europe/Busingen', value: 'Europe/Busingen' }, | ||||
|   { label: 'Europe/Chisinau', value: 'Europe/Chisinau' }, | ||||
|   { label: 'Europe/Copenhagen', value: 'Europe/Copenhagen' }, | ||||
|   { label: 'Europe/Dublin', value: 'Europe/Dublin' }, | ||||
|   { label: 'Europe/Gibraltar', value: 'Europe/Gibraltar' }, | ||||
|   { label: 'Europe/Guernsey', value: 'Europe/Guernsey' }, | ||||
|   { label: 'Europe/Helsinki', value: 'Europe/Helsinki' }, | ||||
|   { label: 'Europe/Isle_of_Man', value: 'Europe/Isle_of_Man' }, | ||||
|   { label: 'Europe/Istanbul', value: 'Europe/Istanbul' }, | ||||
|   { label: 'Europe/Jersey', value: 'Europe/Jersey' }, | ||||
|   { label: 'Europe/Kaliningrad', value: 'Europe/Kaliningrad' }, | ||||
|   { label: 'Europe/Kiev', value: 'Europe/Kiev' }, | ||||
|   { label: 'Europe/Kirov', value: 'Europe/Kirov' }, | ||||
|   { label: 'Europe/Lisbon', value: 'Europe/Lisbon' }, | ||||
|   { label: 'Europe/Ljubljana', value: 'Europe/Ljubljana' }, | ||||
|   { label: 'Europe/London', value: 'Europe/London' }, | ||||
|   { label: 'Europe/Luxembourg', value: 'Europe/Luxembourg' }, | ||||
|   { label: 'Europe/Madrid', value: 'Europe/Madrid' }, | ||||
|   { label: 'Europe/Malta', value: 'Europe/Malta' }, | ||||
|   { label: 'Europe/Mariehamn', value: 'Europe/Mariehamn' }, | ||||
|   { label: 'Europe/Minsk', value: 'Europe/Minsk' }, | ||||
|   { label: 'Europe/Monaco', value: 'Europe/Monaco' }, | ||||
|   { label: 'Europe/Moscow', value: 'Europe/Moscow' }, | ||||
|   { label: 'Europe/Oslo', value: 'Europe/Oslo' }, | ||||
|   { label: 'Europe/Paris', value: 'Europe/Paris' }, | ||||
|   { label: 'Europe/Podgorica', value: 'Europe/Podgorica' }, | ||||
|   { label: 'Europe/Prague', value: 'Europe/Prague' }, | ||||
|   { label: 'Europe/Riga', value: 'Europe/Riga' }, | ||||
|   { label: 'Europe/Rome', value: 'Europe/Rome' }, | ||||
|   { label: 'Europe/Samara', value: 'Europe/Samara' }, | ||||
|   { label: 'Europe/San_Marino', value: 'Europe/San_Marino' }, | ||||
|   { label: 'Europe/Sarajevo', value: 'Europe/Sarajevo' }, | ||||
|   { label: 'Europe/Saratov', value: 'Europe/Saratov' }, | ||||
|   { label: 'Europe/Simferopol', value: 'Europe/Simferopol' }, | ||||
|   { label: 'Europe/Skopje', value: 'Europe/Skopje' }, | ||||
|   { label: 'Europe/Sofia', value: 'Europe/Sofia' }, | ||||
|   { label: 'Europe/Stockholm', value: 'Europe/Stockholm' }, | ||||
|   { label: 'Europe/Tallinn', value: 'Europe/Tallinn' }, | ||||
|   { label: 'Europe/Tirane', value: 'Europe/Tirane' }, | ||||
|   { label: 'Europe/Ulyanovsk', value: 'Europe/Ulyanovsk' }, | ||||
|   { label: 'Europe/Uzhgorod', value: 'Europe/Uzhgorod' }, | ||||
|   { label: 'Europe/Vaduz', value: 'Europe/Vaduz' }, | ||||
|   { label: 'Europe/Vatican', value: 'Europe/Vatican' }, | ||||
|   { label: 'Europe/Vienna', value: 'Europe/Vienna' }, | ||||
|   { label: 'Europe/Vilnius', value: 'Europe/Vilnius' }, | ||||
|   { label: 'Europe/Volgograd', value: 'Europe/Volgograd' }, | ||||
|   { label: 'Europe/Warsaw', value: 'Europe/Warsaw' }, | ||||
|   { label: 'Europe/Zagreb', value: 'Europe/Zagreb' }, | ||||
|   { label: 'Europe/Zaporozhye', value: 'Europe/Zaporozhye' }, | ||||
|   { label: 'Europe/Zurich', value: 'Europe/Zurich' }, | ||||
|   { label: 'Indian/Antananarivo', value: 'Indian/Antananarivo' }, | ||||
|   { label: 'Indian/Chagos', value: 'Indian/Chagos' }, | ||||
|   { label: 'Indian/Christmas', value: 'Indian/Christmas' }, | ||||
|   { label: 'Indian/Cocos', value: 'Indian/Cocos' }, | ||||
|   { label: 'Indian/Comoro', value: 'Indian/Comoro' }, | ||||
|   { label: 'Indian/Kerguelen', value: 'Indian/Kerguelen' }, | ||||
|   { label: 'Indian/Mahe', value: 'Indian/Mahe' }, | ||||
|   { label: 'Indian/Maldives', value: 'Indian/Maldives' }, | ||||
|   { label: 'Indian/Mauritius', value: 'Indian/Mauritius' }, | ||||
|   { label: 'Indian/Mayotte', value: 'Indian/Mayotte' }, | ||||
|   { label: 'Indian/Reunion', value: 'Indian/Reunion' }, | ||||
|   { label: 'Pacific/Apia', value: 'Pacific/Apia' }, | ||||
|   { label: 'Pacific/Auckland', value: 'Pacific/Auckland' }, | ||||
|   { label: 'Pacific/Bougainville', value: 'Pacific/Bougainville' }, | ||||
|   { label: 'Pacific/Chatham', value: 'Pacific/Chatham' }, | ||||
|   { label: 'Pacific/Easter', value: 'Pacific/Easter' }, | ||||
|   { label: 'Pacific/Efate', value: 'Pacific/Efate' }, | ||||
|   { label: 'Pacific/Enderbury', value: 'Pacific/Enderbury' }, | ||||
|   { label: 'Pacific/Fakaofo', value: 'Pacific/Fakaofo' }, | ||||
|   { label: 'Pacific/Fiji', value: 'Pacific/Fiji' }, | ||||
|   { label: 'Pacific/Funafuti', value: 'Pacific/Funafuti' }, | ||||
|   { label: 'Pacific/Galapagos', value: 'Pacific/Galapagos' }, | ||||
|   { label: 'Pacific/Gambier', value: 'Pacific/Gambier' }, | ||||
|   { label: 'Pacific/Guadalcanal', value: 'Pacific/Guadalcanal' }, | ||||
|   { label: 'Pacific/Guam', value: 'Pacific/Guam' }, | ||||
|   { label: 'Pacific/Honolulu', value: 'Pacific/Honolulu' }, | ||||
|   { label: 'Pacific/Johnston', value: 'Pacific/Johnston' }, | ||||
|   { label: 'Pacific/Kiritimati', value: 'Pacific/Kiritimati' }, | ||||
|   { label: 'Pacific/Kosrae', value: 'Pacific/Kosrae' }, | ||||
|   { label: 'Pacific/Kwajalein', value: 'Pacific/Kwajalein' }, | ||||
|   { label: 'Pacific/Majuro', value: 'Pacific/Majuro' }, | ||||
|   { label: 'Pacific/Marquesas', value: 'Pacific/Marquesas' }, | ||||
|   { label: 'Pacific/Midway', value: 'Pacific/Midway' }, | ||||
|   { label: 'Pacific/Nauru', value: 'Pacific/Nauru' }, | ||||
|   { label: 'Pacific/Niue', value: 'Pacific/Niue' }, | ||||
|   { label: 'Pacific/Norfolk', value: 'Pacific/Norfolk' }, | ||||
|   { label: 'Pacific/Noumea', value: 'Pacific/Noumea' }, | ||||
|   { label: 'Pacific/Pago_Pago', value: 'Pacific/Pago_Pago' }, | ||||
|   { label: 'Pacific/Palau', value: 'Pacific/Palau' }, | ||||
|   { label: 'Pacific/Pitcairn', value: 'Pacific/Pitcairn' }, | ||||
|   { label: 'Pacific/Ponape', value: 'Pacific/Ponape' }, | ||||
|   { label: 'Pacific/Port_Moresby', value: 'Pacific/Port_Moresby' }, | ||||
|   { label: 'Pacific/Rarotonga', value: 'Pacific/Rarotonga' }, | ||||
|   { label: 'Pacific/Saipan', value: 'Pacific/Saipan' }, | ||||
|   { label: 'Pacific/Tahiti', value: 'Pacific/Tahiti' }, | ||||
|   { label: 'Pacific/Tarawa', value: 'Pacific/Tarawa' }, | ||||
|   { label: 'Pacific/Tongatapu', value: 'Pacific/Tongatapu' }, | ||||
|   { label: 'Pacific/Truk', value: 'Pacific/Truk' }, | ||||
|   { label: 'Pacific/Wake', value: 'Pacific/Wake' }, | ||||
|   { label: 'Pacific/Wallis', value: 'Pacific/Wallis' }, | ||||
| ]; | ||||
|  | ||||
| export default timezoneOptions; | ||||
| @@ -1,43 +0,0 @@ | ||||
| import { IGlobalVariable, IJSONObject } from '@automatisch/types'; | ||||
| import capitalize from './text/capitalize'; | ||||
| import extractEmailAddress from './text/extract-email-address'; | ||||
| import extractNumber from './text/extract-number'; | ||||
| import htmlToMarkdown from './text/html-to-markdown'; | ||||
| import lowercase from './text/lowercase'; | ||||
| import markdownToHtml from './text/markdown-to-html'; | ||||
| import pluralize from './text/pluralize'; | ||||
| import replace from './text/replace'; | ||||
| import trimWhitespace from './text/trim-whitespace'; | ||||
| import useDefaultValue from './text/use-default-value'; | ||||
| import performMathOperation from './numbers/perform-math-operation'; | ||||
| import randomNumber from './numbers/random-number'; | ||||
| import formatNumber from './numbers/format-number'; | ||||
| import formatPhoneNumber from './numbers/format-phone-number'; | ||||
| import formatDateTime from './date-time/format-date-time'; | ||||
|  | ||||
| const options: IJSONObject = { | ||||
|   capitalize, | ||||
|   extractEmailAddress, | ||||
|   extractNumber, | ||||
|   htmlToMarkdown, | ||||
|   lowercase, | ||||
|   markdownToHtml, | ||||
|   pluralize, | ||||
|   replace, | ||||
|   trimWhitespace, | ||||
|   useDefaultValue, | ||||
|   performMathOperation, | ||||
|   randomNumber, | ||||
|   formatNumber, | ||||
|   formatPhoneNumber, | ||||
|   formatDateTime, | ||||
| }; | ||||
|  | ||||
| export default { | ||||
|   name: 'List fields after transform', | ||||
|   key: 'listTransformOptions', | ||||
|  | ||||
|   async run($: IGlobalVariable) { | ||||
|     return options[$.step.parameters.transform as string]; | ||||
|   }, | ||||
| }; | ||||
| @@ -1,38 +0,0 @@ | ||||
| const formatNumber = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'The number you want to format.', | ||||
|     variables: true, | ||||
|   }, | ||||
|   { | ||||
|     label: 'Input Decimal Mark', | ||||
|     key: 'inputDecimalMark', | ||||
|     type: 'dropdown' as const, | ||||
|     required: true, | ||||
|     description: 'The decimal mark of the input number.', | ||||
|     variables: true, | ||||
|     options: [ | ||||
|       { label: 'Comma', value: ',' }, | ||||
|       { label: 'Period', value: '.' }, | ||||
|     ], | ||||
|   }, | ||||
|   { | ||||
|     label: 'To Format', | ||||
|     key: 'toFormat', | ||||
|     type: 'dropdown' as const, | ||||
|     required: true, | ||||
|     description: 'The format you want to convert the number to.', | ||||
|     variables: true, | ||||
|     options: [ | ||||
|       { label: 'Comma for grouping & period for decimal', value: '0' }, | ||||
|       { label: 'Period for grouping & comma for decimal', value: '1' }, | ||||
|       { label: 'Space for grouping & period for decimal', value: '2' }, | ||||
|       { label: 'Space for grouping & comma for decimal', value: '3' }, | ||||
|     ], | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default formatNumber; | ||||
| @@ -1,36 +0,0 @@ | ||||
| import phoneNumberCountryCodes from '../../../common/phone-number-country-codes'; | ||||
|  | ||||
| const formatPhoneNumber = [ | ||||
|   { | ||||
|     label: 'Phone Number', | ||||
|     key: 'phoneNumber', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'The phone number you want to format.', | ||||
|     variables: true, | ||||
|   }, | ||||
|   { | ||||
|     label: 'To Format', | ||||
|     key: 'toFormat', | ||||
|     type: 'dropdown' as const, | ||||
|     required: true, | ||||
|     description: 'The format you want to convert the number to.', | ||||
|     variables: true, | ||||
|     options: [ | ||||
|       { label: '+491632223344 (E164)', value: 'e164' }, | ||||
|       { label: '+49 163 2223344 (International)', value: 'international' }, | ||||
|       { label: '0163 2223344 (National)', value: 'national' }, | ||||
|     ], | ||||
|   }, | ||||
|   { | ||||
|     label: 'Phone Number Country Code', | ||||
|     key: 'phoneNumberCountryCode', | ||||
|     type: 'dropdown' as const, | ||||
|     required: true, | ||||
|     description: 'The country code of the phone number. The default is US.', | ||||
|     variables: true, | ||||
|     options: phoneNumberCountryCodes, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default formatPhoneNumber; | ||||
| @@ -1,36 +0,0 @@ | ||||
| const performMathOperation = [ | ||||
|   { | ||||
|     label: 'Math Operation', | ||||
|     key: 'mathOperation', | ||||
|     type: 'dropdown' as const, | ||||
|     required: true, | ||||
|     description: 'The math operation to perform.', | ||||
|     variables: true, | ||||
|     options: [ | ||||
|       { label: 'Add', value: 'add' }, | ||||
|       { label: 'Divide', value: 'divide' }, | ||||
|       { label: 'Make Negative', value: 'makeNegative' }, | ||||
|       { label: 'Multiply', value: 'multiply' }, | ||||
|       { label: 'Subtract', value: 'subtract' }, | ||||
|     ], | ||||
|   }, | ||||
|   { | ||||
|     label: 'Values', | ||||
|     key: 'values', | ||||
|     type: 'dynamic' as const, | ||||
|     required: false, | ||||
|     description: 'Add or remove numbers as needed.', | ||||
|     fields: [ | ||||
|       { | ||||
|         label: 'Input', | ||||
|         key: 'input', | ||||
|         type: 'string' as const, | ||||
|         required: true, | ||||
|         description: 'The number to perform the math operation on.', | ||||
|         variables: true, | ||||
|       }, | ||||
|     ], | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default performMathOperation; | ||||
| @@ -1,29 +0,0 @@ | ||||
| const randomNumber = [ | ||||
|   { | ||||
|     label: 'Lower range', | ||||
|     key: 'lowerRange', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'The lowest number to generate.', | ||||
|     variables: true, | ||||
|   }, | ||||
|   { | ||||
|     label: 'Upper range', | ||||
|     key: 'upperRange', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'The highest number to generate.', | ||||
|     variables: true, | ||||
|   }, | ||||
|   { | ||||
|     label: 'Decimal points', | ||||
|     key: 'decimalPoints', | ||||
|     type: 'string' as const, | ||||
|     required: false, | ||||
|     description: | ||||
|       'The number of digits after the decimal point. It can be an integer between 0 and 15.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default randomNumber; | ||||
| @@ -1,12 +0,0 @@ | ||||
| const capitalize = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'Text that will be capitalized.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default capitalize; | ||||
| @@ -1,12 +0,0 @@ | ||||
| const extractEmailAddress = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'Text that will be searched for an email address.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default extractEmailAddress; | ||||
| @@ -1,12 +0,0 @@ | ||||
| const extractNumber = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'Text that will be searched for a number.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default extractNumber; | ||||
| @@ -1,12 +0,0 @@ | ||||
| const htmlToMarkdown = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'HTML that will be converted to Markdown.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default htmlToMarkdown; | ||||
| @@ -1,12 +0,0 @@ | ||||
| const lowercase = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'Text that will be lowercased.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default lowercase; | ||||
| @@ -1,12 +0,0 @@ | ||||
| const markdownToHtml = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'Markdown text that will be converted to HTML.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default markdownToHtml; | ||||
| @@ -1,12 +0,0 @@ | ||||
| const pluralize = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'Text that will be pluralized.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default pluralize; | ||||
| @@ -1,28 +0,0 @@ | ||||
| const replace = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'Text that you want to search for and replace values.', | ||||
|     variables: true, | ||||
|   }, | ||||
|   { | ||||
|     label: 'Find', | ||||
|     key: 'find', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'Text that will be searched for.', | ||||
|     variables: true, | ||||
|   }, | ||||
|   { | ||||
|     label: 'Replace', | ||||
|     key: 'replace', | ||||
|     type: 'string' as const, | ||||
|     required: false, | ||||
|     description: 'Text that will replace the found text.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default replace; | ||||
| @@ -1,12 +0,0 @@ | ||||
| const trimWhitespace = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'Text you want to remove leading and trailing spaces.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default trimWhitespace; | ||||
| @@ -1,21 +0,0 @@ | ||||
| const useDefaultValue = [ | ||||
|   { | ||||
|     label: 'Input', | ||||
|     key: 'input', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: 'Text you want to check whether it is empty or not.', | ||||
|     variables: true, | ||||
|   }, | ||||
|   { | ||||
|     label: 'Default Value', | ||||
|     key: 'defaultValue', | ||||
|     type: 'string' as const, | ||||
|     required: true, | ||||
|     description: | ||||
|       'Text that will be used as a default value if the input is empty.', | ||||
|     variables: true, | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| export default useDefaultValue; | ||||
| @@ -1,16 +0,0 @@ | ||||
| import defineApp from '../../helpers/define-app'; | ||||
| import actions from './actions'; | ||||
| import dynamicFields from './dynamic-fields'; | ||||
|  | ||||
| export default defineApp({ | ||||
|   name: 'Formatter', | ||||
|   key: 'formatter', | ||||
|   iconUrl: '{BASE_URL}/apps/formatter/assets/favicon.svg', | ||||
|   authDocUrl: 'https://automatisch.io/docs/apps/formatter/connection', | ||||
|   supportsConnections: false, | ||||
|   baseUrl: '', | ||||
|   apiBaseUrl: '', | ||||
|   primaryColor: '001F52', | ||||
|   actions, | ||||
|   dynamicFields, | ||||
| }); | ||||
| @@ -1,60 +0,0 @@ | ||||
| <?xml version="1.0" standalone="no"?> | ||||
| <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" | ||||
|  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> | ||||
| <svg version="1.0" xmlns="http://www.w3.org/2000/svg" | ||||
|  width="400.000000pt" height="400.000000pt" viewBox="0 0 400.000000 400.000000" | ||||
|  preserveAspectRatio="xMidYMid meet"> | ||||
|  | ||||
| <g transform="translate(0.000000,400.000000) scale(0.100000,-0.100000)" | ||||
| fill="#000000" stroke="none"> | ||||
| <path d="M1829 3850 c-287 -26 -616 -144 -862 -308 -135 -89 -408 -322 -475 | ||||
| -405 -165 -201 -294 -475 -339 -717 -21 -117 -24 -472 -5 -630 36 -288 104 | ||||
| -524 220 -753 106 -210 196 -343 306 -452 106 -105 195 -159 348 -213 57 -19 | ||||
| 135 -56 173 -80 217 -139 452 -205 725 -205 150 0 238 15 378 65 214 75 380 | ||||
| 175 522 314 89 87 101 95 175 120 161 54 277 127 419 263 217 210 362 458 437 | ||||
| 749 67 261 49 465 -78 862 -100 313 -183 445 -468 739 -202 208 -366 324 -650 | ||||
| 462 -328 159 -565 213 -826 189z m206 -29 c12 -5 -13 -10 -70 -14 -203 -13 | ||||
| -587 -89 -701 -137 -26 -11 -49 -19 -51 -16 -5 5 128 61 217 91 81 28 235 64 | ||||
| 315 75 78 10 265 11 290 1z m-62 -142 c233 -14 324 -28 142 -22 -258 10 -585 | ||||
| -22 -805 -77 -63 -16 -116 -28 -117 -26 -6 6 167 85 217 100 120 35 289 42 | ||||
| 563 25z m-773 -34 c0 -2 -13 -11 -30 -20 -38 -19 -40 -11 -2 9 31 17 32 18 32 | ||||
| 11z m1120 -68 c217 -49 376 -104 575 -203 199 -99 255 -141 363 -274 253 -311 | ||||
| 380 -563 411 -815 19 -158 15 -239 -23 -389 -42 -164 -94 -275 -208 -436 -44 | ||||
| -63 -121 -173 -171 -245 -108 -156 -188 -258 -269 -344 -47 -49 -80 -72 -143 | ||||
| -102 -98 -46 -457 -169 -494 -169 -14 0 -86 31 -161 69 -144 74 -183 88 -355 | ||||
| 127 -78 17 -138 39 -210 75 -439 223 -697 460 -867 798 -56 112 -64 114 -13 4 | ||||
| 68 -147 187 -314 301 -424 136 -130 382 -300 565 -390 46 -23 131 -69 189 | ||||
| -103 127 -75 183 -99 297 -130 60 -15 89 -28 91 -39 6 -31 -34 -54 -144 -81 | ||||
| -60 -14 -115 -33 -123 -41 -23 -23 -8 -20 212 34 l198 50 110 -12 c60 -6 109 | ||||
| -14 109 -18 0 -6 -116 -62 -191 -92 -133 -54 -382 -104 -564 -113 -104 -5 | ||||
| -108 -4 -82 11 15 9 27 17 27 19 0 2 -42 -6 -92 -16 -89 -19 -97 -19 -178 -3 | ||||
| -203 39 -488 226 -664 435 -172 204 -336 516 -409 780 -49 176 -61 269 -62 | ||||
| 485 0 195 1 203 33 330 78 301 191 585 277 690 l24 30 -20 -63 c-29 -96 -22 | ||||
| -109 9 -17 52 155 125 242 300 356 59 39 116 62 300 123 394 130 430 136 717 | ||||
| 132 191 -3 235 -7 335 -29z m-1941 -729 c-88 -175 -129 -307 -164 -523 -21 | ||||
| -135 -22 -138 -30 -91 -10 64 1 226 20 297 21 81 70 194 115 271 37 62 86 128 | ||||
| 96 128 2 0 -14 -37 -37 -82z m100 -28 c-43 -99 -99 -284 -123 -400 -28 -138 | ||||
| -46 -386 -36 -495 13 -146 38 -303 65 -413 29 -119 185 -437 300 -612 75 -116 | ||||
| 86 -140 62 -140 -40 0 -208 164 -283 276 -71 106 -93 173 -98 293 -4 83 -10 | ||||
| 110 -45 201 -46 116 -56 166 -70 348 -16 194 13 437 74 617 44 132 174 415 | ||||
| 190 415 1 0 -15 -41 -36 -90z m3340 -622 c83 -383 16 -750 -195 -1076 -98 | ||||
| -150 -283 -323 -435 -406 -60 -33 -169 -76 -191 -76 -19 0 86 111 228 241 172 | ||||
| 157 253 254 313 376 24 48 67 125 96 169 69 105 108 184 141 281 35 103 43 | ||||
| 263 20 412 -18 115 -21 216 -7 191 5 -8 18 -59 30 -112z m-152 -310 c-3 -8 -6 | ||||
| -5 -6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m-22 -167 c-42 -233 -142 -442 | ||||
| -285 -594 -60 -65 -204 -180 -285 -228 l-40 -24 31 40 c18 22 94 130 171 240 | ||||
| 77 110 173 248 214 306 89 126 148 237 180 339 20 61 25 69 27 45 2 -16 -4 | ||||
| -72 -13 -124z m-2954 -986 c77 -64 259 -248 259 -262 0 -26 -70 5 -166 73 -88 | ||||
| 62 -174 176 -174 231 0 18 22 7 81 -42z m1310 -11 c26 -8 55 -24 64 -34 18 | ||||
| -19 17 -20 -8 -20 -25 0 -118 31 -146 49 -7 5 -11 13 -7 19 7 11 25 8 97 -14z | ||||
| m805 -33 c-3 -4 -30 -27 -60 -50 -52 -40 -57 -42 -117 -39 l-62 3 119 47 c138 | ||||
| 54 127 50 120 39z m-1515 -324 c49 -23 89 -45 89 -49 0 -21 -187 27 -235 61 | ||||
| -37 26 -135 136 -135 152 0 4 43 -22 97 -58 53 -35 136 -83 184 -106z m1501 | ||||
| 125 c-147 -175 -408 -321 -672 -377 -92 -19 -292 -19 -403 0 -190 33 -394 119 | ||||
| -371 156 4 6 41 8 97 4 98 -7 299 6 487 31 274 37 429 79 600 162 92 45 127 | ||||
| 54 288 71 8 0 -4 -21 -26 -47z"/> | ||||
| <path d="M632 2890 c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z"/> | ||||
| <path d="M622 2825 c0 -16 2 -22 5 -12 2 9 2 23 0 30 -3 6 -5 -1 -5 -18z"/> | ||||
| <path d="M691 1840 c0 -8 4 -22 9 -30 12 -18 12 -2 0 25 -6 13 -9 15 -9 5z"/> | ||||
| </g> | ||||
| </svg> | ||||
| Before Width: | Height: | Size: 3.9 KiB | 
| @@ -1,32 +0,0 @@ | ||||
| import verifyCredentials from './verify-credentials'; | ||||
| import isStillVerified from './is-still-verified'; | ||||
|  | ||||
| export default { | ||||
|   fields: [ | ||||
|     { | ||||
|       key: 'instanceUrl', | ||||
|       label: 'Instance URL', | ||||
|       type: 'string' as const, | ||||
|       required: true, | ||||
|       readOnly: false, | ||||
|       value: null, | ||||
|       placeholder: null, | ||||
|       description: null, | ||||
|       clickToCopy: false, | ||||
|     }, | ||||
|     { | ||||
|       key: 'apiKey', | ||||
|       label: 'Admin API Key', | ||||
|       type: 'string' as const, | ||||
|       required: true, | ||||
|       readOnly: false, | ||||
|       value: null, | ||||
|       placeholder: null, | ||||
|       description: null, | ||||
|       clickToCopy: false, | ||||
|     }, | ||||
|   ], | ||||
|  | ||||
|   verifyCredentials, | ||||
|   isStillVerified, | ||||
| }; | ||||
| @@ -1,9 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
| import verifyCredentials from './verify-credentials'; | ||||
|  | ||||
| const isStillVerified = async ($: IGlobalVariable) => { | ||||
|   await verifyCredentials($); | ||||
|   return true; | ||||
| }; | ||||
|  | ||||
| export default isStillVerified; | ||||
| @@ -1,16 +0,0 @@ | ||||
| import { IGlobalVariable } from '@automatisch/types'; | ||||
|  | ||||
| const verifyCredentials = async ($: IGlobalVariable) => { | ||||
|   const site = await $.http.get('/admin/site/'); | ||||
|   const screenName = [site.data.site.title, site.data.site.url] | ||||
|     .filter(Boolean) | ||||
|     .join(' @ '); | ||||
|  | ||||
|   await $.auth.set({ | ||||
|     screenName, | ||||
|   }); | ||||
|  | ||||
|   await $.http.get('/admin/pages/'); | ||||
| }; | ||||
|  | ||||
| export default verifyCredentials; | ||||
| @@ -1,23 +0,0 @@ | ||||
| import { TBeforeRequest } from '@automatisch/types'; | ||||
| import jwt from 'jsonwebtoken'; | ||||
|  | ||||
| const addAuthHeader: TBeforeRequest = ($, requestConfig) => { | ||||
|   const key = $.auth.data?.apiKey as string; | ||||
|  | ||||
|   if (key) { | ||||
|     const [id, secret] = key.split(':'); | ||||
|  | ||||
|     const token = jwt.sign({}, Buffer.from(secret, 'hex'), { | ||||
|       keyid: id, | ||||
|       algorithm: 'HS256', | ||||
|       expiresIn: '1h', | ||||
|       audience: `/admin/`, | ||||
|     }); | ||||
|  | ||||
|     requestConfig.headers.Authorization = `Ghost ${token}`; | ||||
|   } | ||||
|  | ||||
|   return requestConfig; | ||||
| }; | ||||
|  | ||||
| export default addAuthHeader; | ||||
| @@ -1,12 +0,0 @@ | ||||
| import { TBeforeRequest } from '@automatisch/types'; | ||||
|  | ||||
| const setBaseUrl: TBeforeRequest = ($, requestConfig) => { | ||||
|   const instanceUrl = $.auth.data.instanceUrl as string; | ||||
|   if (instanceUrl) { | ||||
|     requestConfig.baseURL = `${instanceUrl}/ghost/api`; | ||||
|   } | ||||
|  | ||||
|   return requestConfig; | ||||
| }; | ||||
|  | ||||
| export default setBaseUrl; | ||||
| @@ -1,19 +0,0 @@ | ||||
| import defineApp from '../../helpers/define-app'; | ||||
| import addAuthHeader from './common/add-auth-header'; | ||||
| import setBaseUrl from './common/set-base-url'; | ||||
| import auth from './auth'; | ||||
| import triggers from './triggers'; | ||||
|  | ||||
| export default defineApp({ | ||||
|   name: 'Ghost', | ||||
|   key: 'ghost', | ||||
|   baseUrl: 'https://ghost.org', | ||||
|   apiBaseUrl: '', | ||||
|   iconUrl: '{BASE_URL}/apps/ghost/assets/favicon.svg', | ||||
|   authDocUrl: 'https://automatisch.io/docs/apps/ghost/connection', | ||||
|   primaryColor: '15171A', | ||||
|   supportsConnections: true, | ||||
|   beforeRequest: [setBaseUrl, addAuthHeader], | ||||
|   auth, | ||||
|   triggers, | ||||
| }); | ||||
| @@ -1,3 +0,0 @@ | ||||
| import newPostPublished from './new-post-published'; | ||||
|  | ||||
| export default [newPostPublished]; | ||||
| @@ -1,55 +0,0 @@ | ||||
| import Crypto from 'crypto'; | ||||
| import isEmpty from 'lodash/isEmpty'; | ||||
| import defineTrigger from '../../../../helpers/define-trigger'; | ||||
|  | ||||
| export default defineTrigger({ | ||||
|   name: 'New post published', | ||||
|   key: 'newPostPublished', | ||||
|   type: 'webhook', | ||||
|   description: 'Triggers when a new post is published.', | ||||
|  | ||||
|   async run($) { | ||||
|     const dataItem = { | ||||
|       raw: $.request.body, | ||||
|       meta: { | ||||
|         internalId: Crypto.randomUUID(), | ||||
|       }, | ||||
|     }; | ||||
|  | ||||
|     $.pushTriggerItem(dataItem); | ||||
|   }, | ||||
|  | ||||
|   async testRun($) { | ||||
|     const lastExecutionStep = await $.getLastExecutionStep(); | ||||
|  | ||||
|     if (!isEmpty(lastExecutionStep?.dataOut)) { | ||||
|       $.pushTriggerItem({ | ||||
|         raw: lastExecutionStep.dataOut, | ||||
|         meta: { | ||||
|           internalId: '', | ||||
|         }, | ||||
|       }); | ||||
|     } | ||||
|   }, | ||||
|  | ||||
|   async registerHook($) { | ||||
|     const payload = { | ||||
|       webhooks: [ | ||||
|         { | ||||
|           event: 'post.published', | ||||
|           target_url: $.webhookUrl, | ||||
|           name: `Flow ID: ${$.flow.id}`, | ||||
|         }, | ||||
|       ], | ||||
|     }; | ||||
|  | ||||
|     const response = await $.http.post('/admin/webhooks/', payload); | ||||
|     const id = response.data.webhooks[0].id; | ||||
|  | ||||
|     await $.flow.setRemoteWebhookId(id); | ||||
|   }, | ||||
|  | ||||
|   async unregisterHook($) { | ||||
|     await $.http.delete(`/admin/webhooks/${$.flow.remoteWebhookId}/`); | ||||
|   }, | ||||
| }); | ||||
| @@ -6,7 +6,7 @@ import actions from './actions'; | ||||
| import dynamicData from './dynamic-data'; | ||||
|  | ||||
| export default defineApp({ | ||||
|   name: 'GitHub', | ||||
|   name: 'Github', | ||||
|   key: 'github', | ||||
|   baseUrl: 'https://github.com', | ||||
|   apiBaseUrl: 'https://api.github.com', | ||||
|   | ||||
| @@ -25,12 +25,6 @@ const verifyCredentials = async ($: IGlobalVariable) => { | ||||
|   $.auth.data.accessToken = data.access_token; | ||||
|  | ||||
|   const currentUser = await getCurrentUser($); | ||||
|   const screenName = [ | ||||
|     currentUser.username, | ||||
|     $.auth.data.instanceUrl, | ||||
|   ] | ||||
|     .filter(Boolean) | ||||
|     .join(' @ '); | ||||
|  | ||||
|   await $.auth.set({ | ||||
|     clientId: $.auth.data.clientId, | ||||
| @@ -40,7 +34,7 @@ const verifyCredentials = async ($: IGlobalVariable) => { | ||||
|     scope: data.scope, | ||||
|     tokenType: data.token_type, | ||||
|     userId: currentUser.id, | ||||
|     screenName, | ||||
|     screenName: `${currentUser.username} @ ${$.auth.data.instanceUrl}`, | ||||
|   }); | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -9,11 +9,11 @@ export default { | ||||
|     // ref: | ||||
|     //  - https://docs.gitlab.com/ee/api/projects.html#list-all-projects | ||||
|     //  - https://docs.gitlab.com/ee/api/rest/index.html#keyset-based-pagination | ||||
|  | ||||
|     const firstPageRequest = $.http.get('/api/v4/projects', { | ||||
|       params: { | ||||
|         simple: true, | ||||
|         pagination: 'keyset', | ||||
|         membership: true, | ||||
|         order_by: 'id', | ||||
|         sort: 'asc', | ||||
|       }, | ||||
|   | ||||
| @@ -6,7 +6,7 @@ import triggers from './triggers'; | ||||
| import dynamicData from './dynamic-data'; | ||||
|  | ||||
| export default defineApp({ | ||||
|   name: 'GitLab', | ||||
|   name: 'Gitlab', | ||||
|   key: 'gitlab', | ||||
|   baseUrl: 'https://gitlab.com', | ||||
|   apiBaseUrl: 'https://gitlab.com', | ||||
|   | ||||
| @@ -3,7 +3,6 @@ import defineTrigger from '../../../../helpers/define-trigger'; | ||||
| import { GITLAB_EVENT_TYPE } from '../types'; | ||||
| import { | ||||
|   getRegisterHookFn, | ||||
|   getRunFn, | ||||
|   getTestRunFn, | ||||
|   projectArgumentDescriptor, | ||||
|   unregisterHook, | ||||
| @@ -20,7 +19,6 @@ export const triggerDescriptor: IRawTrigger = { | ||||
|   key: GITLAB_EVENT_TYPE.confidential_issues_events, | ||||
|   type: 'webhook', | ||||
|   arguments: [projectArgumentDescriptor], | ||||
|   run: ($) => getRunFn($), | ||||
|   testRun: getTestRunFn(data), | ||||
|   registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.confidential_issues_events), | ||||
|   unregisterHook, | ||||
|   | ||||
| @@ -3,7 +3,6 @@ import defineTrigger from '../../../../helpers/define-trigger'; | ||||
| import { GITLAB_EVENT_TYPE } from '../types'; | ||||
| import { | ||||
|   getRegisterHookFn, | ||||
|   getRunFn, | ||||
|   getTestRunFn, | ||||
|   projectArgumentDescriptor, | ||||
|   unregisterHook, | ||||
| @@ -20,7 +19,6 @@ export const triggerDescriptor: IRawTrigger = { | ||||
|   key: GITLAB_EVENT_TYPE.confidential_note_events, | ||||
|   type: 'webhook', | ||||
|   arguments: [projectArgumentDescriptor], | ||||
|   run: ($) => getRunFn($), | ||||
|   testRun: getTestRunFn(data), | ||||
|   registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.confidential_note_events), | ||||
|   unregisterHook, | ||||
|   | ||||
| @@ -3,7 +3,6 @@ import defineTrigger from '../../../../helpers/define-trigger'; | ||||
| import { GITLAB_EVENT_TYPE } from '../types'; | ||||
| import { | ||||
|   getRegisterHookFn, | ||||
|   getRunFn, | ||||
|   getTestRunFn, | ||||
|   projectArgumentDescriptor, | ||||
|   unregisterHook, | ||||
| @@ -19,7 +18,6 @@ export const triggerDescriptor: IRawTrigger = { | ||||
|   key: GITLAB_EVENT_TYPE.deployment_events, | ||||
|   type: 'webhook', | ||||
|   arguments: [projectArgumentDescriptor], | ||||
|   run: ($) => getRunFn($), | ||||
|   testRun: getTestRunFn(data), | ||||
|   registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.deployment_events), | ||||
|   unregisterHook, | ||||
|   | ||||
| @@ -3,7 +3,6 @@ import defineTrigger from '../../../../helpers/define-trigger'; | ||||
| import { GITLAB_EVENT_TYPE } from '../types'; | ||||
| import { | ||||
|   getRegisterHookFn, | ||||
|   getRunFn, | ||||
|   getTestRunFn, | ||||
|   projectArgumentDescriptor, | ||||
|   unregisterHook, | ||||
| @@ -19,7 +18,6 @@ export const triggerDescriptor: IRawTrigger = { | ||||
|   key: GITLAB_EVENT_TYPE.feature_flag_events, | ||||
|   type: 'webhook', | ||||
|   arguments: [projectArgumentDescriptor], | ||||
|   run: ($) => getRunFn($), | ||||
|   testRun: getTestRunFn(data), | ||||
|   registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.feature_flag_events), | ||||
|   unregisterHook, | ||||
|   | ||||
| @@ -3,7 +3,6 @@ import defineTrigger from '../../../../helpers/define-trigger'; | ||||
| import { GITLAB_EVENT_TYPE } from '../types'; | ||||
| import { | ||||
|   getRegisterHookFn, | ||||
|   getRunFn, | ||||
|   getTestRunFn, | ||||
|   projectArgumentDescriptor, | ||||
|   unregisterHook, | ||||
| @@ -19,7 +18,6 @@ export const triggerDescriptor: IRawTrigger = { | ||||
|   key: GITLAB_EVENT_TYPE.issues_events, | ||||
|   type: 'webhook', | ||||
|   arguments: [projectArgumentDescriptor], | ||||
|   run: ($) => getRunFn($), | ||||
|   testRun: getTestRunFn(data), | ||||
|   registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.issues_events), | ||||
|   unregisterHook, | ||||
|   | ||||
| @@ -3,7 +3,6 @@ import defineTrigger from '../../../../helpers/define-trigger'; | ||||
| import { GITLAB_EVENT_TYPE } from '../types'; | ||||
| import { | ||||
|   getRegisterHookFn, | ||||
|   getRunFn, | ||||
|   getTestRunFn, | ||||
|   projectArgumentDescriptor, | ||||
|   unregisterHook, | ||||
| @@ -18,7 +17,6 @@ export const triggerDescriptor: IRawTrigger = { | ||||
|   key: GITLAB_EVENT_TYPE.job_events, | ||||
|   type: 'webhook', | ||||
|   arguments: [projectArgumentDescriptor], | ||||
|   run: ($) => getRunFn($), | ||||
|   testRun: getTestRunFn(data), | ||||
|   registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.job_events), | ||||
|   unregisterHook, | ||||
|   | ||||
| @@ -22,17 +22,6 @@ export const projectArgumentDescriptor = { | ||||
|   }, | ||||
| }; | ||||
|  | ||||
| export const getRunFn = async ($: IGlobalVariable) => { | ||||
|   const dataItem = { | ||||
|     raw: $.request.body, | ||||
|     meta: { | ||||
|       internalId: Crypto.randomUUID(), | ||||
|     }, | ||||
|   }; | ||||
|  | ||||
|   $.pushTriggerItem(dataItem); | ||||
| }; | ||||
|  | ||||
| export const getTestRunFn = | ||||
|   (eventData: IJSONObject) => ($: IGlobalVariable) => { | ||||
|     /* | ||||
|   | ||||
| @@ -3,7 +3,6 @@ import defineTrigger from '../../../../helpers/define-trigger'; | ||||
| import { GITLAB_EVENT_TYPE } from '../types'; | ||||
| import { | ||||
|   getRegisterHookFn, | ||||
|   getRunFn, | ||||
|   getTestRunFn, | ||||
|   projectArgumentDescriptor, | ||||
|   unregisterHook, | ||||
| @@ -19,7 +18,6 @@ export const triggerDescriptor: IRawTrigger = { | ||||
|   key: GITLAB_EVENT_TYPE.merge_requests_events, | ||||
|   type: 'webhook', | ||||
|   arguments: [projectArgumentDescriptor], | ||||
|   run: ($) => getRunFn($), | ||||
|   testRun: getTestRunFn(data), | ||||
|   registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.merge_requests_events), | ||||
|   unregisterHook, | ||||
|   | ||||
| @@ -3,7 +3,6 @@ import defineTrigger from '../../../../helpers/define-trigger'; | ||||
| import { GITLAB_EVENT_TYPE } from '../types'; | ||||
| import { | ||||
|   getRegisterHookFn, | ||||
|   getRunFn, | ||||
|   getTestRunFn, | ||||
|   projectArgumentDescriptor, | ||||
|   unregisterHook, | ||||
| @@ -19,7 +18,6 @@ export const triggerDescriptor: IRawTrigger = { | ||||
|   key: GITLAB_EVENT_TYPE.note_events, | ||||
|   type: 'webhook', | ||||
|   arguments: [projectArgumentDescriptor], | ||||
|   run: ($) => getRunFn($), | ||||
|   testRun: getTestRunFn(data), | ||||
|   registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.note_events), | ||||
|   unregisterHook, | ||||
|   | ||||
| @@ -3,7 +3,6 @@ import defineTrigger from '../../../../helpers/define-trigger'; | ||||
| import { GITLAB_EVENT_TYPE } from '../types'; | ||||
| import { | ||||
|   getRegisterHookFn, | ||||
|   getRunFn, | ||||
|   getTestRunFn, | ||||
|   projectArgumentDescriptor, | ||||
|   unregisterHook, | ||||
| @@ -19,7 +18,6 @@ export const triggerDescriptor: IRawTrigger = { | ||||
|   key: GITLAB_EVENT_TYPE.pipeline_events, | ||||
|   type: 'webhook', | ||||
|   arguments: [projectArgumentDescriptor], | ||||
|   run: ($) => getRunFn($), | ||||
|   testRun: getTestRunFn(data), | ||||
|   registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.pipeline_events), | ||||
|   unregisterHook, | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user