diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index d2a70042..00000000 --- a/.drone.yml +++ /dev/null @@ -1,79 +0,0 @@ -kind: pipeline -name: default - -steps: - - name: build - image: docker - commands: - - docker build . -t build-image -f Dockerfile.build - - docker create --name build-container build-image - - docker cp build-container:/src/build /build - volumes: - - name: build - path: /build - - name: docker1 - path: /var/run/docker.sock - - name: docker2 - path: /var/lib/docker - - - name: publish - image: plugins/gh-pages - settings: - username: - from_secret: GITHUB_USERNAME - password: - from_secret: GITHUB_PASSWORD - pages_directory: /build/ - volumes: - - name: build - path: /build - when: - event: - - push - branch: - - master - - - name: cleanup-build - image: docker - commands: - - docker rm build-container - volumes: - - name: docker1 - path: /var/run/docker.sock - - name: docker2 - path: /var/lib/docker - when: - status: - - failure - - success - - - name: cleanup - image: docker - commands: - - docker system prune -f - volumes: - - name: docker1 - path: /var/run/docker.sock - - name: docker2 - path: /var/lib/docker - when: - status: - - failure - -volumes: - - name: build - temp: {} - - name: docker1 - host: - path: /var/run/docker.sock - - name: docker2 - host: - path: /var/lib/docker ---- -kind: secret -name: GITHUB_USERNAME -data: K+UUYGnsZSxNtSl81b4iJT0oGLJtfk8hNAxgaGBUHCX8GmF+GTBWykW8xQ== ---- -kind: secret -name: GITHUB_PASSWORD -data: 92oAXn7OCNtzuL9hm3yOZLjXsk9gRXq2do+GmV1L/klbNc8coWgJ+JehkSKjEL81 \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index dd1c4007..11cffea0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -19,6 +19,7 @@ module.exports = { "@typescript-eslint", ], "rules": { + "@typescript-eslint/space-before-blocks": "off", "@typescript-eslint/dot-notation": "off", "@typescript-eslint/indent": [ "error", diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5de5f541..92bb4d51 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,8 +19,11 @@ jobs: - name: Install Dependencies run: npm i + - name: Install Playwright Browsers + run: npx playwright install --with-deps + - name: Run Tests - run: npm run test:coverage + run: npm run test:ci - name: Run Build run: npm run build diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index b5940407..9c8c5b86 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,8 +19,11 @@ jobs: - name: Install Dependencies run: npm i + - name: Install Playwright Browsers + run: npx playwright install --with-deps + - name: Run Tests - run: npm run test:coverage + run: npm run test:ci - name: Run Build run: npm run build diff --git a/.gitignore b/.gitignore index a7823fd4..7ac1e671 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ _test-output # production -/build +/dist # misc .DS_Store diff --git a/.storybook/main.js b/.storybook/main.js index 6373ef81..55ea234e 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -1,60 +1,20 @@ -const path = require('path'); - -const appRoot = path.resolve(__dirname, '..'); - -function root() { - const newArgs = Array.prototype.slice.call(arguments, 0); - - return path.join.apply(path, [appRoot].concat(newArgs)); -} - -const plugins = { - // https://github.com/dividab/tsconfig-paths-webpack-plugin - TsconfigPathsPlugin: require('tsconfig-paths-webpack-plugin') -}; - module.exports = { stories: [ '../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)' ], + addons: [ '@storybook/addon-links', '@storybook/addon-essentials' ], - core: { - builder: 'webpack5' - }, - framework: '@storybook/react', - webpackFinal: async (config) => { - // https://github.com/storybookjs/storybook/issues/12019 - config.module.rules[0].use[0].options.plugins = [ - ['@babel/proposal-class-properties', { 'loose': true }] - ]; - - config.module.rules.push({ - test: /\.scss$/, - use: [{ - loader: 'style-loader', - }, { - loader: 'css-loader', - }, { - loader: 'sass-loader', - options: { - sourceMap: true, - }, - }], - }); - config.resolve.modules.push(root('src')); - config.resolve.modules.push(root('src', 'style')); - - config.resolve.plugins = [ - new plugins.TsconfigPathsPlugin({ - configFile: root('tsconfig.json') - }), - ]; + framework: { + name: '@storybook/react-vite', + options: {} + }, - return config; + docs: { + autodocs: true } } \ No newline at end of file diff --git a/Dockerfile.build b/Dockerfile.build index aba4201c..c85ecc85 100644 --- a/Dockerfile.build +++ b/Dockerfile.build @@ -11,7 +11,7 @@ RUN npm install --loglevel=error COPY . . # Test Frontend -RUN npm run test:coverage +RUN npm run test:ci # Build Frontend RUN npm run build diff --git a/config/karma-test-shim.js b/config/karma-test-shim.js deleted file mode 100644 index c407ebf6..00000000 --- a/config/karma-test-shim.js +++ /dev/null @@ -1,20 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -/* eslint-disable vars-on-top */ -/* eslint-disable no-var */ -Error.stackTraceLimit = Infinity; - -var testContext = require.context('../src', true, /\.spec\.ts/); - -/** - * Get all the files, for each file, call the context function - * that will require the file and load it up here. Context will - * loop and require those spec files here. - */ -function requireAll(requireContext) { - return requireContext.keys().map(requireContext); -} - -/** - * Requires and returns all modules that match. - */ -var modules = requireAll(testContext); diff --git a/config/karma.conf.js b/config/karma.conf.js deleted file mode 100644 index ed3eb8a0..00000000 --- a/config/karma.conf.js +++ /dev/null @@ -1,57 +0,0 @@ -const webpackConfig = require('./webpack.config'); - -module.exports = function configure(config) { - const currentConfig = { - /** - * Base path that will be used to resolve all patterns (e.g. files, exclude). - */ - basePath: '', - - frameworks: ['jasmine'], - - /** - * Load additional test shim to setup angular for testing. - */ - files: [ - { pattern: './config/karma-test-shim.js', watched: false }, - ], - - preprocessors: { - './config/karma-test-shim.js': ['webpack', 'sourcemap'], - }, - - /** - * Load the files with webpack and use test configuration for it. - */ - webpack: webpackConfig({ target: 'tests', jit: true }), - - webpackMiddleware: { - stats: 'errors-only', - }, - - webpackServer: { - noInfo: true, - }, - - /** - * Leave Jasmine Spec Runner output visible in browser. - */ - client: { - clearContext: false, - }, - - /** - * Use a mocha style console reporter and html reporter. - */ - reporters: ['kjhtml', 'mocha'], - - /** - * Run with chrome to enable debugging. - * - * available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - */ - browsers: ['Chrome'], - }; - - config.set(currentConfig); -}; diff --git a/config/karma.coverage.conf.js b/config/karma.coverage.conf.js deleted file mode 100644 index f4ba7b7f..00000000 --- a/config/karma.coverage.conf.js +++ /dev/null @@ -1,90 +0,0 @@ -/* eslint-disable global-require */ -const webpackConfig = require('./webpack.config'); - -module.exports = function configure(config) { - const newConfig = { - /** - * Base path that will be used to resolve all patterns (e.g. files, exclude). - */ - basePath: '', - - frameworks: ['jasmine'], - - /** - * Load additional test shim to setup angular for testing. - */ - files: [ - { pattern: './config/karma-test-shim.js', watched: false }, - ], - - preprocessors: { - './config/karma-test-shim.js': ['webpack', 'sourcemap'], - }, - - /** - * Load the files with webpack and use test configuration for it. - */ - webpack: webpackConfig({ target: 'tests', coverage: true, jit: true }), - - webpackMiddleware: { - stats: 'errors-only', - }, - - webpackServer: { - noInfo: true, - }, - - /** - * Use a mocha style console reporter, html reporter and the code coverage reporter. - */ - reporters: ['mocha', 'html', 'coverage-istanbul'], - - htmlReporter: { - useCompactStyle: true, - /** - * Use the same folder like the html report for coverage reports. - */ - outputFile: '_test-output/tests.html', - - /** - * Group the output by test suite (describe), equivalent to mocha reporter. - */ - groupSuites: true, - }, - - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../_test-output/coverage'), - - reports: [ - 'html', - 'lcovonly', - ], - - fixWebpackSourcePaths: true, - }, - - /** - * Disable continuous Integration mode, run only one time. - */ - singleRun: true, - - customLaunchers: { - ChromeCustom: { - base: 'ChromeHeadless', - /** - * We must disable the Chrome sandbox (Chrome's sandbox needs more permissions than Docker allows by default). - */ - flags: ['--no-sandbox'], - }, - }, - - /** - * Run with chrome because phantom js does not provide all types. - * - * Available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - */ - browsers: ['ChromeCustom'], - }; - - config.set(newConfig); -}; diff --git a/config/webpack.config.js b/config/webpack.config.js deleted file mode 100644 index 72f96efe..00000000 --- a/config/webpack.config.js +++ /dev/null @@ -1,378 +0,0 @@ -/* eslint-disable prefer-spread */ -/* eslint-disable prefer-rest-params */ -/* eslint-disable global-require */ - -const webpack = require('webpack'); -const path = require('path'); - -const appRoot = path.resolve(__dirname, '..'); - -function root() { - const newArgs = Array.prototype.slice.call(arguments, 0); - - return path.join.apply(path, [appRoot].concat(newArgs)); -} - -const plugins = { - // https://github.com/webpack-contrib/mini-css-extract-plugin - MiniCssExtractPlugin: require('mini-css-extract-plugin'), - // https://github.com/dividab/tsconfig-paths-webpack-plugin - TsconfigPathsPlugin: require('tsconfig-paths-webpack-plugin'), - // https://github.com/aackerman/circular-dependency-plugin - CircularDependencyPlugin: require('circular-dependency-plugin'), - // https://github.com/jantimon/html-webpack-plugin - HtmlWebpackPlugin: require('html-webpack-plugin'), - // https://webpack.js.org/plugins/terser-webpack-plugin/ - TerserPlugin: require('terser-webpack-plugin'), - // https://github.com/NMFR/optimize-css-assets-webpack-plugin - CssMinimizerPlugin: require('css-minimizer-webpack-plugin'), - // https://webpack.js.org/plugins/eslint-webpack-plugin/ - ESLintPlugin: require('eslint-webpack-plugin'), - // https://github.com/webpack-contrib/stylelint-webpack-plugin - StylelintPlugin: require('stylelint-webpack-plugin'), - // https://www.npmjs.com/package/webpack-bundle-analyzer - BundleAnalyzerPlugin: require('webpack-bundle-analyzer').BundleAnalyzerPlugin, - // https://github.com/jantimon/favicons-webpack-plugin - FaviconsWebpackPlugin: require('favicons-webpack-plugin'), - // https://github.com/GoogleChrome/workbox/tree/master/packages/workbox-webpack-plugin - GenerateSW: require('workbox-webpack-plugin').GenerateSW, -}; - -module.exports = function configure(env) { - const isProduction = env && env.production; - const isTests = env && env.target === 'tests'; - const isTestCoverage = env && env.coverage; - const isAnalyzing = isProduction && env.analyze; - - const config = { - mode: isProduction ? 'production' : 'development', - - /** - * Source map for Karma from the help of karma-sourcemap-loader & karma-webpack. - * - * See: https://webpack.js.org/configuration/devtool/ - */ - devtool: isProduction ? false : 'inline-source-map', - - /** - * Options affecting the resolving of modules. - * - * See: https://webpack.js.org/configuration/resolve/ - */ - resolve: { - /** - * An array of extensions that should be used to resolve modules. - * - * See: https://webpack.js.org/configuration/resolve/#resolve-extensions - */ - extensions: ['.ts', '.tsx', '.js', '.mjs', '.css', '.scss'], - modules: [ - root('src'), - root('src', 'style'), - root('node_modules'), - ], - - plugins: [ - new plugins.TsconfigPathsPlugin({ - configFile: 'tsconfig.json', - }), - ], - }, - - /** - * Options affecting the normal modules. - * - * See: https://webpack.js.org/configuration/module/ - */ - module: { - /** - * An array of Rules which are matched to requests when modules are created. - * - * See: https://webpack.js.org/configuration/module/#module-rules - */ - rules: [{ - test: /\.html$/, - use: [{ - loader: 'raw-loader', - }], - }, { - test: /\.d\.ts?$/, - use: [{ - loader: 'ignore-loader', - }], - include: [/node_modules/], - }, { - test: /\.(png|jpe?g|gif|svg|ico)(\?.*$|$)/, - use: [{ - loader: 'file-loader', - options: { - name: '[name].[contenthash].[ext]', - - // Store the assets in custom path because of fonts need relative urls. - outputPath: 'assets', - }, - }], - }, { - test: /\.css$/, - use: [{ - loader: plugins.MiniCssExtractPlugin.loader, - }, { - loader: 'css-loader', - }, { - loader: 'postcss-loader', - }], - }], - }, - - plugins: [ - /** - * Puts each bundle into a file without the hash. - * - * See: https://github.com/webpack-contrib/mini-css-extract-plugin - */ - new plugins.MiniCssExtractPlugin({ - filename: '[name].css', - }), - - new webpack.LoaderOptionsPlugin({ - options: { - htmlLoader: { - /** - * Define the root for images, so that we can use absolute urls. - * - * See: https://github.com/webpack/html-loader#Advanced_Options - */ - root: root('src', 'images'), - }, - context: '/', - }, - }), - - new plugins.FaviconsWebpackPlugin({ - // Favicon source logo - logo: 'src/images/logo-square.png', - // Favicon app title - title: 'MyDraft', - favicons: { - appName: 'mydraft.cc', - appDescription: 'Open Source Wireframe Editor', - developerName: 'Sebastian Stehle', - developerUrl: 'https://sstehle.com', - start_url: '/', - }, - }), - - new plugins.StylelintPlugin({ - files: '**/*.scss', - }), - - /** - * Detect circular dependencies in app. - * - * See: https://github.com/aackerman/circular-dependency-plugin - */ - new plugins.CircularDependencyPlugin({ - exclude: /([\\/]node_modules[\\/])/, - // Add errors to webpack instead of warnings - failOnError: true, - }), - ], - - devServer: { - headers: { - 'Access-Control-Allow-Origin': '*', - }, - historyApiFallback: true, - }, - }; - - if (!isTests) { - /** - * The entry point for the bundle. Our React app. - * - * See: https://webpack.js.org/configuration/entry-context/ - */ - config.entry = { - src: './src/index.tsx', - }; - - if (isProduction) { - config.output = { - /** - * The output directory as absolute path (required). - * - * See: https://webpack.js.org/configuration/output/#output-path - */ - path: root('/build/'), - - publicPath: './', - - /** - * Specifies the name of each output file on disk. - * - * Do NOT append hash to service worker in development mode, so we can load them directly. - * - * See: https://webpack.js.org/configuration/output/#output-filename - */ - filename: (pathData) => { - return pathData.chunk.name === 'src' ? '[name].[contenthash:8].js' : '[name].js'; - }, - - /** - * The filename of non-entry chunks as relative path inside the output.path directory. - * - * See: https://webpack.js.org/configuration/output/#output-chunkfilename - */ - chunkFilename: '[id].[contenthash].chunk.js', - }; - } else { - config.output = { - filename: '[name].[contenthash].js', - - /** - * Set the public path, because we are running the website from another port (5000). - */ - publicPath: 'https://localhost:3002/', - - /* - * Fix a bug with webpack dev server. - * - * See: https://github.com/webpack-contrib/worker-loader/issues/174 - */ - globalObject: 'this', - }; - } - - config.plugins.push( - new plugins.HtmlWebpackPlugin({ - hash: true, - chunks: ['src'], - chunksSortMode: 'manual', - template: 'src/index.html', - }), - new plugins.HtmlWebpackPlugin({ - hash: true, - chunks: ['src'], - chunksSortMode: 'manual', - template: 'src/index.html', - filename: '404.html', - }), - ); - - config.plugins.push( - new plugins.ESLintPlugin({ - files: [ - './src/**/*.ts', - ], - }), - ); - } - - if (isProduction) { - config.optimization = { - minimizer: [ - new plugins.TerserPlugin({ - terserOptions: { - compress: true, - ecma: 5, - mangle: true, - output: { - comments: false, - }, - safari10: true, - }, - extractComments: true, - }), - - new plugins.CssMinimizerPlugin({}), - ], - }; - - config.performance = { - hints: false, - }; - } - - if (isTestCoverage) { - // Do not instrument tests. - config.module.rules.push({ - test: /\.ts[x]?$/, - use: [{ - loader: 'ts-loader', - }], - include: [/\.(e2e|spec)\.ts$/], - }); - - // Use instrument loader for all normal files. - config.module.rules.push({ - test: /\.ts[x]?$/, - use: [{ - loader: '@jsdevtools/coverage-istanbul-loader?esModules=true', - }, { - loader: 'ts-loader', - }], - exclude: [/\.(e2e|spec)\.ts$/], - }); - } else { - config.module.rules.push({ - test: /\.ts[x]?$/, - use: [{ - loader: 'ts-loader', - }], - }); - } - - if (isProduction) { - config.plugins.push(new plugins.GenerateSW({ - swDest: 'service-worker2.js', - - // Do not wait for activation - skipWaiting: true, - - // Cache until 5MB - maximumFileSizeToCacheInBytes: 5000000000, - })); - } - - if (isProduction) { - config.module.rules.push({ - test: /\.scss$/, - /* - * Extract the content from a bundle to a file. - * - * See: https://github.com/webpack-contrib/extract-text-webpack-plugin - */ - use: [ - plugins.MiniCssExtractPlugin.loader, - { - loader: 'css-loader', - }, { - loader: 'postcss-loader', - }, { - loader: 'sass-loader', - }], - }); - } else { - config.module.rules.push({ - test: /\.scss$/, - use: [{ - loader: 'style-loader', - }, { - loader: 'css-loader', - }, { - loader: 'postcss-loader', - }, { - loader: 'sass-loader', - options: { - sourceMap: true, - }, - }], - }); - } - - if (isAnalyzing) { - config.plugins.push(new plugins.BundleAnalyzerPlugin()); - } - - return config; -}; diff --git a/dev/create-cert.ps1 b/dev/create-cert.ps1 deleted file mode 100644 index 83ce8fb7..00000000 --- a/dev/create-cert.ps1 +++ /dev/null @@ -1,40 +0,0 @@ -# setup certificate properties including the commonName (DNSName) property for Chrome 58+ -$certificate = New-SelfSignedCertificate ` - -Subject localhost ` - -DnsName localhost ` - -KeyAlgorithm RSA ` - -KeyLength 2048 ` - -NotBefore (Get-Date) ` - -NotAfter (Get-Date).AddYears(10) ` - -CertStoreLocation "cert:CurrentUser\My" ` - -FriendlyName "Localhost Certificate for .NET Core" ` - -HashAlgorithm SHA256 ` - -KeyUsage DigitalSignature, KeyEncipherment, DataEncipherment ` - -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1") -$certificatePath = 'Cert:\CurrentUser\My\' + ($certificate.ThumbPrint) - -# create temporary certificate path -$tmpPath = "C:\tmp" -If(!(test-path $tmpPath)) -{ -New-Item -ItemType Directory -Force -Path $tmpPath -} - -# set certificate password here -$pfxPassword = ConvertTo-SecureString -String "password" -Force -AsPlainText -$pfxFilePath = "c:\tmp\squidex-dev.pfx" -$cerFilePath = "c:\tmp\squidex-dev.cer" - -# create pfx certificate -Export-PfxCertificate -Cert $certificatePath -FilePath $pfxFilePath -Password $pfxPassword -Export-Certificate -Cert $certificatePath -FilePath $cerFilePath - -# import the pfx certificate -Import-PfxCertificate -FilePath $pfxFilePath Cert:\LocalMachine\My -Password $pfxPassword -Exportable - -# trust the certificate by importing the pfx certificate into your trusted root -Import-Certificate -FilePath $cerFilePath -CertStoreLocation Cert:\CurrentUser\Root - -# optionally delete the physical certificates (don’t delete the pfx file as you need to copy this to your app directory) -# Remove-Item $pfxFilePath -#Remove-Item $cerFilePath \ No newline at end of file diff --git a/dev/install-cert.ps1 b/dev/install-cert.ps1 deleted file mode 100644 index d89f424a..00000000 --- a/dev/install-cert.ps1 +++ /dev/null @@ -1,7 +0,0 @@ -$pfxPassword = ConvertTo-SecureString -String "password" -Force -AsPlainText - -# import the pfx certificate -Import-PfxCertificate -FilePath ./squidex-dev.pfx Cert:\LocalMachine\My -Password $pfxPassword -Exportable - -# trust the certificate by importing the pfx certificate into your trusted root -Import-Certificate -FilePath ./squidex-dev.cer -CertStoreLocation Cert:\CurrentUser\Root \ No newline at end of file diff --git a/dev/squidex-dev.cer b/dev/squidex-dev.cer deleted file mode 100644 index 7d847a4c..00000000 Binary files a/dev/squidex-dev.cer and /dev/null differ diff --git a/dev/squidex-dev.crt b/dev/squidex-dev.crt deleted file mode 100644 index e05568a0..00000000 --- a/dev/squidex-dev.crt +++ /dev/null @@ -1,59 +0,0 @@ -Bag Attributes - localKeyID: 01 00 00 00 - friendlyName: te-c73b69d4-3341-4710-874d-e22bb2c15956 - Microsoft CSP Name: Microsoft Software Key Storage Provider -Key Attributes - X509v3 Key Usage: 90 ------BEGIN PRIVATE KEY----- -MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDh/y1tm+cbvrdH -DZHh8LMgWGmuJxfgImLu0S//GLkQ4MQGjQEBkLSjoQLsjQI2B8zNzqM07DfouBmj -nO+zu0argEPSyMxcEtQxB6aDCq+gHs+mamPs1d3JfgfP3yZjK7/wHhvF4pZaYhwI -HNYwaq2BtRc1KvFnd9qjqoE1WfmucqlBGnHxHq5MW0Qyg9b1PIFRRAXB/WXPbutl -ZkSBHOxq5bKnWeGryv8VuBeFEtQwhY14iscFxdb/tW7ieh8beW8TwQs3s6pFxou5 -TQXij5dCD52GC1QVemiAPsHh2hdOFE2DTJm01Mv32yGUsk1luF0V2hACpC2zb90c -Gj4VY5eFAgMBAAECggEBAJ6Wd6V0AqBYm7ozjoxzYO+wuzAnZLy2xJ/7kWe8TJnI -cCZ8qhkUF36/jRK7/LI3lQNTHvoTTUR0dCF5DkgcggH1NyLiH235FIf3a2SHiiid -lm+cNtTKWyF63DaFzCVJXR49spWRZJq2QB99RNyi73CWyFtZ8B8AXx/8lUEAC5La -t8Ftb/M5ieKQ9dAxyGL/U9L13ZmSO+J5Lc0ez9OwFpvNBNy353HKT0FL+qFuNV0K -g+t+x0DRudlL7uxeACPdnBlaEaT3ILWqCig6IBcILgNfGofuCC/hMLMcx8JUoQcg -atxife5w5Yyrxpsls1MLJEIhC02CKGsMwxXYPxaJjH0CgYEA9Rl0ivKaQSp/g43w -Frt84za70J68ZSrAP7pLHETEpEZnUxGX6O9glS8R5nZBZZsOr+7l6GcGK0QodyBy -CIpKppGt7JXSLnvq6FQeP4p5z6DTfKinfHhUCBffoQsDumMCQxsSLUmCpSSU5uXg -Pv69i4vcRxs3EXw/78gu8jZDpEsCgYEA7Aw7UrV0IHgbfMTjPOrgrxMO02uKwya4 -2xf9a8Qst2KUVdV32LgKr3wqVhnaFWJTOoKWWnvOvzRLvkrz0UlevqwXDiNy9Lp+ -5R41KGi6QR3ehwQvizrtEkHange/mtvMh/7BwXRF2u7xnyjWavVs1iFCt/CNg3UK -rMqbcz63MW8CgYASFvfgDXnPF3jj18UBmILmLjL8ecrD2LzptzE1++lbioqzudex -bIF/YUL79HxtKF2UJJi5Z2kwJk6qRC3GbZaG5rekf4ZMwf6beSHmZK0K4v7Y84Wx -DRx+oGxz8WEsD4SqOURFLWjEEYgf5pV/cMPCmeb/JIYS902sv+SfIdwqMwKBgQDT -LJI6CVnN3oYA1ofRLPQ7zJn77P8kXdUNNWYj7kpu+cNpEuP4P5ZXroaVpuUjMmbx -NnjalF6/UkLdCGMefjxD6uNpY69pYBs8UQ0PjLnsnZNCSS1bqykCp2W08YuqOC/A -Dts6fhIsro39bOR+pfhrjTAKLSv9Sk11joEJ1jbAAwKBgQCHSGKYa4ugobYx/0Bz -LYayNm4z0zf1V4aRlJZu6GyAoeBc1EEEXavmkCEJ7MEYoUDLp6ywuDnUybHzoa6c -I0spWppC8GGGDhrxtrBS35tfENclhdxoUVorOI/yn8iJZtc1DU3vPFXNKUEYqgew -gbGUoYGragfhbOfNGwkQ7C7jpA== ------END PRIVATE KEY----- -Bag Attributes - localKeyID: 01 00 00 00 - 1.3.6.1.4.1.311.17.3.71: 50 00 53 00 4C 00 4C 00 32 00 38 00 38 00 38 00 34 00 2E 00 62 00 32 00 62 00 2E 00 72 00 65 00 67 00 6E 00 2E 00 6E 00 65 00 74 00 00 00 - friendlyName: Localhost Certificate for .NET Core -subject=/CN=localhost -issuer=/CN=localhost ------BEGIN CERTIFICATE----- -MIIDDjCCAfagAwIBAgIQYuhrnnBGU7dGIwU5o+LBGDANBgkqhkiG9w0BAQsFADAU -MRIwEAYDVQQDDAlsb2NhbGhvc3QwHhcNMjAwNDE3MDc1MTA2WhcNMzAwNDE3MDc1 -MTA2WjAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDh/y1tm+cbvrdHDZHh8LMgWGmuJxfgImLu0S//GLkQ4MQGjQEB -kLSjoQLsjQI2B8zNzqM07DfouBmjnO+zu0argEPSyMxcEtQxB6aDCq+gHs+mamPs -1d3JfgfP3yZjK7/wHhvF4pZaYhwIHNYwaq2BtRc1KvFnd9qjqoE1WfmucqlBGnHx -Hq5MW0Qyg9b1PIFRRAXB/WXPbutlZkSBHOxq5bKnWeGryv8VuBeFEtQwhY14iscF -xdb/tW7ieh8beW8TwQs3s6pFxou5TQXij5dCD52GC1QVemiAPsHh2hdOFE2DTJm0 -1Mv32yGUsk1luF0V2hACpC2zb90cGj4VY5eFAgMBAAGjXDBaMA4GA1UdDwEB/wQE -AwIEsDAUBgNVHREEDTALgglsb2NhbGhvc3QwEwYDVR0lBAwwCgYIKwYBBQUHAwEw -HQYDVR0OBBYEFBucYmpXCQ7QicOAXh2INjUg09DBMA0GCSqGSIb3DQEBCwUAA4IB -AQDeKpRYhNYA2QrfFChrwVB2uOUx5M1JbcY0yQxMsRWtkIOQU6Jh5Y+yUucU8zjh -iv953d8HNRH6O/tL3hdTgckIImkMaceIcLrXC91hDq2Pg8+jaUku3qH13i4DLUm5 -Yyw/G66hTH/pCzitwdlABrDLDEiZiqM4ZKa5oyYRR0TOQA3qQ+sTJfZ7b5oxxI+c -43eF1/zN3XcHPLbJNxXzOhw/y2gSuaZWT2BuZjvpPR0swksCnhVuKkyzg3pNshLC -nQf9lpPGdfExhgRKGACbPEIhyW6uRdquYpwz6QSEp1OFiNFToRPKtCq5vO1wr8O+ -j4gj3gZ8Dhp/sbwCp+U8OLTv ------END CERTIFICATE----- diff --git a/dev/squidex-dev.pfx b/dev/squidex-dev.pfx deleted file mode 100644 index c8c1ef29..00000000 Binary files a/dev/squidex-dev.pfx and /dev/null differ diff --git a/src/index.html b/index.html similarity index 90% rename from src/index.html rename to index.html index ab87261d..0b816480 100644 --- a/src/index.html +++ b/index.html @@ -15,5 +15,6 @@
+